Aktivieren eines Blattes mit VBA in Excel
Wenn Sie die Methode Activate
auf ein Worksheet
Objekt anwenden, wird es zum aktiven Blatt,
das Blatt, das oben liegt.
Blatt auswählen
Um ein Blatt aktivieren zu können, müssen Sie es zunächst auswählen. Die Aktivierung eines Objekts ist einfach: Rufen Sie die Methode Activate
für das Objekt auf.
Sie müssen das Objekt angeben, das aktiviert werden soll, und haben dabei eine Reihe von Optionen, die hier erläutert werden.
Select
anstelle von Activate
verwenden und erhalten dasselbe Ergebnis:
das Blatt wird aktiviert.
Allerdings, Select
wurde zu einem anderen Zweck entwickelt, nämlich zur Unterstützung der Auswahl von ein oder mehrere Blätter
und aus diesem Grund Verwendung von Activate wird bevorzugt um ein Blatt zum aktiven Blatt zu machen.
Blatt nach Nummer aktivieren
Die Prozedur wird folgendermaßen aufgerufen:
ActiveWorkbook.Sheets(Index:=1).Activate
Mit dem obigen Code wird das erste Blatt in der angegebenen Arbeitsmappe aktiviert.
ActiveWorkbook
Methode zur Bereitstellung der übergeordneten Workbook
Objekt, dessen Worksheet
verwendet wird. In echtem Code ist die Verwendung explizit deklarierter und zugewiesener Objektvariablen vorzuziehen: Dim wbActiveWorkbook As Workbook
: Set wbActiveWorkbook = ActiveWorkbook
, sehr wahrscheinlich mit einem anderen Objektzuweisungsausdruck.
Das Objekt Worksheet
wird hier aus der Prozedur Workbook Sheets
bezogen.
With
Anweisungsblock plaziert. Die Verwendung der With-Syntax macht die Codestruktur übersichtlicher und hat Leistungsvorteile.
Der Aufruf dieser Methode ist gleichbedeutend mit der Auswahl der Registerkarte des Blattes.
Blatt nach Name aktivieren
Blatt mit Variablennamen aktivieren
Die gängigste Art, sich auf ein Blatt zu beziehen, ist sein Name, wie er auf der Registerkarte Blätter angezeigt wird:
ActiveWorkbook.Sheets(Index:="data2-17-14").Activate
Wenn Ihr Makro von anderen verwendet wird, sollten Sie eine angemessene Fehlerbehandlung einbauen, etwa so:
Dim ws As Worksheet
On Error Resume Next
Set ws = ActiveWorkbook.Sheets(Index:="data2-17-14")
On Error GoTo 0
If Not ws Is Nothing Then
ws.Activate
Else
End If
Blatt nach Codename aktivieren
Sie können auch direkt auf ein Blatt verweisen, indem Sie die Eigenschaft CodeName
verwenden.
Dies hat den Vorteil, dass Sie sicher sein können, dass das Blatt mit dem Namen existiert.
Dies ist jedoch nur möglich, wenn sich das Makro in der gleichen Arbeitsmappe wie das Blatt befindet, was häufig nicht der Fall ist.
Sheet1.Activate
CodeName
kann nur im Eigenschaftenfenster des Klassenmoduls des VBA-Editors geändert werden.
Sie kann nicht mit VBA-Code geändert werden.
Blatt basierend auf einem Zellwert aktivieren
Eine Anwendung, bei der ein Blatt auf der Grundlage eines Zellwerts aktiviert werden soll, besteht darin, dass Sie so viele Registerkarten haben, dass es schwierig wird, darin zu navigieren. Eine mögliche Lösung wäre ein Navigationsarbeitsblatt, das die Zielblätter auflistet und das Blatt zu öffnen, das der ausgewählten Zelle entspricht.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strWorksheet As String: strWorksheet = Target.Value
On Error Resume Next
Worksheets(Index:=strWorksheet).Activate
End Sub
- im Projekt-Explorer, doppelklicken Sie auf das entsprechende Sheet-Klassenmodul, um es zu öffnen, und
- Wählen Sie im linken Kombinationsfeld des Moduls (Allgemein) die Option Arbeitsblatt.
- Wenn es nicht automatisch als Standard angezeigt wird, kann der entsprechende Ereignishandler-Code aus dem rechten Kombinationsfeld ausgewählt werden.
Blatt und Zelle auswählen
Eine Zelle kann nur ausgewählt werden, wenn das Blatt, auf dem sie sich befindet, das aktive Blatt ist.
Im Allgemeinen gehen Sie daher der Auswahl voraus, indem Sie das Blatt Parent
aktivieren.
Anstelle von Application.Range("Sheet2!B2").Select
werden Sie zum Beispiel sicherer sein:
With Application.Range("Sheet2!B2")
.Parent.Activate
.Select
End With
Blatt in einer anderen Arbeitsmappe aktivieren
Um ein Blatt zu aktivieren, muss die Arbeitsmappe selbst nicht die aktive Arbeitsmappe sein. Sie müssen nur die Arbeitsmappe und das Arbeitsblatt identifizieren, das Sie aktivieren möchten, und dies dann tun:
Dim wb As Workbook
Set wb = Workbooks(Index:="data123.xlsx")
Dim ws As Worksheet
Set ws = wb.Sheets(Index:="Countries")
ws.Activate
Workbooks(Index:="data123.xlsx").Sheets(Index:="Countries").Activate
.
In allen anderen Fällen ist es besser, Variablen für die Arbeitsmappe
und/oder das Arbeitsblatt
einzuführen, wie oben beschrieben.
Blatt ohne Anzeige aktivieren
Sie brauchen ein Arbeitsblatt (oder eine Arbeitsmappe!) nicht aktiv zu machen, um damit arbeiten zu können.
Sie können eine Variable worksheet
deklarieren und sie mit einer Set
-Anweisung instanziieren,
wie es im obigen Abschnitt gemacht wurde.
Die Verwendung von Variablen auf diese Weise ist schneller und sicherer, als sich darauf zu verlassen, dass das Blatt aktiv ist.
Autor: Mark Uildriks Referenz: Worksheet.Activate() | Microsoft Learn