VBA: Automatisch mehrere Tabellenblätter löschen?

2 Antworten

Der Haken an der Sache mit dem löschen ist:

Die interne Nummerierung der Tabellenblätter (TabBl) stimmt nur bei erstmaliger Anwendung überein. Werden TabBl gelöscht oder eingefügt, so ist die "Tabelle3" nicht unbedingt die interne 3.Tabelle, sondern kann auch die fünfte oder die achte sein (abhängig vom Erstellungszeitpunkt).
Weiterer Haken: wird ein TabBl gelöscht, ändert sich die interne Bezeichnung für ALLE TabBl.

Also kann man die interne Nummerierung nicht verwenden.

Außerdem ist darauf zu prüfen, ob das TabBl mit dem Makro (hier TabBl 1) etwa gelöscht werden soll, dann wäre das Makro auch weg.

Zum probieren: (es wird "rückwärts" gelöscht)

Dim intWert1 As Integer
Dim intWert2 As Integer
Dim intWert3 As Integer
intWert1 = InputBox("Nummer des ersten zu löschenden Blattes?", "Tabellenblätter löschen", 0)
intWert2 = InputBox("Nummer des letzten zu löschenden Blattes?", "Tabellenblätter löschen", 0)
Application.DisplayAlerts = False
For intWert3 = intWert2 To intWert1 Step -1
nam = Me.Name 'Makro beinhaltendes TabBl
If "Tabelle" & intWert3 = nam Then 'wenn dieses TabBl
MsgBox "ich kann mich nicht selbst löschen"
Else
Worksheets(intWert3).Delete
End If
Next
Application.DisplayAlerts = True

Klappt es so ?

Gruß aus Berlin

Woher ich das weiß:Hobby – Jahrelanges programmieren.

Der "+"-Operator lässt sich nur auf gleichartige Dinge anwenden, also entweder Zahl + Zahl oder String + String.

Worksheets(...) geht mit Zahl oder String; Zahl bedeutet den Index in der Reihenfolge, in der die Tabellen hintereinander stehen (angefangen bei 1), String bedeutet den Namen der Tabelle.

Lass doch einfach die Zeile

intWert3 = "Tabelle" + intWert1

weg.