ob es auch eleganter gelöst werden kann
ja, weil ein For-Next unelegant ist wenn es um eine eigentlich unbestimmte Anzahl von Wiederholungen geht.
Beispielsweise ist ein Do-Loop für diesen Zweck passender, da die Anzahl der Blätter bei Start des Makros auch 1 sein kann, sollte das Do-Loop kopfgesteuert(*) sein:
Code: Alles auswählen
Sub BlaetterLoeschen2()
With ThisComponent
Do While .sheets.count-1 > 0
.Sheets.RemoveByName(.sheets(.sheets.count-1).name)
Loop
End With
End Sub
(*)
umganssprachlich heißt sowas wie:
kopfgesteuert, und sowas wie:
fußgesteuert
Ansonsten kannst Du doch auch über den Index löschen:
.RemoveByIndex finde ich nirgens als Methode für diesen Zweck und es läuft hier auch nicht
Gruß
Stephan