Gefüllte Zellen markieren mit und ohne Lücken in Excel VBA
In diesem Tutorial zeige ich Euch mehrere Möglichkeiten Zellen mit Daten zu markieren. Ich zeige ich 3 Varianten. Einmal wie man alle benutzte Zellen in der Tabelle markieren kann. Im anderen Beispiel geht es um zusammenhängende Bereiche ohne Lücken. Und zum Schluss noch eine Version wo alle Zellen markiert werden auch wenn Lücken vorhanden sind.
Das Startvideo der VBA Tutorial Serie auf YouTube findet Ihr hier
Die Playlist meiner VBA Tutorial Serie auf YouTube findet Ihr hier
Achtung:
Benutzt zum Üben eine separate Tabelle für Testzwecke oder eine Kopie des Originals damit Euch keine Daten verloren gehen.
Video zu diesem Tutorial:
Beispielscript: Benutzte Zellen markieren in Excel VBA
Im nachfolgenden Script werden alle Zellen markiert die in der Excel Tabelle bisher benutzt wurden. Der Vorteil hierbei ist, dass man sich nicht auf eine bestimmte Zeile oder Spalte beziehen muss um dort die letzte gefüllte Zeile oder Spalte auslesen zu müssen. Der ausgewählte Bereich ist der größte von denen die ich hier auf der Seite präsentiere. Benutzt wird hier UsedRange. Hiermit lässt sich über UsedRange.Rows.Count die letzte (unterste) Zeile oder mit UsedRange.Columns.Count die letzte (rechteste) Spalte ausgeben. Über ActiveSheet greife ich auf das aktive Tabellenblatt zu.
Es erfolgt in allen 3 Scripten eine Ausgabe der Zeilennummer in E7 und der Spaltennummer in E9.
Die Variablen ZeilenEnde und SpaltenEnde kann man dann natürlich auch für den weiteren Programmcode nutzen.
Option Explicit Sub gesamtenBenutztenBereichMarkieren() Dim ZeilenEnde As Integer Dim SpaltenEnde As Integer ActiveSheet.UsedRange.Select ZeilenEnde = ActiveSheet.UsedRange.Rows.Count SpaltenEnde = ActiveSheet.UsedRange.Columns.Count Range("E7").Value = ZeilenEnde Range("E9").Value = SpaltenEnde End Sub
Beispielscript: Gefüllte Zellen ohne Lücken markieren in Excel VBA
In diesem Beispiel benutze ich Cells um von einer Anfangsposition aus zu starten. In diesem Fall Cells(1,1) das bedeutet dass wir in Zelle A1 beginnen.
Cells(ZeilenNummer, SpaltenNummer)
Von A1 aus benutzen wir eine Möglichkeit wie mit STRG + Pfeil nach unten. Mit End(xlDown) springen wir zur untersten Zeile die mit Daten gefüllt ist. Aber nur in einem durchgängig beschriebenen Zell – Bereich ohne Lücken. Vor jeder Lücke oder besser gesagt leeren Zelle wird gestoppt.
Das gleiche betrifft auch die Spalte. Ebenfalls von A1 aus also Cells(1,1) gehen wir mit End(xlToRight) (STRG + Pfeil nach rechts) an die letzte Spalte die Daten enthält. Auch hier wird vor der ersten leeren Zelle gestoppt.
In dem Beispiel werden keine Zellen markiert die in der ausgewählten Startzeile oder Spalte Lücken enthält. Nur zusammenhängende Bereiche werden markiert.
Option Explicit Sub letzteZeileSpalteOhneLuecke() Dim ZeilenEnde As Integer Dim SpaltenEnde As Integer ZeilenEnde = Cells(1, 1).End(xlDown).Row SpaltenEnde = Cells(1, 1).End(xlToRight).Column Range("E7").Value = ZeilenEnde Range("E9").Value = SpaltenEnde Range("A1", Cells(ZeilenEnde, SpaltenEnde)).Select End Sub
Beispielscript: Gefüllte Zellen mit Lücken markieren in Excel VBA
Das letzte Beispielscript ist im Grunde genauso aufgebaut wie das letzte. Allerdings gehen wir hier nicht mit Cells(1,1) von Zelle A1 aus sondern vom Ende. Mit Rows.Count erhalten wir die letzte Zelle die in der Tabelle überhaupt vorhanden ist. Von dort aus gehen wir dann mit End(xlUp) genau wie mit STRG + Pfeiltaste nach oben, zur ersten Zelle die Daten enthält. Dabei spielt es keine Rolle ob darüber Lücken (leere Zellen) vorhanden sind.
Das gleiche mit der Spalte. Mit Collumns.Count erhalten wir die letzte Spalte die in der Tabelle vorhanden ist. Von hieraus gehen wir dann mit End(xlToLeft) zur ersten beschriebenen Zelle. Also zu der Zelle die am weitesten rechts ist und gefüllt ist.
Wichtig ist aber natürlich dass sich das immer auf die Zeile oder Spalte bezieht die Ihr als Ausgangsbasis benutzt habt. In diesem Fall ist es Spalte 1 und Zeile 1. Ihr müsst also schauen wo Eure Daten sind die Ihr benötigt und die entsprechende Zeile oder Spalte nutzen.
Option Explicit Sub letzteZeileSpalteMitLuecke() Dim ZeilenEnde As Integer Dim SpaltenEnde As Integer ZeilenEnde = Cells(Rows.Count, 1).End(xlUp).Row SpaltenEnde = Cells(1, Columns.Count).End(xlToLeft).Column Range("E7").Value = ZeilenEnde Range("E9").Value = SpaltenEnde Range("A1", Cells(ZeilenEnde, SpaltenEnde)).Select End Sub
Das könnte Dich auch interessieren
- Auf Zellen zugreifen mit Range in Excel VBA
- Eine eigene Funktion erstellen ganz einfach (Excel)
- Entwicklertools anzeigen / Makro / VBA Visual Basic (Microsoft Word)
- If Then Else in Excel VBA
- Offset - Verschieben der aktuellen Position in VBA
- Option Explicit benutzen oder nicht in Excel VBA
- Prozedur in Arbeitsmappe, Tabelle oder Modul?
- Select Case Verzweigung in Excel VBA
- Tabellennamen in Tabelle eintragen in Excel VBA
- Verschachtelte For Next Schleife in Excel VBA
- Zellen von anderer Tabellen kopieren mit Excel VBA