VBA Excel Daten aus einer Userform in neue Zeile des Excelsheets

frozencoward

Grünschnabel
Guten morgen,

ich soll für die Arbeit ein Makro erstellen, welches nach der Eingabe mehrerer Werte und nach klick auf einen Button die Werte in ein Excelsheet einfügt. Wenn es nur ein Datensatz ist, funktioniert das auch noch. Nur wenn dann ein weiterer eingegeben wird, wird der vorhergehende überschrieben.

Ich bin noch ein Neuling was VBA angeht (Habe die Aufgabe am Montag bekommen) und Google & Co. haben leider nicht das gewünschte Ergebnis geliefert.

So soll es in etwa aussehen:
excel1.png


Hier mein bisheriger Code:

Code:
Private Sub clickcount(ByRef j As Integer)
    Dim j As Integer
    If j < 1 Then j = 1
    j = j + 1
End Sub
Private Sub CommandButton2_Click()
    Call clickcount(j)
    Cells(j, 1) = TextBox1.Text
    Cells(j, 2) = TextBox2.Text
    Cells(j, 3) = TextBox3.Text
    Cells(j, 4) = TextBox4.Text
    Cells(j, 5) = TextBox5.Text
    Cells(j, 6) = TextBox6.Text
    Cells(j, 7) = TextBox7.Text
End Sub

Soweit funktioniert das ganze ja, jedoch eben nur für die erste Zeile. Ich habe bereits versucht das mit einer Variablen innerhalb des "Private Sub CommandButton2_Click()" zu lösen doch ich bin mir sicher, dass diese erst nach einem Klick auf den Button erzeugt wird und daher nach jedem Klick den gleichen Wert besitzt.
Auch Versuche mit einem Funktionsaufruf (Wie im Codebeispiel zu sehen) sind fehlgeschlagen. Mir fehlen einfach die Kenntnisse in VBA... =(

Hat jemand eine Idee, wie ich das lösen kann? Ist mein Ansatz völlig falsch?

Gruß
Jochen
 
Zuletzt bearbeitet:
Mit diesem bisschen Code kannst du die letzte Zeile in Excel ermitteln:

Visual Basic:
'letzte Zeile in Spalte A suchen
zeile = Cells(Rows.Count, 1).End(xlUp).Row

Wenn du das nun in deinen Code einbaust müsste es klappen.

Visual Basic:
Private Sub CommandButton2_Click()
'was macht du Funktion überhaupt?
'    Call clickcount(j)
    zeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
    Cells(zeile, 1) = TextBox1.Text
    Cells(zeile, 2) = TextBox2.Text
    Cells(zeile, 3) = TextBox3.Text
    Cells(zeile, 4) = TextBox4.Text
    Cells(zeile, 5) = TextBox5.Text
    Cells(zeile, 6) = TextBox6.Text
    Cells(zeile, 7) = TextBox7.Text
End Sub
 
danke =) funktioniert!

Die funktion sollte das hochzählen eines counters übernehmen, der dann die zeile angibt.. hat aber nicht funktioniert und dank deiner lösung ist die funktion auch überflüssig!
 

Neue Beiträge

Zurück