Löschen von Arbeitsblättern in einem Makro (Microsoft Excel)
Die meisten Excel-Befehle können in Ihren Makros verwendet werden, vorausgesetzt, Sie kennen die richtigen VBA-Befehle, um die jeweilige Aufgabe auszuführen. Mit dem folgenden Makrobefehl können Sie das aktive Arbeitsblatt löschen:
ActiveSheet.Delete
Wenn Sie den Befehl in Ihrem Makro ausgeben, wird Excel das Makro anhalten und Sie fragen, ob Sie das Arbeitsblatt wirklich löschen möchten.
Wenn Sie auf Ja klicken, wird das Arbeitsblatt gelöscht und das Makro fortgesetzt.
Die ganze Idee hinter Makros ist natürlich, viele der Aufgaben, die Sie regelmäßig erledigen, zu automatisieren. Das Anhalten und Bitten um Bestätigung ist zwar der sichere Weg, hilft aber nicht viel bei der Automatisierung. Wenn Sie möchten, dass das Arbeitsblatt ohne Pause gelöscht wird, können Sie einige Dinge tun. Zunächst können Sie die SendKeys-Methode verwenden, um das Drücken der Eingabetaste zu simulieren. Dies entspricht dem Klicken auf Ja im Bestätigungsdialogfeld. Sie müssen lediglich eine einzelne Zeile vor der Zeile einfügen, in der das Arbeitsblatt gelöscht wird:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeys führt lediglich Tastendrücke in den Tastaturpuffer ein, so als ob Sie sie über die Tastatur eingegeben hätten. Daher muss die SendKeys-Zeile vor der Delete-Zeile stehen, damit sich der Enter-Tastendruck im Puffer befindet, bevor er benötigt wird.
Jeder langjährige Makroentwickler kann auf mehrere potenzielle Probleme bei der Verwendung von SendKeys hinweisen. Das Hauptproblem besteht darin, dass Sie damit nicht angeben können, dass Sie die Option Ja im Bestätigungsdialogfeld und nur in diesem Dialogfeld akzeptieren. Es ist jedoch unwahrscheinlich, dass die Eingabetaste auf dieses Dialogfeld angewendet wird, nicht auf das von Ihnen erwartete, wenn ein anderes Dialogfeld zum richtigen Zeitpunkt angezeigt wird (möglicherweise eines, das von einem anderen Programm generiert wurde).
Eine bessere Lösung besteht darin, die Warnfunktionen von Excel für kurze Zeit auszuschalten. Betrachten Sie den folgenden Makrocode:
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
Dieser Code deaktiviert die Warnungen, löscht das Arbeitsblatt und schaltet die Warnungen wieder ein. Während sie deaktiviert sind, zeigt Excel das Bestätigungsdialogfeld nicht an, sondern verhält sich so, als ob es angezeigt und die Standardoption (Ja) ausgewählt worden wäre.
Es ist wichtig, sich an die letzte hier gezeigte Codezeile zu erinnern. Wenn Sie die DisplayAlerts-Eigenschaft nicht auf True zurücksetzen, zeigt Excel auch nach dem Beenden des Makros keine Warnmeldungen mehr an. Dies könnte Probleme verursachen, wie Sie sich vorstellen können. Es ist am besten, es nur für die kurze Zeit auf False zu setzen, in der die Warnungen deaktiviert werden müssen.
Selbst wenn DisplayAlerts auf False gesetzt ist, werden weiterhin Fehlermeldungen angezeigt, sofern eine generiert wird. Wenn Sie beispielsweise den obigen Code ausführen und die Arbeitsmappe nur ein einziges Arbeitsblatt enthält, wird weiterhin eine Fehlermeldung angezeigt. (Dies geschieht, weil Sie das letzte Arbeitsblatt in einer Arbeitsmappe nicht löschen können.)
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (2293) gilt für Microsoft Excel 97, 2000, 2002 und 2003.