Clever-Excel-Forum

Normale Version: Tabelle füllen über Formular
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!
Habe folgendes Problem:

ich habe wie hier beschrieben ein Formular erstellt zum Eintragen in eine Tabelle.

Hier der Code:


Code:
'Neuer Eintrag Schaltfläche Ereignisroutine
Private Sub CommandButton1_Click()
  Dim lZeile As Long
    'Wenn der Benutzer einen neuen Eintrag erzeugen möchte,
    'erstellen wir einen neuen Eintrag in der ListBox und markieren
    'diesen, damit der Benutzer die Daten eintragen kann
   
    lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die überschriftrn
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
        lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop
   
    'Nach Durchlauf dieser Schleife steht lZeile in der ersten leeren Zeile von Tabelle1
    'Neuen Eintrag in die Tabelle1 schreiben, Spalte ID muss gefüllt sein, damit
    'unsere Routinen die Zeile wiederfinden!
    Tabelle1.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
   
    'Und neuen Eintrag in die UserForm eintragen
    ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
   
    'Den neuen Eintrag markieren mit Hilfe des ListIndexes
    ListBox1.ListIndex = ListBox1.ListCount - 1
    'Durch das Click Ereignis der ListBox werden die Daten automatisch geladen
   
End Sub


Habe dann

Code:
    lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die überschriftrn
in lZeile= 4 umgeschrieben damit er immer in Zeile 4 anfängt.

Wie kann ich es aber machen dass alle neue Einträge in Zeile 4 als eine neue Zeile einfügt wird?
Bis jetzt setzt es immer die Einträge in die letzte Zeile.
Ich denke es hat damit was zu tun:


Code:
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die überschriftrn
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
        lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop
   
    'Nach Durchlauf dieser Schleife steht lZeile in der ersten leeren Zeile von Tabelle1
    'Neuen Eintrag in die Tabelle1 schreiben, Spalte ID muss gefüllt sein, damit
    'unsere Routinen die Zeile wiederfinden!
    Tabelle1.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)

Was muß ich wo umschreiben?
Perfekt wäre es wenn beim Anklicken des Formulars automatisch die Zeile 4 neu angelegt wird:


Code:
Rows("4:4").Select
   Selection.Insert Shift:=xlDown
   Selection.Interior.ColorIndex = xlNone
   Range("A4").Select
Hier noch die Tabelle
Code:
'Neuer Eintrag Schaltfläche Ereignisroutine
Private Sub CommandButton1_Click()
  Dim lZeile As Long
    'Wenn der Benutzer einen neuen Eintrag erzeugen möchte,
    'erstellen wir einen neuen Eintrag in der ListBox und markieren
    'diesen, damit der Benutzer die Daten eintragen kann
   
    lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die überschriftrn
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
        lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    Loop
   
    'Nach Durchlauf dieser Schleife steht lZeile in der ersten leeren Zeile von Tabelle1
    'Neuen Eintrag in die Tabelle1 schreiben, Spalte ID muss gefüllt sein, damit
    'unsere Routinen die Zeile wiederfinden!
    Tabelle1.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
   
    'Und neuen Eintrag in die UserForm eintragen
    ListBox1.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
   
    'Den neuen Eintrag markieren mit Hilfe des ListIndexes
    ListBox1.ListIndex = ListBox1.ListCount - 1
    'Durch das Click Ereignis der ListBox werden die Daten automatisch geladen
   
End Sub


Hat wirklich keiner einen Ansatz?
Kann ich diesirgendwie in den Code übernehmen?

Code:
Private Sub CommandButton21_Click()
Rows("4:4").Select
   Selection.Insert Shift:=xlDown
   Selection.Interior.ColorIndex = xlNone
   Range("A4").Select
End Sub
Hallöchen,

in Deinem code in der Do-Loop-Schleife wird nach einer leeren Zelle gesucht. Da Du immer die Zeile 4 nehmen willst, brauchst Du nicht suchen. Nimm also die Schleife raus und füge den Teil mit dem Einfügen ein Smile

Code:
Rows("4:4").Select
   Selection.Insert Shift:=xlDown

Vereinfacht geht das auch so:
Rows(4).Insert Shift:=xlDown