Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Erste Leere Zelle in Spalte finden

Erste Leere Zelle in Spalte finden
04.06.2020 11:58:07
ErikSnase
Hallo,
Ich habe in VBA zwei Textfelder in der man Werte eintragen kann und diese sollen dann mit einem CommandButton in die Excel- Tabelle übertragen werden.
Der Wert in dem ersten Textfeld soll in die erste freie Zelle der 3 . Spalte und der Wert in dem zweiten Textfeld soll in die erste freie Zelle der 4. Spalte.
Es besteht die Möglichkeit in beide Textfelder was reinzuschreiben, aber man kann auch nur in ein Textfeld was reinschreiben.
Wenn bspw. in Textfeld 1 ein Wert eingegeben wird aber in Textfeld 2 nicht und man mit dem CommandButton den Eintrag in die Excel- Tabelle übertragen will, soll in der ersten freien Zelle der 3. Spalte der eingegebene Wert und in der ersten freien Zelle der 4. Spalte eine 0 eingetragen werden (man hat ja nichts in Textfeld 2 einegeben).
Man muss das sicherlich mit einer Variable machen, leider habe ich keine Ahnung wie das geht. Daher benötige ich deine Hilfe.
Letzte Frage: Wie kann ich sagen, dass die definierte Variable erst bei bspw. Spalte 3 zeile 3 anfängt und bei Spalte 3 zelle 28 aufhört?
Vielen Dank
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 12:02:11
Regina
Hi,
so ganz werde ich auch deiner Beschreibung nicht schlau. Vielleicht lädst Du mal eine Beispieldatei hoch. Um die letzte Zeile mit Inhalt in einer Spalte zu ermitteln, kannst Du den folgenden Code nutzen (hier wird in Spalte 3 gesucht):
lng_letzte_zeile = Worksheets("Tabelle1").Cells(Rows.Count,3).End(xlUp).Row
Gruß Regina
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 12:21:52
ErikSnase
Hey, erstmal vielen Dank. Ich hab jetzt mal eine ganz einfache Datei erstellt.
https://www.herber.de/bbs/user/138012.xlsm
Also wenn man was in Textfeld 1 was reinschreibt und in Textfeld 2 nichts, soll in der Tabelle in "Anzahl Z." der eingetragene wert übernommen werden und in "Anzahl R." soll eine 0 eingteragen werden.
Und das verknüpft mit einer Variable der die erste frei Zelle in Spalte D bzw E sucht und den wert dann einträgt und dann eine Zelle weitergeht
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 12:34:00
Regina
... meinst Du so?
Private Sub CommandButton1_Click()
Dim lng_letzte_zeile As Long
With Worksheets("Tabelle1")
lng_letzte_zeile = .Cells(Rows.Count, 4).End(xlUp).Row
.Cells(lng_letzte_zeile + 1, 4) = Me.TextBox1
If Me.TextBox2 = "" Then
.Cells(lng_letzte_zeile + 1, 5) = 0
Else
.Cells(lng_letzte_zeile + 1, 5) = Me.TextBox2
End If
End With
End Sub
Wenn ja, bist Du mit den Spaltenangaben etwas verrutscht.
Gruß Regina
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 12:44:07
ErikSnase
Ja super,
vielen Dank für den Aufwand.
Kann ich mich vielleicht nochmal unter dem Beitrag melden, falls ich doch noch eine Frage habe? Weil du scheinst ahnung zu haben. Oder wie kann ich mich am besten bei dir melden?
Bin neu in diesem Forum :D
AW: Erste Leere Zelle in Spalte finden
04.06.2020 12:53:57
ErikSnase
Eine Frage habe ich direkt noch :D
Kann man irgendwie definieren, dass Zeile 16 die letzte Zeile ist die beschrieben wird, sprich ab Zeile 17 wird nichts mehr eingetragen?
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 13:57:47
Matthias
Hallo
Na da spring ich mal ein.
Option Explicit
Private Sub CommandButton1_Click()
Dim lng_letzte_zeile As Long
With Worksheets("Tabelle1")
lng_letzte_zeile = .Cells(.Rows.Count, 4).End(xlUp).Row
If Cells(lng_letzte_zeile, 4).Row > 15 Then
CommandButton1.Enabled = False: Exit Sub
End If
.Cells(lng_letzte_zeile + 1, 4) = Me.TextBox1
If Me.TextBox2 = "" Then
.Cells(lng_letzte_zeile + 1, 5) = 0
Else
.Cells(lng_letzte_zeile + 1, 5) = Me.TextBox2
End If
End With
End Sub
Gruß Matthias
Anzeige
hab einen Punkt vor Cells vergessen ...
04.06.2020 14:02:04
Matthias

