Hallo Mike,
der Befehl Stop stoppt nicht, weil etwas falsch ist, sondern weil er so tun soll, wie er heißt.
Wenn man mit der Maus über die Variable ZeileAktuell geht, dann wird einem zuweilen der Wert angezeigt. Alternativ kann man auch eine Überwachung festlegen, indem man mit der rechten Maustaste auf die Variable klickt und aus de Kontextmenü "Überwachung hinzufügen" wählt. Dann sieht man unter dem Codefenster im Überwachungsfenster den Wert der Variable.
Alternativ könnte man auch eine Massagebox ausgeben
Eine numerische Variable hat bei Dimensionierung in Excel den Wert 0.
Das kannst Du Dir z.B. mit einem Kurzprogramm anschauen:
Code:
Sub test()
Dim ZeileAktuell As Long
End Sub
Die Variable heißt Variable, weil man sie immer wieder mit anderen Werten befüllen kann. Man muss das aber auch tun, sonst behält sie ihren alten Wert - hier immer noch die Null vom Dimensionieren.
Bei Dir ändert sich also vor der ersten Verwendung der Variable am Wert nicht. Beim Ausführen von
.Cells(ZeileAktuell, 1).Value = Me.TextBox1.Value
steht immer noch 0 in der Variable.
Wenn Du den Code nach dem Stop mit F8 fortsetzt, wird er zeilenweise abgearbeitet und die jeweils als nächstes abzuarbeitende Zeile gelb markiert.
Wenn Du auf die gerade zitierte Zeile kommst und unten in die Überwachung schaust, steht als Wert immer noch 0. Eine Zeile 0 gibt es jedoch nicht. Jetzt müsstest Du Dir mal überlegen, in welche Zeile die Daten eigentlich sollen. Du hast oben geschrieben, ob auch
.Cells(1, 1).Value = Me.TextBox1.Value
geht. Du hättest an der Stelle jetzt also keine Variable, sondern einen festen Wert. Die folgende Frage hat schon wieder nichts mit VBA zu tun - ich nehme an, dass Dir die Bedeutung der beiden Einsen bei Cells klar ist: Willst Du die Daten immer in Zeile 1 eintragen? Wenn nicht, brauchst Du die Variable. Jetzt wäre nur die Frage, wo Du den Wert dafür herbekommst.
Bei Änderungen suchst Du Dir ja einen Wert aus der ComboBox1. Die Combobox1 wird der Reihe nach mit den Artikelnummern gefüllt, die Nummer steht also immer an einer bestimmten Stelle. Die Nummer der Stelle des gewählten Eintrages ist eine Eigenschaft der ComboBox. Das kannst Du z.B. so ausprobieren:
Code:
Private Sub ComboBox1_Change()
MsgBox Me.ComboBox1.ListIndex
End Sub
So, jetzt haben wir eigentlich alle Informationen, um die Zeile zu ermitteln:
ZeileAktuell=Me.ComboBox1.ListIndex
Etwas fehlt da noch - Du musst bestimmt noch einen "Korrekturwert" verrechnen - Die Nummer aus der ComboBox ist eventuell nicht die Zeilennummer des Artikels ... Und wenn Du einen Artikel neu anlegst, müsstest Du die letzte belegte Zeile +1 nehmen.