Mit VBA in Excel ein Tabellenblatt löschen oder hinzufügen

Mit wenigen Zeilen VBA Code können Sie beliebige Tabellenblätter löschen oder neu hinzufügen. In diesem Beitrag stelle ich Ihnen die einzelnen Funktionen vor. Weil das Löschen von Daten generell immer sehr problematisch ist, zunächst allerdings noch ein paar Hinweise um versehentlichen Datenverlust zu vermeiden.

Wenn Sie selbst „von Hand“ ein Tabellenblatt löschen wollen, erhalten Sie zunächst eine Sicherheitsabfrage mit dem Hinweistext:

„Microsoft Excel löscht dieses Blatt endgültig. Möchten Sie den Vorgang fortsetzen?“

Sicherheitsabfrage: Tabellenblatt löschen
Sicherheitsabfrage: Tabellenblatt löschen

Auch wenn Hinweistexte häufig ungelesen weggeklickt werden, diesen Hinweis sollten Sie nicht sorglos ignorieren. Löschen Sie das Tabellenblatt grundsätzlich nur, wenn Sie sich sicher sind. Prüfen Sie vorher unter anderem auch, ob es von anderen Tabellenblättern noch Bezüge zu dem Tabellenblatt gibt, das Sie löschen wollen. So vermeiden Sie, dass Formeln anschließend den Fehler #BEZUG! statt dem gewünschten Ergebnis anzeigen. Sobald Sie die Datei nach dem Löschen des Tabellenblatts speichern ist der Datenverlust ansonsten irreparabel.

Excel Tabellenblatt mit VBA hinzufügen

Bevor wir ein Tabellenblatt löschen, zeige ich Ihnen zunächst wie Sie ein Tabellenblatt mit VBA hinzufügen können. Hierzu reicht schon ein sehr kurzer Einzeiler:

Worksheets.Add

Mit diesem VBA Code wird das Tabellenblatt immer links vom aktuell ausgewählten Tabellenblatt erstellt. Alternativ können Sie auch den folgenden VBA Code nutzen um das im Quellcode deutlicher darzustellen:

Worksheets.Add Before:=ActiveSheet

Wenn das neue Tabellenblatt rechts vom aktuellen Tabellenblatt hinzugefügt werden soll, wandeln Sie den VBA Code wie folgt ab:

Worksheets.Add After:=ActiveSheet

Falls das neue Tabellenblatt an einer bestimmten Stelle hinzugefügt werden soll, so können Sie auch die nächste Variante nutzen. Hier können Sie eine beliebige Zahl in die Klammer setzen um die genaue Position zu wählen. Auch bei dieser Variante können Sie wahlweise die Befehle „Before“ oder „After“ nutzen.

Worksheets.Add Before:=Worksheets(1)

Excel Tabellenblatt mit VBA löschen

Das Hinzufügen neuer Tabellenblätter ist unproblematisch. Hier haben Sie keinen Datenverlust zu befürchten. Anders sieht es beim Löschen von Tabellenblättern aus. Daher beachten Sie nochmal den Hinweis zu Beginn dieses Beitrags.

Auch das Löschen von Tabellenblättern ist fast genauso einfach umzusetzen. Wie im letzten Beispiel ist in der Klammer wieder die Position des Tabellenblatts anzugeben. Die Tabellenblätter werden immer von links nach rechts durchgezählt. Möchten Sie also das erste, ganz links platzierte Tabellenblatt löschen, lautet der VBA Code dafür:

Worksheets(1).Delete

Alternativ können Sie auch das aktuell ausgewählte Tabellenblatt:

ActiveSheet.Delete

oder ein Tabellenblatt mit einem bestimmten Namen löschen:

Worksheets("Tabellenname").Delete

In diesem Fall ist allerdings sicherzustellen, dass es den Tabellenblatt tatsächlich gibt. Ansonsten erhalten Sie den Laufzeitfehler 9.

Laufzeitfehler 9
Laufzeitfehler 9

In allen Varianten erhalten Sie wie beim manuellen Löschen eines Tabellenblatt noch die Sicherheitsabfrage „Microsoft Excel löscht dieses Blatt endgültig. Möchten Sie den Vorgang fortsetzen?“ zur Bestätigung angezeigt.

Das ist bei automatisierten Prozessen natürlich in der Regel nicht gewünscht. Um die Sicherheitsabfrage zu vermeiden sind zwei weitere Zeilen Code erforderlich. Die erste Zeile schaltet Sicherheitsabfragen aus, und die zweite Zeile anschließend nach dem Löschen der Tabelle wieder ein. Falls Sie die Sicherheitsabfragen nicht wieder einschalten, werden Ihnen in Excel zukünftig keine Sicherheitsabfragen mehr angezeigt. Um ungewollten Datenverlust zu vermeiden, sollten Sie die Sicherheitsabfragen immer aktivieren! Sie würden sonst zum Beispiel auch keine Warnung mehr erhalten, wenn Sie eine Exceldatei mit nicht gespeicherten Inhalten schließen wollen.

Application.DisplayAlerts = False
Worksheets(1).Delete
Application.DisplayAlerts = True
 
Gefällt Ihnen der Beitrag?

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.