Option Explicit
Private Sub CommandButton1_Click()
Dim lng_letzte_zeile As Long
With Worksheets("Tabelle1")
lng_letzte_zeile = .Cells(.Rows.Count, 4).End(xlUp).Row
 If .Cells(lng_letzte_zeile, 4).Row > 15 Then
CommandButton1.Enabled = False: Exit Sub
End If
.Cells(lng_letzte_zeile + 1, 4) = Me.TextBox1
If Me.TextBox2 = "" Then
.Cells(lng_letzte_zeile + 1, 5) = 0
Else
.Cells(lng_letzte_zeile + 1, 5) = Me.TextBox2
End If
End With
End Sub

Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 14:11:37
ErikSnase
Hey Matthias
wirklich vielen lieben Dank!
Eine andere Frage noch: Wenn die Excel- Tabelle leer ist außer in einer Zeile steht was (siehe Datei), dann fängt er ja nicht oben in der ersten freie Zeile an sondern, er fängt erst unter der beschriebenen Zeile an. Kann ich irgendwie definieren, dass wenn schon was in der Zeile steht, dass er dann die nächste freie Zelle auswählt und die beschriebene sozusagen überspringt?
Bsp.: die Zellen D4- D9 sind leer, nur in D10 steht was. Bei dem bisherigen Code ist es dann so, dass der dann in D11 anfängt die Tabelle zu befüllen. Geht es vielleicht so, dass er D4-D9 trotzdem befüllt D10 dann überspringt (weil da was drin steht) und dann bei D11 weitermacht?
https://www.herber.de/bbs/user/138013.xlsm
Ich hoffe das ist verständlich
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 14:37:09
Gerd
Moin
Private Sub CommandButton1_Click()
Dim efz As Long
With Worksheets("Tabelle1")
If IsEmpty(.Cells(4, 4)) Then
efz = 4
ElseIf IsEmpty(.Cells(5, 4)) Then
efz = 5
Else
efz = .Cells(4, 4).End(xlDown) + 1
End If
If efz > 16 Then
MsgBox "Kein Platz mehr!"
Else
.Cells(efz, 4) = Me.TextBox1
.Cells(efz, 5) = IIf(Me.TextBox2 = "", 0, CVar(Me.TextBox2))
End If
End With

Gruß Gerd
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 14:44:57
ErikSnase
Hey Gerd, auch dir danke ich!!
Es gibt nur nen Problem sobald ich zweimal eine Angabe mache.
Hier soll der fehler liegen:
efz = .Cells(4, 4).End(xlDown) + 1
Liebe Grüße
erik
AW: .Cells(4, 4).End(xlDown).Row + 1
04.06.2020 14:51:59
Gerd
Upps, die Row fehlte.
AW: Erste Leere Zelle in Spalte finden
04.06.2020 14:46:38
Matthias

Private Sub CommandButton1_Click()
Dim Loletzte As Long, RnG As Range
With Worksheets("Tabelle1")
For Each RnG In .Range("D4:D16")
If RnG = "" Then
.Cells(RnG.Row, 4) = Me.TextBox1
If Me.TextBox2 = "" Then
.Cells(RnG.Row, 5) = 0
Else
.Cells(RnG.Row, 5) = Me.TextBox2
End If
Exit For
End If
Next
End With
End Sub
Gruß Matthias
Anzeige
AW: Erste Leere Zelle in Spalte finden
04.06.2020 15:04:43
ErikSnase
danke matthias!!
Ich wünsche allen einen schönen Tag noch.
Wirklich vielen Dank für euren Aufwand!!!

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Erste Leere Zelle in einer Spalte mit VBA finden


Schritt-für-Schritt-Anleitung

