Letzte Zelle in Spalte mit Text oder Formel per VBA ermitteln

gehtnetgibtsnet

Cadet 4th Year
Registriert
März 2019
Beiträge
103
Hallo Forumsmitglieder.

Ich habe festgestellt, dass in vielen meiner Tabellen nach dem logischen Ende noch viele leere Zeilen stehen, die in den Bereich fallen, welche ich mit ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row ermittle.

Nun suche ich einen Weg, die überflüssigen Zeilen zu löschen. Anhaltspunkt für mich wäre die Spalte 3. In der letzten logischen Zeile der Tabelle steht entweder ein Text oder eine Formel.

Frage: wie kann ich die letzte Zeile in Spalte 3 (ohne Loop) ermitteln, die entweder einen Text oder eine Formel hat? Dann könnte ich per VBA die nachfolgenden Zeilen bis zum tatsächlichen Ende löschen.
 
Range.End-Eigenschaft

Gibt ein Range-Objekt zurück, das die Zelle am Ende des Bereichs repräsentiert, die den Quellbereich enthält. Äquivalent zum Drücken von ENDE-TASTE+NACH-OBEN-TASTE, ENDE-TASTE+NACH-UNTEN-TASTE, ENDE-TASTE+NACH-LINKS-TASTE oder ENDE-TASTE+NACH-RECHTS-TASTE.

Dabei lassen sich die Werte von XlDirection benutzen: xlDown, xlToLeft, xlToRight und xlUp
Code:
Range("c1").End(xlDown).Select
 
Hallo Andreas,

leider funktioniert Dein Code nicht: es gibt in der Tabelle zwecks optischer Lesbarkeit auch Leerzeilen.
 
Diese Bedingung hast Du ja leider im Startpost nicht erwähnt ...

Wenn es einzelne Leerzeilen sind, dann kannst Du ja prüfen, ob zwei Zeilen tiefer wieder ein Wert steht und wenn ja, den Code mit dieser Zelle noch einmal ausführen. Das so lange, bis twei Zeilen tiefer kein Wert mehr steht. Das wäre also mit Loop ...

Alternativ kannst Du von einer Zeile aus, in der garantiert keine Werte mehr stehen, in die Gegenrichtung mit xlUp arbeiten.
 
Hallo Andreas,

die erste Zelle in Spalte 3, in der garantiert kein Wert mehr steht, ist in der durch
MR = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row + 1 ermittelten Zeile

Mit Cells(MR, 3).End(xlUp).Select wird tatsächlich die letzte benutzte Zelle in Spalte 3 getroffen, egal ob mit Text oder Formel belegt.

Mein Problem ist gelöst; vielen Dank für die Unterstützung.
 
Zurück
Oben