Supportnet / Forum / Tabellenkalkulation
VBA Anfänger braucht Hilfe....
Frage
Hallo Leute,
ich arbeite gerade an meiner ersten VBA Tabelle.
Leider komme ich gerade nicht so richtig weiter und würde mich riesig über nette Hilfe freuen.
Ich habe ein Userform erstellt, mit mehren Textfeldern. Dieses Auswahlbox öffnet sich durch betätigen eins Buttons in Tabelle1. Hier soll der User nun einige Daten eintippen. Schließt er dieses ab mit dem "OK" sollen die Daten in der Tabelle2 in z.b. A1,B1,C1,D1,E1 und F1 geschrieben werden.
Soweit noch kein Problem...wenn nun aber die Eingabemaske ein zweites Mal geöffnet wird, werden die Daten überschrieben....
Dieses soll nicht passieren, ich möchte, das der immer in die nächste freie Zeile schreibt also beim zweiten mal in A2,B2,C2,D2,E2 und F2.. und dann immer weiter.
Kann man das Lösen?
Bisher habe ich beim drücken des OK buttons:
tabelle2.Range("A1").value = Userform.TextBox1.value
tabelle2.Range("B1").value = Userform.TexBox2.value usw.
userform.hide
end sub
Vielen Dank für die Hilfe
Gruß
Tobi
Antwort 1 von JoeKe
Halo Tobi,
mit:
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1) _
.End(xlUp).Row, Rows.Count)
kannst du die letzte belegte Zeile (hier für Spalte A) ermitteln.
Wenn alle Werte in die selbe Zeile eingetragen werden sollen, sieht der Code so aus:
tabelle2.cells(loLetzte+1, 1).value = Userform.TextBox1.value
Hierbei gibt loLetzte+1 (mindestens 2) die Zeile und die 1 (=A) die Spalte vor.
Wenn die Werte ab Zeile 1 eingetragen werden müssen, sieht der Code so aus:
Dim loLetzte As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1) _
.End(xlUp).Row, Rows.Count)
If tabelle2.Cells(1, 1) = "" Then
tabelle2.Cells(1, 1).value = Userform.TextBox1.Value
tabelle2.Cells(l1, 2).Value = Userform.TextBox2.Value
Else
tabelle2.Cells(loLetzte + 1, 1).value = Userform.TextBox1.Value
tabelle2.Cells(loLetzte + 1, 2).value = Userform.TextBox2.Value
Gruß
JöKe
mit:
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1) _
.End(xlUp).Row, Rows.Count)
kannst du die letzte belegte Zeile (hier für Spalte A) ermitteln.
Wenn alle Werte in die selbe Zeile eingetragen werden sollen, sieht der Code so aus:
tabelle2.cells(loLetzte+1, 1).value = Userform.TextBox1.value
Hierbei gibt loLetzte+1 (mindestens 2) die Zeile und die 1 (=A) die Spalte vor.
Wenn die Werte ab Zeile 1 eingetragen werden müssen, sieht der Code so aus:
Dim loLetzte As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1) _
.End(xlUp).Row, Rows.Count)
If tabelle2.Cells(1, 1) = "" Then
tabelle2.Cells(1, 1).value = Userform.TextBox1.Value
tabelle2.Cells(l1, 2).Value = Userform.TextBox2.Value
Else
tabelle2.Cells(loLetzte + 1, 1).value = Userform.TextBox1.Value
tabelle2.Cells(loLetzte + 1, 2).value = Userform.TextBox2.Value
Gruß
JöKe
Antwort 2 von tobi80
Guten Morgen,
erstmal vielen Dank für die Hilfe....JöKe habe deinen Code mal ein bisschen für meine Bedürfnisse angepasst.
Doch leider knallt das irgendwie noch.
Hat jemand einen idee warum?
Vielen Dank für die Hilfe...
Gruß
Tobi
erstmal vielen Dank für die Hilfe....JöKe habe deinen Code mal ein bisschen für meine Bedürfnisse angepasst.
Doch leider knallt das irgendwie noch.
Hat jemand einen idee warum?
Private Sub CommandButton1_Click()
Dim loLetzte As Long
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If Tabelle2.Cells(1, 1) = "" Then
Tabelle2.Cells(1, 1).Value = Eingabeform.ComboBox1.Value
Tabelle2.Cells(l1, 2).Value = Eingabeform.ComboBox2.Value
Tabelle2.Cells(l1, 3).Value = Eingabeform.ComboBox3.Value
Tabelle2.Cells(l1, 4).Value = Eingabeform.TextBox2.Value
Tabelle2.Cells(l1, 5).Value = Eingabeform.TextBox3.Value
Tabelle2.Cells(l1, 6).Value = Eingabeform.TextBox4.Value
Else
Tabelle2.Cells(loLetzte + 1, 1).Value = Eingabeform.ComboBox1.Value
Tabelle2.Cells(loLetzte + 1, 2).Value = Eingabeform.ComboBox2.Value
Tabelle2.Cells(loLetzte + 1, 3).Value = Eingabefrom.ComboBox3.Value
Tabelle2.Cells(loLetzte + 1, 4).Value = Eingabeform.TextBox2.Value
Tabelle2.Cells(loLetzte + 1, 5).Value = Eingabeform.TextBox3.Value
Tabelle2.Cells(loLetzte + 1, 6).Value = Eingabeform.TextBox4.Value
End If
Eingabeform.Hide
End Sub
Vielen Dank für die Hilfe...
Gruß
Tobi
Antwort 3 von JoeKe
Moin Tobi,
das Problem werden die Zeilen sein in die die Eintragungen erfolgen.
ComboBox1 soll, wenn A1 leer ist, in A1, die anderen Werte dann aber erst in Zeile 11. Oder ist dies ein Schreibfehler?
Wenn A1 nicht leer ist werden aber alle Werte in die erste freie Zeile der Spalte A eingetragen.
Wenn das mit den unterschiedlichen Zeilen so beabsichtigt ist, muss du zweimal die letzte Zeile ermitteln. Einmal so wie beschrieben für Spalte A und einmal für eine der anderen Spalten.
Dim loLetzte_SpalteA As Long, loLetzte_SpalteB As Long
loLetzte_SpalteA = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
loLetzte_SpalteB = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
Gruß
JöKe
das Problem werden die Zeilen sein in die die Eintragungen erfolgen.
ComboBox1 soll, wenn A1 leer ist, in A1, die anderen Werte dann aber erst in Zeile 11. Oder ist dies ein Schreibfehler?
Wenn A1 nicht leer ist werden aber alle Werte in die erste freie Zeile der Spalte A eingetragen.
Wenn das mit den unterschiedlichen Zeilen so beabsichtigt ist, muss du zweimal die letzte Zeile ermitteln. Einmal so wie beschrieben für Spalte A und einmal für eine der anderen Spalten.
Dim loLetzte_SpalteA As Long, loLetzte_SpalteB As Long
loLetzte_SpalteA = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
loLetzte_SpalteB = IIf(IsEmpty(Cells(Rows.Count, 2)), Cells(Rows.Count, 2).End(xlUp).Row, Rows.Count)
Gruß
JöKe
Antwort 4 von tobi80
Hi JöKe,
danke für deine Hilfe... du hattest recht, es war ein Tipfehler, den ich übersehen habe und beim kopieren mitgezogen hab...
Jetzt funktioniert alles...
Vielen Dank,
Gruß
Tobi
danke für deine Hilfe... du hattest recht, es war ein Tipfehler, den ich übersehen habe und beim kopieren mitgezogen hab...
Jetzt funktioniert alles...
Vielen Dank,
Gruß
Tobi