Um die erste leere Zelle in einer bestimmten Spalte mit VBA zu finden und Werte aus Textfeldern einzutragen, kannst Du die folgende Schritt-für-Schritt-Anleitung befolgen:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projektfenster auf "VBAProject" und wähle "Einfügen" > "Modul".

  3. Kopiere den folgenden Beispielcode in das Modul:

    Private Sub CommandButton1_Click()
       Dim efz As Long
       With Worksheets("Tabelle1")
           If IsEmpty(.Cells(4, 4)) Then
               efz = 4
           ElseIf IsEmpty(.Cells(5, 4)) Then
               efz = 5
           Else
               efz = .Cells(4, 4).End(xlDown).Row + 1
           End If
           If efz > 16 Then
               MsgBox "Kein Platz mehr!"
           Else
               .Cells(efz, 4) = Me.TextBox1
               .Cells(efz, 5) = IIf(Me.TextBox2 = "", 0, CVar(Me.TextBox2))
           End If
       End With
    End Sub
  4. Passe die Zellreferenzen an: Stelle sicher, dass die Zeilen- und Spaltennummern zu Deiner Tabelle passen.

  5. Füge Textfelder und einen CommandButton in das Formular ein, um die Werte zu übertragen.


Häufige Fehler und Lösungen

  • Fehler beim Zugriff auf Zellen: Wenn Du eine Fehlermeldung erhältst, dass eine Zelle nicht gefunden werden kann, überprüfe die Referenz auf die Arbeitsblätter und die korrekten Zeilen- und Spaltennummern.

  • Überlauf bei der Zeilenfindung: Wenn Du versuchst, Werte in eine Zelle zu schreiben, die außerhalb der definierten Zeilen liegt, stelle sicher, dass Du die maximale Zeile in Deinem Code überprüfst, wie in der Lösung von Matthias gezeigt.


Alternative Methoden

Eine alternative Methode zur Suche nach der ersten leeren Zelle in einer Spalte ist die Verwendung einer Schleife:

Private Sub CommandButton1_Click()
    Dim RnG As Range
    With Worksheets("Tabelle1")
        For Each RnG In .Range("D4:D16")
            If RnG.Value = "" Then
                RnG.Value = Me.TextBox1
                RnG.Offset(0, 1).Value = IIf(Me.TextBox2.Value = "", 0, Me.TextBox2.Value)
                Exit For
            End If
        Next RnG
    End With
End Sub

Diese Methode durchläuft die Zellen in einem definierten Bereich und trägt die Daten in die erste leere Zelle ein.


Praktische Beispiele

Angenommen, Du hast ein Excel-Dokument mit einer Tabelle, in der Du täglich Daten eingibst. Mit dem obigen Code kannst Du sicherstellen, dass:

  • Der Wert aus TextBox1 in die erste leere Zelle der Spalte D eingefügt wird.
  • Der Wert aus TextBox2 in die nächste Zelle der Spalte E eingefügt wird, oder eine 0, wenn kein Wert eingegeben wurde.

Tipps für Profis

  • Verwende Option Explicit: Setze am Anfang Deines Codes Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um die Robustheit Deines Codes zu erhöhen. Dies kann durch On Error Resume Next und On Error GoTo geschehen.

  • Arbeite mit benannten Bereichen: Das Verwenden von benannten Bereichen in Excel kann die Lesbarkeit und Wartbarkeit Deines Codes erheblich verbessern.


FAQ: Häufige Fragen

1. Wie kann ich die erste leere Zeile in einer bestimmten Spalte finden? Du kannst die End(xlUp) Methode verwenden, um die letzte beschriebene Zelle zu finden und dann die nächste leere Zelle anzugeben.

2. Was passiert, wenn die Excel-Tabelle leer ist? Wenn die Tabelle leer ist, wird der Wert in der ersten Zelle der angegebenen Spalte eingefügt. Stelle sicher, dass Dein Code dies berücksichtigt.

3. Kann ich den Bereich beschränken, in dem die Daten eingetragen werden? Ja, Du kannst die Range-Referenz in Deinem Code anpassen, um nur bestimmte Zeilen zu überprüfen, wie im Beispiel gezeigt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige