ich habe die Datentabellen bzw. "intelligenten Tabellen" (wie ist der richtige Ausdruck?) in Verbindung mit VBA Programmierung lieben gelernt, weil der Zellbezug nicht mehr so relevant ist und User auch mal eine Spalte hinzufügen können, ohne dass der Code gleich crasht.
Nun habe ich eine sehr lange Datentabelle und möchte bestimmte Zeilen daraus löschen. Zum Beispiel: Lösche alle Zeilen, auf die zutrifft: Spalte "Source" ist ungleich "Planned on assumptions"
Diese Seite (https://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables) ist mir bekannt, hilft mir aber nur bedingt weiter. Denn wenn ich die Tabelle Zeile für Zeile durchlaufe und einzeln lösche, dauert es ewig. Schöner wäre, ich könnte zunächst alle Zeilen der DataBodyRange initialisieren und dann in einem Schritt löschen. Im Grunde ist mein Ziel dieses SQL-Statement:
DELETE FROM tbl_DB
WHERE Source='Planned on assumptions';
Ich habe aktuell ein Makro geschrieben, das immerhin zusammenhängende Bereiche erkennt und dann auf diese Weise viele Zeilen auf einmal löscht:
tbl_DB.DataBodyRange.Rows(iFirstRowDelete & ":" & iLastRowDelete).Delete
Aber wenn der User die Tabelle wild sortiert, bleibt von den zusammenhängenden Bereichen nicht mehr viel übrig und man ist performanceseitig schnell wieder an der Stelle, wo jede Zeile einzeln gelöscht wird.
Wahrscheinlich stehe ich nur auf dem Schlauch und kenne nicht den Syntax, um einen Bereich innerhalb des Databodys mit VBA anzusprechen. Ganze Zeilen im Excelblatt zu löschen kommt leider nicht infrage. Dann hätte ich den Zellbezug zum Excelblatt ja wieder, den ich gerade vermeiden will.
Danke im Voraus. Ich bin sicher, ihr könnt mir helfen!
VG Philipp