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

Letzte leere Zeile in einem Zeilenbereich ermittel

Letzte leere Zeile in einem Zeilenbereich ermittel
07.05.2019 15:28:15
Werner
Hallo,
ich möchte mit VBA einen Text in eine mehrspaltige Zeile übernehmen und zwar in die erste leere verfügbare Zeile. Die Zeilen sind nicht immer in allen Spalten belegt. Das heißt, dass die letzte Zeile auch leere Zellen haben kann.
Mit meinem Code ermittel ich bisher irgendwie nur "die" letzte leere Zelle in meiner Tabelle, ich brauche aber die letzte komplett leere Zeile in einem bestimmten Spaltenbereich (A:G).
Habe schon viel getüftelt, bekomme es aber nicht hin.
Hat jemand einen Tipp, wie ich meinen Code ändern bzw. ergänzen muss?

Private Sub Cmd_Speichern_click()
'Variablen definieren
Dim intZaehler1 As Integer
'der Variablen einen Ausgangswert übergeben
intZaehler1 = 4
'Letzte Zeile im Journal ermitteln
Do While Worksheets("Journal").Cells(intZaehler1, 1).Value  Empty
intZaehler1 = intZaehler1 + 1
Loop
'Werte ins Journal schreiben
With Tabelle1
.Cells(intZaehler1, 1).Value = Date
End With
End Sub

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ich hab's als einfache Formel
07.05.2019 16:17:22
WF
Hi,
kannst Du sicher auf VBA umfummeln:
{=MAX((A1:G99"")*ZEILE(X1:X99))+1}
Und Du meinst nicht die letzte leere Zeile (das wäre immer Nr. 99) sondern die erste leere Zeile nach der letzten benutzten.
WF
AW: ich hab's als einfache Formel
07.05.2019 18:26:07
Werner
Mir geht es um die erste leere Zeile nach der letzten benutzten Zeile.
Und wie ich meinen Code dafür ändern bzw. ergänzen muss.
da kommt ein VBA-Knecht
07.05.2019 18:34:32
WF
Und Du wiederholst genau das, was ich geschrieben habe.
WF
AW: da kommt ein VBA-Knecht
07.05.2019 21:07:47
Werner
Mit deiner Formel kann ich leider nix anfangen.
Vielleicht hat ja noch jemand eine andere Idee.
AW: evtl.so?
08.05.2019 08:28:30
hary
Moin
Dim intZaehler1 As Long
intZaehler1 = 4
With Worksheets("Journal")
Do While Application.CountA(.Cells(intZaehler1, 1).Resize(1, 7))  0
intZaehler1 = intZaehler1 + 1
Loop
.Cells(intZaehler1, 1) = Date
End With

gruss hary
Anzeige
AW: evtl.so?
08.05.2019 09:13:59
Werner
Hallo hary,
danke für deine Idee. Habe aber eben eine andere Lösung gefunden.
Da sich das Problem nur auf die Spalten D und E bezieht habe ich mit meiner Methode nun zuerst die Spalte D auf die erste leere Zelle geprüft. Danach prüfe ich dann in der entsprechenden Zeile die Spalte E auf leere Zelle. Das mache ich für 2 Zeilen, da das Problem in max. 2 Zeilen vorkommen kann.
Hier mein Code:
Private Sub Cmd_Buchen_click()
'Variablen definieren
Dim strBeleg As String
Dim intErsteLeer As Integer
'Variablen einen Wert übergeben
strBeleg = TextBox1
'Letzte Zeile im Journal ermitteln
intErsteLeer = Worksheets("Journal").Cells(Rows.Count, 4).End(xlUp).Row
intErsteLeer = intErsteLeer + 1
If Worksheets("Journal").Cells(intErsteLeer, 5) = "" Then
Else: intErsteLeer = intErsteLeer + 1
If Worksheets("Journal").Cells(intErsteLeer, 5) = "" Then
Else: intErsteLeer = intErsteLeer + 1
End If
End If
'Werte ins Journal schreiben
With Tabelle1
.Cells(intErsteLeer, 1).Value = Date
.Cells(intErsteLeer, 2).Value = strBeleg
End With
End Sub
Werde deinen Code evtl. auch noch ausprobieren!
Anzeige
AW: evtl.so?
08.05.2019 13:29:37
Daniel
Hi - geht auch n bischen einfacher:
intErsteLeer = Worksheets("Journal").UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
Dann ist es ganz egal, in welcher Spalte die letzte befüllte Zeile steckt.
Gruß
Daniel
AW: evtl.so?
08.05.2019 14:40:48
Werner
Hi Daniel,
diese Variante geht auch. Nur habe ich neben dem erwähnten Bereich weitere Daten die mir da in die Quere kommen.
Gruß
Werner
AW: evtl.so?
08.05.2019 14:50:00
Daniel
Ah ja hatte vergessen, dass du nur die Spalten A bis G betrachten möchtest. Dann so:
intErsteLeer = Worksheets("Journal").Columns("A:G").SpecialCells(xlCellTypeLastCell).Row + 1
Gruß
Daniel
Anzeige
AW: evtl.so?
08.05.2019 16:34:53
Werner
Hi Daniel,
habe den Code:
 Ah ja hatte vergessen, dass du nur die Spalten A bis G betrachten möchtest. Dann so:

