VBA-Blätter – Der ultimative Leitfaden

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on Dezember 5, 2022

Dies ist der ultimative Leitfaden für die Arbeit mit Excel-Blättern bzw. -Arbeitsblättern in VBA.

Am Ende dieses Leitfadens haben wir einen Spickzettel mit gängigen Befehlen für die Arbeit mit Arbeitsblättern erstellt.

Sheets im Vergleich zu Worksheets

Es gibt zwei Möglichkeiten, auf Blättern mit VBA zu verweisen. Die erste Möglichkeit ist die Verwendung des Sheets-Objekts:

Sheets("Tabelle1").Activate

Die andere ist mit dem Worksheets-Objekt:

Worksheets("Tabelle1").Activate

in 99 % der Fälle sind diese beiden Objekte identisch. Wenn Sie im Internet nach VBA-Codebeispielen gesucht haben, haben Sie wahrscheinlich beide Objekte schon einmal gesehen.

Hier ist der Unterschied: Die Sheets-Sammlung enthält Worksheets UND Chart Sheets.

sheets vs worksheets beispiel

Verwenden Sie also Sheets, wenn Sie normale Arbeitsblätter UND Diagrammblätter einschließen wollen. Verwenden Sie Worksheets, wenn Sie Diagrammblätter ausschließen wollen. Im weiteren Verlauf dieses Leitfadens werden wir Sheets und Worksheets synonym verwenden.

Auf Blätter verweisen

Es gibt verschiedene Möglichkeiten, auf Arbeitsblätter zu verweisen:

  • ActiveSheet
  • Blattregisterkartenname
  • Blattindexnummer
  • Blatt-Codename

ActiveSheet

Das ActiveSheet ist das Blatt, das gerade aktiv ist. Mit anderen Worten, wenn Sie Ihren Code anhalten und auf Excel schauen, ist es das Blatt, das sichtbar ist. Im folgenden Codebeispiel wird eine Meldungsbox mit dem Namen vom ActiveSheet angezeigt.

MsgBox ActiveSheet.Name

Blattname

Wahrscheinlich sind Sie mit de Verweisen auf Blättern durch ihren Registerkartennamen am meisten vertraut:

vba auf Registerkartennamen verweisen

Sheets("Registerkartenname").Activate

Dies ist der Name des Blattes, der für Excel-Benutzer sichtbar ist. Geben Sie ihn in das Sheets-Objekt als von Anführungszeichen umgebenen Text ein.

Blattindexnummer

Die Blattindexnummer gibt die Position des Blattes in der Arbeitsmappe an. 1 ist das erste Blatt. 2 ist das zweite Blatt usw.:

vba auf arbeitsblattposition verweisen

Sheets(1).Activate

Blattindexnummer – Letztes Blatt in der Arbeitsmappe

Um auf das letzte Blatt in der Arbeitsmappe zu verweisen, verwenden Sie Sheets.Count zum  Ermitteln der letzten Indexnummer und Aktivieren des entsprechenden Blattes:

Sheets(Sheets.Count).Activate

Blatt-Codename

Der Blatt-Codename ist sein Objektname in VBA:

vba blattname im code

CodeName.Activate

Auf Blätter in anderen Arbeitsmappen verweisen

Es ist auch einfach, auf Arbeitsblätter in anderen Arbeitsmappen zu verweisen. Dazu müssen Sie das Workbooks-Objekt verwenden:

Workbooks("VBA_Beispiele.xlsm").Worksheets("Tabelle1").Activate

Wichtig: Die Arbeitsmappe muss geöffnet sein, bevor Sie auf ihre Blätter verweisen können.

Blatt aktivieren oder auswählen (Activate vs. Select)

In einem anderen Artikel besprechen wir alles über das Aktivieren und Auswählen von Blättern. Die Kurzversion lautet wie folgt:

Wenn Sie ein Blatt aktivieren, wird es zum ActiveSheet. Dies ist das Blatt, das Sie sehen, wenn Sie Ihr Excel-Programm betrachten. Es kann jeweils nur ein Blatt aktiviert werden.

Ein Blatt aktivieren

Sheets("Tabelle1").Activate

Wenn Sie ein Blatt auswählen, wird es auch zum ActiveSheet. Sie können jedoch auch mehrere Blätter auf einmal auswählen. Wenn mehrere Blätter gleichzeitig ausgewählt sind, ist das „oberste“ Blatt das ActiveSheet. Sie können jedoch das ActiveSheet innerhalb der ausgewählten Blätter umschalten.

Ein Blatt auswählen

Worksheets("Tabelle1").Select

Mehrere Blätter auswählen

Verwenden Sie ein Array, um mehrere Blätter auf einmal auszuwählen:

