Speichern einer nicht speicherbaren Arbeitsmappe (Microsoft Excel)
Bill hat ein Makro „vor dem Speichern“, das drei Zellen testet. Wenn die Zellen leer sind, verhindert das Makro, dass der Benutzer speichert. Mit anderen Worten, sie müssen die Zellen ausfüllen, bevor sie die Arbeitsmappe speichern können.
Bill möchte diese Arbeitsmappe als Vorlage speichern, aber wenn er die drei Zellen löscht, hindert ihn das Makro auch daran, sie als Vorlage zu speichern. Er möchte, dass die Vorlage „sauber“ ist, wobei die drei Zellen standardmäßig leer sind. Benutzer würden eine neue Arbeitsmappe basierend auf der Vorlage erstellen und dann (korrekt) nicht speichern können, wenn die Zellen nicht ausgefüllt sind.
Bill fragt sich, wie er die Arbeitsmappe als Vorlage speichern kann, wenn die drei Zellen leer sind.
Es gibt tatsächlich verschiedene Ansätze, um Ihre Vorlage zu speichern.
Die erste besteht darin, den Namen Ihrer Arbeitsmappe in etwas ziemlich Esoterisches zu ändern, z. B. X27TT3W.xlsm. Fügen Sie dann Ihrem Makro „Vor dem Speichern“ eine Logik hinzu, die überprüft, ob der Name der Basisarbeitsmappe X27TT3W lautet. Wenn dies der Fall ist, können Sie die Arbeitsmappe (oder Vorlage) unabhängig vom Zustand der drei Zellen speichern. Sobald die Vorlage gespeichert ist, können Sie sie in Windows in den gewünschten Namen umbenennen und für Ihre Benutzer freigeben. Wenn sie den von Ihnen gewählten esoterischen Namen nicht erraten, können sie die Arbeitsmappe nicht speichern, ohne sicherzustellen, dass die drei Zellen ausgefüllt sind.
Ein anderer Ansatz besteht darin, Ihrer Arbeitsmappe einfach einen weiteren Ereignishandler hinzuzufügen, der beim ersten Öffnen der Arbeitsmappe ausgeführt wird, um den Inhalt der drei Zellen zu löschen. Dies könnte etwas Einfaches sein, wie folgt:
Private Sub Workbook_Open() Sheet1.Cells(1,1).Clear Sheet1.Cells(2,1).Clear Sheet1.Cells(3,1).Clear End Sub
Dieses Makro löscht die Zellen bei A1: A3. Wenn Sie möchten, dass ein anderer Bereich gelöscht wird, ändern Sie einfach die drei Zeilen, um anzugeben, welche Zellen Sie löschen möchten. Fügen Sie dann etwas in die drei Zellen ein (damit es Ihre Tests im Makro „Vor dem Speichern“ besteht) und speichern Sie es als Vorlage.
Ein anderer Ansatz, der sehr einfach zu implementieren ist, besteht darin, Ereignisse einfach zu deaktivieren, bevor Sie die Vorlage speichern. Dies erfolgt nicht innerhalb eines Makros, sondern im Direktfenster im Visual Basic-Editor. Alles was Sie tun müssen, ist diese einzelne Zeile einzugeben:
Application.EnableEvents = False
Speichern Sie Ihre Arbeitsmappe sofort als Vorlage und geben Sie die folgende Zeile in das Direktfenster des Visual Basic-Editors ein:
Application.EnableEvents = True
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13547) gilt für Microsoft Excel 2007, 2013, 2016, 2019 und Excel in Office 365.