Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1740to1744
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Dialog Problem

VBA Dialog Problem
27.02.2020 22:54:39
Kai-Uwe
Habe leider ein Problem. Mein Dialog gibt seine Werte nur über "Abbrechen" und "Weiter", aber nicht über "Ok" zurück an das aufrufende Modulmakro. Was läuft da falsch?
Die Variablen deklariere ich im aufrufenden Modul-Makro als Public, also öffentlich. Wenn ich sie dann nicht noch einmal als lokale Variablen (Dim) im Formular-Makro (Dialog) deklariere, kommt die Meldung von "Mehrdeutiger Name". Deklariere ich sie nochmal lokal, kommt diese Meldung nicht, aber das oben genannte Problem. ?
Modul-Makro
Option Explicit
Public strZahl1 As String
Public strZahl2 As String
Public strZahl3 As String
Public strZahl4 As String
Public strZahl5 As String
Public strZahl6 As String
Public strSuperZahl As String
Public strDatum As String
Public strSpiel77 As String
Public strSuper6 As String
Sub Durchführungen()
frm_UserForm1.Show vbModal
' für den Testeintrag im vorgesehenen Tabellenblatt
ActiveWorkbook.Tabelle2.Range("A1").Selcet
ActiveCell.FormulaR1C1 = strZahl1
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strZahl2
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strZahl3
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strZahl4
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strZahl5
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strZahl6
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strSuperZahl
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strDatum
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strSpiel77
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.FormulaR1C1 = strSuper6
ActiveCell.Offset(1, 0).Range("A1").Select
Ende:
End Sub
Hier folgt das Dialog-Makro
frm_UserForm1-Makro:
Option Explicit
Dim strZahl1 As String
Dim strZahl2 As String
Dim strZahl3 As String
Dim strZahl4 As String
Dim strZahl5 As String
Dim strZahl6 As String
Dim strSuperZahl As String
Dim strDatum As String
Dim strSpiel77 As String
Dim strSuper6 As String
Private Sub cmd_NaechsteZiehung_Click()
Unload Me
End Sub
Private Sub cmd_Abbrechen_Click()
Unload Me
End Sub
Private Sub cmd_Ok_Click()
VariablenZuordnen
' Unload Me
End Sub
Sub VariablenZuordnen()
strZahl1 = TextBox1
strZahl2 = TextBox2
strZahl3 = TextBox3
strZahl4 = TextBox4
strZahl5 = TextBox5
strZahl6 = TextBox6
strSuperZahl = TextBox7
strDatum = Date
strSpiel77 = TextBox9
strSuper6 = TextBox10
Hier hört es auf. Die Daten werden nicht an das aufrufende Makro zurückgegeben
End Sub
' wird beim Öffnen der Userfrom ausgeführt

Private Sub UserForm_Initialize()
' Flexible Überschrift
Me.Caption = "6 aus 49 Zahlen eingeben von " & Environ("username") & " vom " & Date
' setzt den Cursor ins Textfeld 1
Me.TextBox1.SetFocus
' legt die Aktivierungsfolge bei Tastenbenutzung "Tabulator" fest
Me.TextBox1.TabIndex = 1
Me.TextBox2.TabIndex = 2
Me.TextBox3.TabIndex = 3
Me.TextBox4.TabIndex = 4
Me.TextBox5.TabIndex = 5
Me.TextBox6.TabIndex = 6
Me.TextBox7.TabIndex = 7
Me.TextBox8.TabIndex = 8
Me.TextBox9.TabIndex = 9
Me.TextBox10.TabIndex = 10
Me.cmd_Ok.TabIndex = 11
Me.cmd_Abbrechen.TabIndex = 12
Me.cmd_NaechsteZiehung.TabIndex = 13
End Sub
Mehr steht nicht drin. Es ging schon. Aber dann habe ich etwas dazugeschrieben, was nicht gut  _
war. Habe die nachträglich eingetragenen Sachen es wieder gelöscht. Doch trotzdem geht es nicht mehr. ?



		

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
und warum zeigst du keine Bsp-Datei?! owT
28.02.2020 03:57:14
Oberschlumpf
AW: VBA Dialog Problem
28.02.2020 04:52:30
Kai-Uwe
Das Programm steht doch im Text. Weiß nicht, warum es nur als Text angezeigt wird. Unten gibt es einen Teil, den hat es als Makro angezeigt.
Bin heute übrigens das erste mal in diesem Forum und weiß nicht warum das beim reinkopieren nicht anders funktioniert hat.
Mein Programm steht im Text.
Fängt mit der Option Explizit oben an und hört unten mit der

