Excel VBA: letzte Zeile bei Leerzeilen ermitteln

Allan Sche Sar

Lt. Commander
Registriert
Jan. 2004
Beiträge
1.891
Hallo ihr,

ich stehe vermutlich gerade etwas auf dem Schlauch.
Ich möchte von dem grün markierten Bereich (siehe Anhang) meine letzte Zeile ermitteln - also die letzte beschriebene.
Wenn ich mit
Code:
Dim WB_Source As Object
Set WB_Source = ThisWorkbook.Worksheets("Test")
WB_Source.Cells(Rows.Count, 1).End(xlUp).Row

ran gehe, bekomme ich immer das Ende des ersten Tabellenbereichs.

Leider kann ich die Lücken nicht schliessen, da die Tabellen für den Ausdruck getrennt bleiben sollen.
Die Überschrift der grün markierten Tabelle ist jedoch immer die gleich. Diese kann ich problemlos finden, jedoch komme ich dann nicht weiter.
 

Anhänge

  • Muster.xlsx
    8,4 KB · Aufrufe: 251
WB_Source.UsedRange.SpecialCells(xlCellTypeLastCell)
Vorausgesetzt der UsedRange ist halbwegs brauchbar angelegt.

Hmm naja da eher nicht. Wie entstehen diese Tabellen? Kannst du die nicht als Tabelle formatieren, dann lassen die sich extrem einfach in Excel suchen und haben dann auch eine Body und Head Eigenschaft. Und sie lassen sich einfach als Range definieren.
 
Die UsedRange bezieht sich doch auf den gesamten beschriebenen Bereich im WorkSheet. Damit würde ich dann bei einem UsedRange.Select alles von oben links nach unten rechts selektieren - also auch die Tabelle oben drüber und drunter.
 
Markier den Bereich mit deiner Tabelle > Als Tabelle formatieren > Tabelle hat Überschriften.

Code:
Sub listy()
Dim myTable As Excel.ListObject
Dim mysheet As Worksheet
Set mysheet = ActiveSheet
For Each myTable In mysheet.ListObjects
    MsgBox myTable.DataBodyRange.Address
Next myTable
End Sub

Damit arbeitet es sich viel einfacher. Du kannst der Tabelle auch einen festen Namen geben der sich dann aus der Collection aufrufen lässt.
 
WB_Source.Cells(Rows.Count, 1).End(xlUp).Row
An die Stelle muss eine sinnvolle Spalte - außer eben der 1.

UsedRange habe ich jüngst verworfen. Und es ist ärmlich, dass XL so viel kann und immer an solchem Alltagsaufgaben scheitert, Abwärtskopatibilität hin oder her.

CN8
 
Zurück
Oben