PDA

Vollständige Version anzeigen : Debugger Fehler den ich nicht finde


DiMiMhm
06.07.2014, 00:52
Hi ich habe eine komplexe VBA Userform

nun bekomme ich immer ein " Debugger" und ich weiss echt nicht wieso

die Form habe ich angehängt

Über " Start" den Buttob " Eingabe/ändern der Serie" klicken
dann auf Serie 1

Startnr. Auswählen und schon bekomme ich den Debugger

ich will nur die Userform04 aufrufen ich verzweifle komplett.

Kann mal einer darüber schauen und mir sagen was für ein Fehler ich da habe

Danke im Vorraus

GMG-CC
06.07.2014, 01:19
Moin NoName,

Die Variable Zeile ist leer, sie hat keinen Wert. Daher kommt der Fehler.
Ich empfehle dir, stets als erste Zeile eines Moduls Option Explicit einzusetzen, dann musst du Variablen deklarieren.

OK, hier hätte das auch nicht den Rieseneffekt gehabt, wenn du Zeile zwar deklarierst aber nicht initialisierst. aber das bekommst du dann schneller raus.

DiMiMhm
06.07.2014, 08:20
Monin Günther

welche variable Zelle meinst du
ich bin noch zu neu in VBA das ich das jetzt verstanden habe

das ist ja auch kein Modul sondern eine Userform im VBA
damit auch wieder großes "?" Explicit<--- keine Ahnung auch davon

Grüße Mike

Sorry das ich keinen Namen angegeben habe
aber 4 std suchen und es war 2 Uhr morgens

hary
06.07.2014, 08:48
Moin
edit: geloescht
gruss hary

Crazy Tom
06.07.2014, 08:57
Hallo Mike

schreib mal ins Modul der Userform4 ganz oben

Option Explicit

dann klicke im Editor einmal in die Userform4
und drücke F5

dann zeigts dir an, dass eine Variable nicht definiert ist

MfG Tom

Nepumuk
06.07.2014, 09:43
Hallo,

im UserForm03 gibst du der nicht deklarierten Variablen "zeile" einen Wert:

Private Sub ComboBox2_Change()
If ComboBox2.ListIndex + 2 > 0 Then
zeile = ComboBox2.ListIndex + 3
End If

End Sub
Und im UserForm04 willst du den Wert der Variablen wieder verwenden:

Private Sub CommandButton1_Click()
' übergabe an die Tabelle

Sheets("Serie 1-3").Cells(zeile, 6) = TxtSpielp1.Value
Sheets("Serie 1-3").Cells(zeile, 7) = Txtgew1.Value
Sheets("Serie 1-3").Cells(zeile, 8) = Txtverl1.Value
Sheets("Serie 1-3").Cells(zeile, 9) = Txtgegner1.Value
Unload Me

UserForm05.Show

End Sub
Die Variablen haben aber nichts miteinander zu tun. Sprich die Variable "zeile" im UserForm04 hat den Wert Empty und das löst den Fehler aus.

Nimm mal an die UserForms sind zwei Frauen und deine Variable "zeile" ist deren Handtasche. Wenn nun Frau UserForm03 eine Packung Taschentücher in ihre Handtasche steckt, dann müsste deiner Logik nach im selben Moment in der Handtasche bei Frau UserForm04 die identische Packung Taschentücher auftauchen.

Jetzt klarer?

Du hast folgende Optionen:

1. Du deklarierst die Variable als öffentliche Variable in einem Standardmodul (die, meiner Meinung nach, schlechteste Variante bezüglich der Übersicht in einem Projekt).

2. Du benutzt die Tag-Eigenschaft des UserForm04 um den Wert zu übergeben (Tag ist aber ein String und du musst den Wert 2mal konvertieren).

3. Du deklarierst im UserForm04 eine Eigenschaft welcher du die Variable übergibst (so würde ich das machen).


Du solltest aber dringend eine Prüfung einbauen ob in der Combobox von UserForm03 überhaupt etwas ausgewählt ist, denn ansonsten läufst du in den nächsten Fehler.

DiMiMhm
06.07.2014, 18:52
Hi Nepumuk

Vielen Dank ich bin Betrebsblind

ich mach das mal so wie du es in Punkt 3 beschreibst

Gruß Mike

DiMiMhm
07.07.2014, 15:21
ich habs jetzt doch so gemacht wie im Punkt 1

Global zeile As Integer im Modul 1 als "Überschrift"

weil ich die Variable "Zeile" doch oft brauche über viele Forms

nochmal vielen DANK

woher sollte man wissen das jeder " private Sub" in jeder Userform als einzel zu sehen ist und Variablen nicht auf alles zählt innerhalb einer Tabelle.

Typisch MS ;-)

Nepumuk
07.07.2014, 16:31
Hallo,

das ist in allen Programmiersprachen so und keine Erfindung von MS.

GMG-CC
07.07.2014, 17:19
woher sollte man wissen das jeder " private Sub" in jeder Userform als einzel zu sehen ist und Variablen nicht auf alles zählt innerhalb einer Tabelle.

Rechts von Esc findest du F1, die hat den meisten der Helfer hier in sehr vielen Fällen geholfen.