Private Sub UserForm_Initialize End Sub
auf
Dazwischen liegt irgendwo das Problem.
AW: VBA Dialog Problem
28.02.2020 06:07:27
Oberschlumpf
ok, dann erkläre ich, wieso ich deine Bsp-Datei per Upload inklusive Bsp-Daten und deines Codes noch immer vermisse
Ich kenne deine Datei nicht.
Ich weiß nicht, wie sie aufgebaut ist, welche Zeilen/Spalten genutzt werden, usw
Ich mag nicht den ganzen geschriebenen Code von dir durchlesen müssen, um dann doch nur raten zu können, warum es bei dir nicht funktioniert.
Und ich mag schon gar nicht eine Datei "nachbauen" müssen, weil ich nicht weiß...ach den Grund kennste ja schon
MIT deiner Bsp-Datei per Upload kann es zwar sein, dass ich trotzdem nicht helfen kann, aber ich hätte schon mal eine Grundlage, mit der ich anfangen würde, zu versuchen, dir zu helfen.
Natürlich musst du keine Bsp-Datei per Upload zeigen. Es kommt auch oft vor, dass andere deinen Code lesen und den Fhler finden.
Aber so gut bin ich nicht (will ich auch nicht sein)
Anzeige
AW: VBA Dialog Problem
28.02.2020 08:20:25
EtoPHG
Hallo Kai,
Da liegt vieles im Argen! Es müsste schon Fehlermeldungen beim Kompilieren des Codes geben, weil es z.B. keine Methode .Selcet gibt!
Das .Select ist in VBA zu 99.9% ebenfalls überflüssig und kontraproduktiv.
Dein Code könnte diese .Selects komplett weglassen, z.B. nach diesem Schema (achte auf die .Punktnotation):
With Tabelle2
.Cells(1, 1) = strZahl1
.Cells(2, 1) = strZahl2
.Cells(3, 1) = strZahl3
'    ....etc.
End With

Warum willst du einmal die Variablen Public und die gleichen nochmals Lokal definieren. Das ist kontraproduktiv. In der Userform werden nur die lokalen berührt und nicht die Public definierten. Setze den Cursor im VB-Editor auf Public und drück die Hilfe Taste (F1), um Dich schlauer über Definitionen zu machen. Oder lies mal: Bitte kein Select und Wie und wo fügt man ein Makro bzw. Code ein
Lass die lokalen Definitionen weg.
Gruess Hansueli
Anzeige
AW: VBA Dialog Problem
28.02.2020 11:08:15
Kai-Uwe
Hallo Hansueli
Das ist genau das Problem. Anfangs hatte ich die Variablen nur im aufrufenden Makro als Public, also generell über die gesamte Anwendung gültig bleibend geschrieben. Die Variablen sollen für ein späteres Auswertungsprogramm erhalten bleiben. Deshalb Public.
Zu Anfang funktionierte das Programm auch so. Danach schrieb ich eine Kontrollroutine rein. Und damit fingen die Probleme an. Es ging nichts mehr. Habe also die Kontrollroutine wieder entfernt und trotzdem
geht es nicht mehr. Die Variablen, welche im Dialog eingegeben werden kommen nicht mehr im den Dialog aufrufenden Programm an. Deshalb habe ich es noch einmal mit einer zusätzlichen Deklarierung der Variablen im Dialogmakro versucht. Ohne Erfolg.
Und genau das ist das Problem. Wenn ich die lokale Deklarierung weglasse sind die Variablen trotz anfänglicher Public-Deklarierung wie nicht mehr vorhanden. Verlieren also ihren Inhalt vom Dialogmakro zum aufrufenden Makro Sub Durchführungen().
Warum?
Der Punkt mit Select ist gut. Lasse ich das Select weg
also statt
ActiveCell.FormulaR1C1 = strZahl3
ActiveCell.Offset(1, 0).Range("A1").Select
schreibe ich nur
ActiveCell.FormulaR1C1 = strZahl3
ActiveCell.Offset(1, 0).Range ("A1")
kommt folgende Fehlermeldung
Microsoft Visual Basic for Applications
Fehler beim Kompilieren
Unzulässige Verwendung einer Eigenschaft
verwende ich
ActiveCell.FormulaR1C1 = strZahl3
ActiveCell.Offset(1, 0)
kommt
Microsoft Visual Basic for Applications
Fehler beim Kompilieren
Syntaxfehler
oder
Microsoft Visual Basic for Applications
Fehler beim Kompilieren
Erwartet =
Also schreib ich .Select und Range("A1") lieber dazu. Dann gibt es diese Fehlermeldung nicht.
Deshalb also Select, auch wenn ich es lieber einsparen würde.
Und mit der absoluten Zellangabe arbeite ich nicht, da ich den Wert in verschiedenen Tabellenblättern mit sich verändernden Bedingungen brauch und die Zelle, in die eingetragen wird, damit nie die gleiche bleibt
LGvonKai
Anzeige
AW: VBA Dialog Problem
28.02.2020 13:58:40
EtoPHG
Hallo Kai,
Zitat:
Kommt ...Syntaxfehler oder Erwartet =
Dann ist doch klar, dass du nicht den VBA-Regeln/Syntax folgst. Ich hab nirgends gesagt, dass du die .Select Methode einfach weglassen kannst und mit den anderen Codeteilen so weiterwursteln kannst, sondern hab Dir einen konkreten Codevorschlag gemacht.
Und mit der absoluten Zellangabe arbeite ich nicht, da ich den Wert in verschiedenen Tabellenblättern mit sich verändernden Bedingungen brauch und die Zelle, in die eingetragen wird, damit nie die gleiche bleibt
Das ist eine völlig inakzeptable Art zu Programmieren. Das ist überhaupt kein Grund darum auf Selects zu verzichten! Offensichtlich ignorierst du auch den Inhalt der Links.
Bei dieser Einstellung, kann ich Dir nicht weiterhelfen!
Gruess Hansueli
Anzeige
AW: VBA Dialog Problem
28.02.2020 20:59:30
Kai-Uwe
Hallo Hansueli
Gut wenn man hier alles wissen muss und nichts erklärt bekommt, sondern einfach alles fressen soll, was min hingeworfen bekommt, dann bin ich hier falsch. Ein Besserwisserclub und ein Mach's oder lass es Verein brauche ich nicht. Fang ich halt nochmal an.
Trotzdem einen netten Dank für die Mühe und Nichts
GoodBye

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige