HOWTO · VBA
So aktivieren Sie ein Arbeitsblatt in Excel in VBA
Dieser Artikel hilft Ihnen zu verstehen, wie Sie ein Arbeitsblatt in Excel mit VBA aktivieren. Lernen Sie verschiedene Methoden kennen, darunter die Aktivierung nach Name, Index und Variablen. Mit praktischen Beispielen und klaren Erklärungen verbessert dieser Leitfaden Ihre Excel-Kenntnisse und optimiert Ihre Arbeitsabläufe.
Auf dieser Seite
Um ein Arbeitsblatt in Excel VBA zum aktuellen Blatt zu machen, rufen Sie seine Methode Activate auf. Beispielsweise wählt Worksheets("Sheet2").Activate das Arbeitsblatt mit dem Namen Sheet2 aus. Wenn Code nur Zellen lesen oder ändern muss, ist es oft klarer, direkt auf das Arbeitsblatt zu verweisen, ohne das aktive Blatt zu wechseln.
Arbeitsblatt nach Name aktivieren
Verwenden Sie den Namen der Arbeitsblatt-Registerkarte in der Auflistung Worksheets. Eine minimale VBA-Prozedur ist Sub ShowSummary(): Worksheets("Summary").Activate: End Sub. Ersetzen Sie Summary durch den genauen Registerkartennamen, einschließlich Leerzeichen. Der Name in dieser Auflistung ist der sichtbare Arbeitsblattname, nicht der VBA-Codename des Blatts. Der Membername ist Activate, und der Objekttyp für einen Blattverweis ist Worksheet.
Dieses kleine Python-Modell zeigt, wie ein Arbeitsblatt über seinen Registerkartennamen gesucht und ein Zellwert gelesen wird:
worksheets = {
"Summary": {"A1": "Ready"},
"Archive": {"A1": "Saved"},
}
selected = worksheets["Summary"]
print(selected["A1"])
Ready
Das Modell veranschaulicht die Auswahl nach Name; verwenden Sie in Excel VBA die obige Anweisung Worksheets("Summary").Activate. Die Arbeitsmappe muss ein Arbeitsblatt mit genau diesem Registerkartennamen enthalten.
Qualifizieren Sie die Auflistung mit einer Arbeitsmappe, wenn das Ziel möglicherweise nicht zu der Arbeitsmappe gehört, die das Makro enthält: Workbooks("Reports.xlsx").Worksheets("Summary").Activate. Die Arbeitsmappe muss geöffnet sein, und ihr Name muss mit der geöffneten Arbeitsmappe übereinstimmen. Das ist klarer, als sich darauf zu verlassen, welche Arbeitsmappe gerade aktiv ist.
Arbeitsblatt nach Index aktivieren
Ein Arbeitsblatt kann auch über seine Position ausgewählt werden: Worksheets(2).Activate. Der Index beginnt bei eins, sodass Worksheets(1) auf das erste Arbeitsblatt in der Worksheets-Auflistung dieser Arbeitsmappe verweist. Indizes sind nützlich, wenn Blätter der Reihe nach verarbeitet werden, sie können aber auf ein anderes Arbeitsblatt zeigen, nachdem Blätter eingefügt, gelöscht oder verschoben wurden. Verwenden Sie einen Namen, wenn die Identität des Blatts wichtiger ist als seine Position.
Mit ActiveSheet auf das aktive Blatt verweisen
ActiveSheet verweist auf das aktuell in Excel ausgewählte Blatt. Beispielsweise schreibt ActiveSheet.Range("A1").Value = "Ready" in die Zelle A1 dieses Blatts. Auch ein unqualifiziertes Range("A1") verwendet in einem Arbeitsblattkontext das aktive Arbeitsblatt und hängt daher von Excels aktueller Auswahl ab. Diese Abhängigkeit kann dazu führen, dass eine Prozedur das falsche Blatt beeinflusst, wenn eine andere Aktion das aktive Blatt wechselt. Bevorzugen Sie einen expliziten Arbeitsblattverweis, wenn das Ziel bekannt ist.
Das Aktivieren eines Blatts ändert Excels sichtbare Auswahl; es ist nicht allein zum Bearbeiten dieses Blatts erforderlich. Ein direkter Verweis wie Worksheets("Summary").Range("A1").Value = "Ready" benennt das Ziel explizit.
Eine Arbeitsblattvariable verwenden
Eine Worksheet-Variable behält einen Verweis auf ein bestimmtes Arbeitsblatt, sodass spätere Anweisungen ihn wiederverwenden können. Deklarieren Sie die Variable, weisen Sie das Objekt mit Set zu und rufen Sie dann Activate auf oder arbeiten Sie mit seinen Zellen. Die Anweisungen der Prozedur sind beispielsweise Dim ws As Worksheet, Set ws = ThisWorkbook.Worksheets("Summary") und ws.Activate. ThisWorkbook bezeichnet die Arbeitsmappe, die den VBA-Code enthält; verwenden Sie einen Verweis Workbooks("Reports.xlsx"), wenn das Ziel eine andere geöffnete Arbeitsmappe ist.
Nach der Zuweisung von ws kann eine Zelloperation ws.Range("A1").Value = "Ready" verwenden, ohne das Blatt zu aktivieren. So bleibt das Ziel explizit, selbst wenn der Benutzer das ausgewählte Blatt wechselt.
Arbeitsblätter in einer Schleife aktivieren
Wenn die Aufgabe wirklich erfordert, dass jedes Arbeitsblatt der Reihe nach sichtbar wird, durchlaufen Sie die Auflistung Worksheets. Eine VBA-Schleife kann als Dim ws As Worksheet geschrieben werden, gefolgt von For Each ws In ThisWorkbook.Worksheets, ws.Activate und Next ws. Platzieren Sie die Aktion, die das aktive Blatt benötigt, in der Schleife. Worksheets schließt Diagrammblätter aus; Sheets umfasst sowohl Arbeitsblätter als auch Diagrammblätter, verwenden Sie daher Ersteres für reine Arbeitsblattarbeit.
Für die meisten wiederholten Zelloperationen ist eine Aktivierung unnötig: Setzen Sie stattdessen eine direkte Operation wie ws.Range("A1").Value = "Ready" in die Schleife. Das vermeidet die Abhängigkeit von der aktiven Auswahl und macht jedes Ziel klar.
Häufige Aktivierungsfehler und Grenzen behandeln
Name oder Index müssen ein Arbeitsblatt in der angegebenen Arbeitsmappe identifizieren. Ein falsch geschriebener oder fehlender Name, eine geschlossene Arbeitsmappe oder ein Index außerhalb des Bereichs führt dazu, dass VBA einen Laufzeitfehler meldet. Prüfen Sie Arbeitsmappen- und Registerkartennamen und bestätigen Sie, dass das Ziel existiert, bevor Sie es aktivieren.
Ein ausgeblendetes Arbeitsblatt kann nicht aktiviert werden, solange es ausgeblendet bleibt. Machen Sie es zuerst sichtbar, zum Beispiel mit Worksheets("Summary").Visible = xlSheetVisible, und aktivieren Sie es dann, wenn der Benutzer es sehen muss. Bei einem sehr ausgeblendeten Arbeitsblatt muss die Sichtbarkeit ebenfalls aus VBA oder dem Visual Basic-Editor geändert werden, bevor es aktiviert werden kann.
Excel hat zu einem Zeitpunkt ein aktives Blatt in der aktiven Arbeitsmappe. Eine Arbeitsmappe kann viele Arbeitsblätter enthalten, aber das Aktivieren eines anderen ersetzt das aktuell aktive Blatt. Wenn das Ziel ist, mehrere Blätter zu aktualisieren, durchlaufen Sie Arbeitsblattverweise in einer Schleife und wirken Sie direkt auf jedes ein, anstatt zu versuchen, mehrere Blätter aktiv zu halten.