Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabelle füllen über Formular
#1
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?
Antworten Top
#2
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
Antworten Top
#3
Hier noch die Tabelle


Angehängte Dateien
.xls   2016_06_04_ToDoListe Arbeiten_test.xls (Größe: 106 KB / Downloads: 15)
Antworten Top
#4
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
Antworten Top
#5
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste