VBA-Blätter - Der ultimative Leitfaden

Dies ist die ultimative Anleitung zum Arbeiten mit Blättern / Arbeitsblättern in Excel.

Am Ende dieses Handbuchs haben wir einen Spickzettel mit gebräuchlichen Befehlen zum Arbeiten mit Blättern erstellt.

Blätter vs. Arbeitsblätter

Es gibt zwei Möglichkeiten, mit VBA auf Blätter zu verweisen. Die erste ist mit dem Sheets-Objekt:

1 Sheets("Sheet1").Aktivieren

Das andere ist mit dem Worksheets-Objekt:

1 Worksheets("Blatt1").Aktivieren

In 99% der Fälle sind diese beiden Objekte identisch. Wenn Sie online nach VBA-Codebeispielen gesucht haben, haben Sie wahrscheinlich beide verwendeten Objekte gesehen. Hier ist der Unterschied:

Die Sheets Collection enthält Arbeitsblätter UND Diagrammblätter.

Verwenden Sie also Tabellen, wenn Sie normale Arbeitsblätter UND Diagrammblätter einschließen möchten. Verwenden Sie Arbeitsblätter, wenn Sie Diagrammblätter ausschließen möchten. Für den Rest dieses Handbuchs werden wir Blätter und Arbeitsblätter austauschbar verwenden.

Referenzblätter

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

  • ActiveSheet
  • Name der Blattregisterkarte
  • Blattindexnummer
  • Blattcodename

ActiveSheet

Das ActiveSheet ist das aktuell aktive Blatt. Mit anderen Worten, wenn Sie Ihren Code angehalten und Excel angesehen haben, ist es das Blatt, das sichtbar ist. Im folgenden Codebeispiel wird eine Messagebox mit dem ActiveSheet-Namen angezeigt.

1 MsgBox ActiveSheet.Name

Blattname

Sie sind wahrscheinlich am vertrautesten mit dem Verweisen auf Blätter anhand ihres Registerkartennamens:

1 Sheets("TabName").Aktivieren

Blattindexnummer

Die Blattindexnummer ist die Blattposition in der Arbeitsmappe. 1 ist das erste Blatt. 2 ist das zweite Blatt usw.:

1 Blätter(1).Aktivieren

Blattindexnummer - Letztes Blatt in der Arbeitsmappe

Um auf das letzte Blatt in der Arbeitsmappe zu verweisen, verwenden Sie Sheets.Count, um die letzte Indexnummer abzurufen:

1 Sheets(Sheets.Count).Aktivieren

Blatt „Codename“

Der Blattcodename ist der Objektname in VBA:

1 Codename.Aktivieren

Verweise auf Blätter in anderen Arbeitsmappen

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

1 Workbooks("VBA_Examples.xlsm").Worksheets("Sheet1").Activate

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

Aktivieren vs. Blatt auswählen

In einem anderen Artikel besprechen wir alles zum Aktivieren und Auswählen von Blättern. Die Kurzversion ist diese:

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

Aktivieren Sie ein Blatt

1 Sheets("Sheet1").Aktivieren

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

Wählen Sie ein Blatt aus

1 Sheets("Sheet1").Select

Wählen Sie mehrere Blätter aus

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

1 Arbeitsblätter(Array("Blatt2", "Blatt3")).Wählen

Arbeitsblattvariable

Wenn Sie einer Variablen ein Arbeitsblatt zuweisen, können Sie das Arbeitsblatt anhand seines Variablennamens referenzieren. Dies kann Ihnen viel Tipparbeit ersparen und Ihren Code leichter lesbar machen. Es gibt auch viele andere Gründe, warum Sie Variablen verwenden möchten.

So deklarieren Sie eine Arbeitsblattvariable:

1 Dim ws als Arbeitsblatt

Weisen Sie einer Variablen ein Arbeitsblatt zu:

1 Set ws = Sheets("Sheet1")

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

1 ws.Aktivieren

Durchlaufen Sie alle Blätter in der Arbeitsmappe

Arbeitsblattvariablen sind unerlässlich, wenn Sie alle Arbeitsblätter in einer Arbeitsmappe durchlaufen möchten. Der einfachste Weg, dies zu tun, ist:

12345 Dim ws als ArbeitsblattFür jedes ws in ArbeitsblätternMsgBox ws.nameNächstes ws

Dieser Code durchläuft alle Arbeitsblätter in der Arbeitsmappe und zeigt jeden Arbeitsblattnamen in einem Meldungsfeld an. Das Durchlaufen aller Blätter in einer Arbeitsmappe ist sehr nützlich, wenn Sie mehrere Arbeitsblätter gleichzeitig sperren / entsperren oder aus- / einblenden.

Arbeitsblattschutz

Arbeitsmappenschutz

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:

1 ActiveWorkbook.Protect-Passwort:="Passwort"

oder deaktivieren Sie den Arbeitsmappenschutz:

1 ActiveWorkbook.UnProtect-Passwort:="Passwort"

Hinweis: Sie können den Schutz auch ohne Passwort schützen/aufheben, indem Sie das Passwort-Argument weglassen:

1 ActiveWorkbook.Protect

Arbeitsblattschutz

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

Arbeitsblatt schützen

1 Worksheets("Sheet1").Schützen Sie "Passwort"

Arbeitsblattschutz aufheben

1 Worksheets("Sheet1").Schutz für "Passwort" aufheben

Es gibt eine Vielzahl von Optionen zum Schutz von Arbeitsblättern (Formatierungsänderungen zulassen, Benutzer das Einfügen von Zeilen ermöglichen usw.). Wir empfehlen die Verwendung des Makrorekorders, um Ihre gewünschten Einstellungen aufzuzeichnen.

Wir besprechen den Arbeitsblattschutz hier ausführlicher.

Sichtbare Eigenschaft des Arbeitsblatts

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

Es gibt tatsächlich drei Sichtbarkeitseinstellungen für Arbeitsblätter: Sichtbar, Ausgeblendet und Sehr versteckt.Ausgeblendete Blätter können von jedem normalen Excel-Benutzer eingeblendet werden - indem Sie mit der rechten Maustaste in den Registerkartenbereich des Arbeitsblatts klicken (siehe oben). VeryHidden Sheets können nur mit VBA-Code oder im VBA-Editor eingeblendet werden. Verwenden Sie die folgenden Codebeispiele, um Arbeitsblätter auszublenden/einzublenden:

Arbeitsblatt einblenden

1 Worksheets("Sheet1").Visible = xlSheetVisible

Arbeitsblatt ausblenden

1 Worksheets("Sheet1").visible = xlSheetHidden

Arbeitsblatt sehr ausblenden

1 Worksheets("Sheet1").Visible = xlSheetVeryHidden

Ereignisse auf Arbeitsblattebene

Ereignisse sind Auslöser, die dazu führen können, dass „Ereignisprozeduren“ ausgeführt werden. Sie können beispielsweise veranlassen, dass Code jedes Mal ausgeführt wird, wenn eine Zelle in einem Arbeitsblatt geändert wird oder wenn ein Arbeitsblatt aktiviert wird.

Arbeitsblattereignisprozeduren müssen in einem Arbeitsblattmodul platziert werden:

Es gibt zahlreiche Arbeitsblatt-Ereignisse. Um eine vollständige Liste anzuzeigen, 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 aus, um sie in das Modul einzufügen.

Arbeitsblatt-Aktivierungsereignis

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

123 Privates Unterarbeitsblatt_Activate()Bereich("A1").WählenEnd Sub

Mit diesem Code wird Zelle A1 bei jedem Öffnen des Arbeitsblatts ausgewählt (der Ansichtsbereich oben links im Arbeitsblatt zurückgesetzt).

Arbeitsblattänderungsereignis

Arbeitsblattänderungsereignisse werden immer dann ausgeführt, wenn ein Zellenwert im Arbeitsblatt geändert wird. Weitere Informationen finden Sie in unserem Tutorial zu Arbeitsblattänderungsereignissen.

Arbeitsblatt Spickzettel

Unten finden Sie einen Spickzettel mit allgemeinen Codebeispielen für die Arbeit mit Blättern in VBA

VBA-Arbeitsblätter Spickzettel

VBA-Arbeitsblätter Spickzettel
BeschreibungCodebeispiel
Referenzieren und Aktivieren von Blättern
RegisterkartennameSheets("Eingabe").Aktivieren
VBA-CodenameBlatt1.Aktivieren
IndexpositionBlätter(1).Aktivieren
Blatt auswählen
Blatt auswählenSheets("Input").Select
Auf Variable setzenDim ws als Arbeitsblatt
Set ws = ActiveSheet
Benennen / UmbenennenActiveSheet.Name = "NeuerName"
Nächstes BlattActiveSheet.Next.Activate
Durch alle Blätter schleifenDim ws als Arbeitsblatt
Für jedes ws in Arbeitsblättern
Msgbox ws.name
Nächstes ws
Durchlaufen ausgewählter BlätterDim ws als Arbeitsblatt
Für jedes ws in ActiveWindow.SelectedSheets
MsgBox ws.Name
Nächstes ws
ActiveSheet herunterladenMsgBox ActiveSheet.Name
Blatt hinzufügenTabellen.Hinzufügen
Blatt und Name hinzufügenSheets.Add.Name = "NewSheet"
Blatt mit Namen aus Zelle hinzufügenSheets.Add.Name = range("a3").value
Blatt nach dem anderen hinzufügenSheets.Add After:=Sheets("Input")
Blatt hinzufügen nach und NameSheets.Add(After:=Sheets("Input")).Name = "NewSheet"
Blatt vor und Name hinzufügenSheets.Add(Before:=Sheets("Input")).Name = "NewSheet"
Blatt am Ende der Arbeitsmappe hinzufügenSheets.Add After:=Sheets(Sheets.Count)
Blatt zum Anfang der Arbeitsmappe hinzufügenSheets.Add(Before:=Sheets(1)).Name = "FirstSheet"
Blatt zu Variable hinzufügenDim ws als Arbeitsblatt
Set ws = Sheets.Add
Arbeitsblätter kopieren
Blatt an das Ende der Arbeitsmappe verschiebenSheets("Sheet1").Move After:=Sheets(Sheets.Count)
Zur neuen ArbeitsmappeSheets("Sheet1").Copy
Ausgewählte Blätter in neue ArbeitsmappeActiveWindow.SelectedSheets.Copy
Vor einem anderen BlattSheets("Sheet1").Copy Before:=Sheets("Sheet2")
Vor dem ersten BlattSheets("Sheet1").Vorher kopieren:=Sheets(1)
Nach dem letzten BlattSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
Kopieren und benennenSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "LastSheet"
Aus Zellenwert kopieren und benennenSheets("Sheet1").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Range("A1").Value
Zu einem anderen ArbeitsbuchSheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)
Blätter aus-/einblenden
Blatt ausblendenSheets("Sheet1").visible = False
oder
Sheets("Sheet1").visible = xlSheetHidden
Blatt einblendenSheets("Sheet1").Visible = True
oder
Sheets("Sheet1").Visible = xlSheetVisible
Sehr Blatt ausblendenSheets("Sheet1").Visible = xlSheetVeryHidden
Blätter löschen oder löschen
Blatt löschenSheets("Sheet1").Löschen
Blatt löschen (Fehlerbehandlung)Bei Fehler Fortsetzen als nächstes
Sheets("Sheet1").Löschen
Bei Fehler GoTo 0
Blatt löschen (keine Aufforderung)Application.DisplayAlerts = False
Sheets("Sheet1").Löschen
Application.DisplayAlerts = True
Klares BlattSheets("Sheet1").Cells.Clear
Nur Blattinhalt löschenSheets("Sheet1").Cells.ClearContents
Clear Sheet UsedSortimentSheets("Sheet1").UsedRange.Clear
Blätter schützen oder Schutz aufheben
Schutz aufheben (kein Passwort)Sheets("Sheet1").Schutz aufheben
Schutz aufheben (Passwort)Sheets("Sheet1").Schutz für "Passwort" aufheben
Schützen (kein Passwort)Sheets("Sheet1").Schützen
Schützen (Passwort)Sheets("Sheet1").Schützen Sie "Passwort"
Schützen, aber VBA-Zugriff zulassenSheets("Sheet1").Protect UserInterfaceOnly:=True
Schutz aller Blätter aufhebenDim ws als Arbeitsblatt
Für jedes ws in Arbeitsblättern
ws.Schutz "Passwort" aufheben
Nächstes ws
wave wave wave wave wave