Worksheets(Array("Tabelle2", "Tabelle3")).Select

Arbeitsblattvariable

Wenn Sie ein Arbeitsblatt einer Objektvariablen zuweisen, können Sie dieses über seinen Variablennamen referenzieren. Das spart eine Menge Tipparbeit und macht Ihren Code einfacher zu lesen. Es gibt noch viele andere Gründe, warum Sie Variablen verwenden sollten.

So deklarieren Sie eine Arbeitsblattvariable:

Dim ws as Worksheet

Weisen Sie ein Arbeitsblatt einer Variablen zu:

Set ws = Worksheets("Tabelle1")

Jetzt können Sie auf die Arbeitsblattvariable in Ihrem Code verweisen:

ws.Activate

Alle Arbeitsblätter in der Arbeitsmappe durchlaufen

Arbeitsblattvariablen sind nützlich, wenn Sie alle Arbeitsblätter in einer Arbeitsmappe in einer Schleife durchlaufen wollen. Am einfachsten geht das folgendermaßen:

Dim ws as Worksheet

For Each ws in Worksheets
  MsgBox ws.name
Next ws

Dieser Code durchläuft alle Arbeitsblätter in der Arbeitsmappe in einer Schleife und zeigt jeden Arbeitsblattnamen in einer Meldungsbox an. Das Durchlaufen aller Arbeitsblätter in einer Arbeitsmappe ist sehr nützlich, wenn mehrere Arbeitsblätter gleichzeitig gesperrt/entsperrt oder ein- und ausgeblendet werden sollen.

Arbeitsblattschutz

Schützen der Arbeitsmappe

vba arbeitsmappe schuetzen

Der Arbeitsmappenschutz sperrt die Arbeitsmappe vor strukturellen Änderungen wie dem Hinzufügen, Löschen, Verschieben oder Ausblenden von Arbeitsblättern.

Sie können den Arbeitsmappenschutz mit VBA aktivieren:

ActiveWorkbook.Protect Password:="Kennwort"

oder den Arbeitsmappenschutz deaktivieren:

ActiveWorkbook.UnProtect Password:="Kennwort"

Hinweis: Sie können den Schutz auch ohne Kennwort aktivieren/deaktivieren, indem Sie das Argument Kennwort weglassen:

ActiveWorkbook.Protect

Arbeitsblattschutz

Der Schutz auf Arbeitsblattebene verhindert Änderungen an einzelnen Arbeitsblättern.

Arbeitsblatt schützen

Worksheets("Tabelle1").Protect "Kennwort"

Arbeitsblattschutz aufheben

Worksheets("Tabelle1").Unprotect "Kennwort"

Es gibt eine Reihe von Optionen für den Schutz von Arbeitsblättern (Formatierungsänderungen zulassen, dem Benutzer das Einfügen von Zeilen erlauben usw.). Wir empfehlen die Verwendung des Makro-Aufzeichners, um die gewünschten Einstellungen aufzuzeichnen.

Wir besprechen den Schutz von Arbeitsblättern hier im Detail.

Die Arbeitsblatteigenschaft Visible

Sie wissen vielleicht schon, dass Arbeitsblätter ausgeblendet werden können:

vba arbeitsblatt ausblenden

Es gibt eigentlich drei Einstellungen für die Sichtbarkeit von Arbeitsblättern: Visible, Hidden und VeryHidden. Ausgeblendete Blätter können von jedem normalen Excel-Benutzer eingeblendet werden, indem er mit der rechten Maustaste in den Arbeitsblattregisterkartenbereich klickt (siehe oben). Sehr ausgeblendete Blätter (VeryHidden) können nur mit dem VBA-Code oder im VBA-Editor eingeblendet werden. Verwenden Sie die folgenden Codebeispiele, um Arbeitsblätter ein- und auszublenden:

Arbeitsblatt wieder einblenden

Worksheets("Tabelle1").Visible = xlSheetVisible

Arbeitsblatt ausblenden

Worksheets("Tabelle1").visible = xlSheetHidden

Arbeitsblatt sehr ausblenden

Worksheets("Tabelle1").Visible = xlSheetVeryHidden

Ereignisse auf Arbeitsblattebene

Ereignisse sind Auslöser, die die Ausführung von „Ereignisprozeduren“ bewirken können. Sie können beispielsweise dafür sorgen, dass ein Code jedes Mal ausgeführt wird, wenn eine Zelle auf einem Arbeitsblatt geändert wird oder ein Arbeitsblatt aktiviert wird.

Arbeitsblattereignisprozeduren müssen in einem Arbeitsblattmodul platziert werden:

vba arbeitsblatt erreignisprozedur