intErsteLeer = Worksheets("Journal").Columns("A:G").SpecialCells(xlCellTypeLastCell).Row + 1
jetzt ausprobiert.
Er berücksichtigt trotzdem noch die Daten hinter Spalte G und schreibt die Daten unter die allerletzten Daten.
AW: evtl.so?
09.05.2019 09:27:39
Daniel
Stimmt, offensichtlich durchsucht SpecialCells immer den gesamten benutzten Bereich. Vielleicht kann einer der Experten hier mehr Hintergrundwissen liefern.
Es gibt allerdings doch noch eine einfachere Lösung für dein Problem, gefunden hier im Forumsarchiv:
https://www.herber.de/forum/archiv/604to608/606853_Letzte_Zeile_in_best_Bereich_ermitteln.html
In deinem Fall also
intErsteLeer = Worksheets("Journal").Range("A:G").Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row + 1

Anzeige
AW: evtl.so?
09.05.2019 11:37:54
Werner
Hey, das funktioniert super.
Vielen Dank!
einfach und super ?
09.05.2019 13:52:57
WF
Obiges VBA-Zeug benötigt 119 Zeichen.
die Formel
{=MAX((A1:G99"")*ZEILE(X1:X99))+1}
hat 36 Zeichen (also weniger, als ein Drittel)
WF
Schon, denn
09.05.2019 14:00:15
Daniel
Hallo WF,
...deine Formel in VBA "umzufummeln" klingt schon irgendwie komplizierter, als eine Zeile aus dem Forum zu kopieren. Bei Copy Paste dürfte der Nutzer kaum bemerken, welche Variante wie viele Stellen aufweist. Und seiner Anfrage nach benötigt er nun mal "VBA-Zeug"...
Zum Anderen hat er sich ja schon selber eine Lösung erarbeitet, die ganzen letzten Beiträge drehen sich nur um Vereinfachung. Und ja, eine Codezeile in VBA ist einfach und super.
Grüße
Daniel
Anzeige
AW: Letzte leere Zeile in einem Zeilenbereich ermittel
08.05.2019 15:17:00
Gerd
Hallo Werner!
With Worksheets("Journal")
.Cells(Application.Max(1 + .Cells(.Rows.Count, 4).End(xlUp).Row, .Cells(.Rows.Count, 5).End( _
xlUp).Row), 1).Resize(1, 2) = Array(Date, "Text")
End With

Gruß Gerd
AW: Letzte leere Zeile in einem Zeilenbereich ermittel
08.05.2019 16:31:09
Werner
Hallo Gerd,
zunächst muss ich mal meinen Ausgangstext korrigieren. Ist mir grad aufgefallen, dass der blöd geschrieben war.
Ich schreibe über eine UserForm Daten in eine Tabelle im Bereich A bis G. Dazu muss ich die erste komplett leere Zeile in diesem Bereich nach der letzten benutzten Zeile finden. Es sind nicht immer alle Zellen in einer Zeile belegt. Darum kann auch die letzte benutzte Zeile z.B. so aussehen:
A = leer B = Daten C = leer D = Daten E = Daten F = leer G = Daten
In den Spalten hinter G befinden sich weitere Daten.
Die Daten die in die leere Zeile sollen, sind Werte aus der Userform, die ich mittels Variablen in die Zeile schreiben will.
Das Datum in Zelle 1, 1 war nur ein kleiner Teil davon.
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige