Alle Zeilen einer Tabelle in VBA dynamisch auswählen?
Hallo zusammen,
ich suche nach einer Zeile Code, mit der ich dynamisch die gesamte Tabelle auswählen kann.
Bislang habe ich verwendet:
Range("A1:U76").Select
Nun kann die Tabelle aber auch mehr oder weniger als 76 Zeilen haben (wenn sich die monatlichen Werte ändern).
Daher hatte ich an folgendes gedacht:
Range("A1:U" & ???).Select
(Zum inhaltlichen Verständnis: Danach werden Teilergebnisse hinzugefügt, und damit das funktioniert, ist die Tabelle "nicht intelligent/formatiert", also kein Listobject. Dafür habe ich allerdings schon funktionierenden Code.)
Die Frage ist jetzt, was ist ???.
Meine bisherigen Experimente waren leider nicht erfolgreich, deswegen frage ich nach einer Universallösung nach. Gerne neu aufschreiben.
Falls dies noch wichtig ist: Aufgrund der Datenlage sind nur die Spalten A-E vollständig mit Inhalten gefüllt, die weiteren Zellen weisen aufgrund der Datenlage Leerzellen ("null") auf.
Danke schon mal im Voraus.
3 Antworten
Range("A1").CurrentRegion.Select
Edit:
Zuende lesen hilft, wenn Currentregion die restlichen Spalten wegen Leerzellen nicht erfasst könntest du auch einen kleinen Umweg machen:
Range(Cells(1,1),Cells(Range(A1).currentregion.rows.count,21)).select
Mit .currentregion werden alle zusammenhängenden Zellen angesprochen. Der Umweg wäre erforderlich wenn eine leere Spalte im gewünschten Bereich liegt.
Der Umweg enthält ein .currentregion.rows.count welches die Anzahl der Zeilen des zusammenhängenden Bereiches ausgibt und über Cells(Zeile,Spalte) kannst du eine Zelle über numerische Werte ansprechen. Das ist auch praktisch wenn du mit einer Schleife zeilenweise die Tabelle durchgehen möchtest.
Range(Cells(zeileAnfang, spalteAnfang), Cells(zeileEnde, spalteEnde)).Select
Das sollte funktionieren. Für die Variablen zeile und spalte sind Zahlen einzusetzen.
mit "Cells" kannst du die ganze Tabelle selektieren.
Cells.clearcontents würde z.B. in allen Zellen alle Werte löschen
Range("A1").CurrentRegion.Select hat tatsächlich schon mein Problem gelöst. Vielen Dank!