Es gibt zahlreiche Arbeitsblattereignisse. Um eine vollständige Liste zu sehen, gehen Sie zu einem Arbeitsblattmodul und wählen Sie „Arbeitsblatt“ aus der ersten Dropdown-Liste. Wählen Sie dann eine Ereignisprozedur aus der zweiten Dropdown-Liste, um sie in das Modul einzufügen.

vba arbeitsblatt erreignisliste

 

Arbeitsblattaktivierungsereignis

Arbeitsblattaktivierungsereignisse werden jedes Mal ausgeführt, wenn das Arbeitsblatt geöffnet wird.

Private Sub Worksheet_Activate()
  Range("A1").Select
End Sub

Dieser Code wählt bei jedem Öffnen des Arbeitsblatts die Zelle A1 aus (und setzt den Ansichtsbereich auf die obere linke Seite des Arbeitsblatts zurück).

Arbeitsblattänderungsereignis

Arbeitsblattänderungsereignisse werden immer dann ausgeführt, wenn ein Zellenwert auf dem Arbeitsblatt geändert wird. Lesen Sie unser Tutorial über Arbeitsblattänderungsereignisse für weitere Informationen.

Arbeitsblatt Spickzettel

Nachfolgend finden Sie ein Spickzettel mit allgemeinen Codebeispielen für die Arbeit mit Arbeitsblättern in VBA.

VBA Worksheets Cheatsheet

VBA worksheets Cheatsheet
DescriptionCode Example
Referencing and Activating Sheets
Tab NameSheets("Input").Activate
VBA Code NameSheet1.Activate
Index PositionSheets(1).Activate
Select Sheet
Select SheetSheets("Input").Select
Set to VariableDim ws as Worksheet
Set ws = ActiveSheet
Name / RenameActiveSheet.Name = "NewName"
Next SheetActiveSheet.Next.Activate
Loop Through all SheetsDim ws as Worksheet

For each ws in Worksheets
Msgbox ws.name
Next ws
Loop Through Selected SheetsDim ws As Worksheet

For Each ws In ActiveWindow.SelectedSheets
MsgBox ws.Name
Next ws
Get ActiveSheetMsgBox ActiveSheet.Name
Add SheetSheets.Add
Add Sheet and NameSheets.Add.Name = "NewSheet"
Add Sheet With Name From CellSheets.Add.Name = range("a3").value
Add Sheet After AnotherSheets.Add After:=Sheets("Input")
Add Sheet After and NameSheets.Add(After:=Sheets("Input")).Name = "NewSheet"
Add Sheet Before and NameSheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
Add Sheet to End of WorkbookSheets.Add After:=Sheets(Sheets.Count)
Add Sheet to Beginning of WorkbookSheets.Add(Before:=Sheets(1)).Name = "FirstSheet"
Add Sheet to VariableDim ws As Worksheet
Set ws = Sheets.Add
Copy Worksheets
Move Sheet to End of WorkbookSheets("Sheet1").Move After:=Sheets(Sheets.Count)
To New WorkbookSheets("Sheet1").Copy
Selected Sheets To New WorkbookActiveWindow.SelectedSheets.Copy
Before Another SheetSheets("Sheet1").Copy Before:=Sheets("Sheet2")
Before First SheetSheets("Sheet1").Copy Before:=Sheets(1)
After Last SheetSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Copy and NameSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "LastSheet"
Copy and Name From Cell ValueSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Range("A1").Value
To Another WorkbookSheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)
Hide / Unhide Sheets
Hide SheetSheets("Sheet1").visible = False
or
Sheets("Sheet1").visible = xlSheetHidden
Unhide SheetSheets("Sheet1").Visible = True
or
Sheets("Sheet1").Visible = xlSheetVisible
Very Hide SheetSheets(“Sheet1”).Visible = xlSheetVeryHidden
Delete or Clear Sheets
Delete SheetSheets("Sheet1").Delete
Delete Sheet (Error Handling)On Error Resume Next
Sheets("Sheet1").Delete
On Error GoTo 0
Delete Sheet (No Prompt)Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
Clear SheetSheets("Sheet1").Cells.Clear
Clear Sheet Contents OnlySheets("Sheet1").Cells.ClearContents
Clear Sheet UsedRangeSheets("Sheet1").UsedRange.Clear
Protect or Unprotect Sheets
Unprotect (No Password)Sheets("Sheet1").Unprotect
Unprotect (Password)Sheets("Sheet1").Unprotect "Password"
Protect (No Password)Sheets("Sheet1").Protect
Protect (Password)Sheets("Sheet1").Protect "Password"
Protect but Allow VBA AccessSheets("Sheet1").Protect UserInterfaceOnly:=True
Unprotect All SheetsDim ws As Worksheet

For Each ws In Worksheets
ws.Unprotect "password"
Next ws
vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples