Speichern nicht vorhandener Änderungen (Microsoft Excel)
Wahrscheinlich ist Ihnen Folgendes passiert: Sie öffnen eine Arbeitsmappe, sehen sich in einigen Arbeitsblättern um und schließen dann die Arbeitsmappe. Beim Schließen werden Sie von Excel gefragt, ob Sie Ihre Änderungen speichern möchten, aber keine Änderungen vorgenommen haben. Sie haben sich nur umgesehen. Was gibt?
Intern behält Excel das bei, was üblicherweise als „Dirty Flag“ bezeichnet wird. Dieses Flag wird gesetzt, wenn Sie Änderungen an einer Arbeitsmappe vornehmen.
Immer wenn Sie die Arbeitsmappe speichern, wird das Flag gelöscht. Wenn das Flag beim Schließen der Arbeitsmappe gesetzt ist, werden Sie von Excel gefragt, ob Sie die Arbeitsmappe speichern möchten.
Das Dirty-Flag kann natürlich gesetzt werden, wenn Sie eine explizite Änderung an einer Arbeitsmappe vornehmen, z. B. eine Zelle bearbeiten oder die Struktur der Arbeitsmappe auf irgendeine Weise ändern. Es kann jedoch auch festgelegt werden, wenn Sie nichts explizites tun. Manchmal führt Excel etwas aus, das sich auf den Inhalt der Arbeitsmappe auswirkt, nur weil Sie sie geöffnet haben. Dies setzt das Dirty-Flag und löst somit die Anforderung zum Speichern aus.
Zwei Hauptverantwortliche für solche automatischen Änderungen sind die Arbeitsblattfunktionen HEUTE und JETZT. Diese geben das Systemdatum bzw. die Systemzeit zurück. Wenn Sie eine Arbeitsmappe zum ersten Mal öffnen, werden sie im normalen Verlauf der Neuberechnung aktualisiert. Da sie eine Änderung darstellen, setzt Excel das Dirty-Flag.
Das Dirty-Flag kann auch automatisch gesetzt werden, wenn Ihre Arbeitsmappe Links zu Daten in anderen Arbeitsblättern enthält. Excel ruft die Daten ab, die eine Änderung der gerade geöffneten Arbeitsmappe darstellen. Excel setzt das Dirty-Flag nicht, wenn Sie einfach in der Arbeitsmappe navigieren, beispielsweise Zellen auswählen oder zu einem anderen Arbeitsblatt wechseln.
Eine Möglichkeit, das Problem zu umgehen, besteht natürlich darin, alle Änderungen in Ihrer Arbeitsmappe zu entfernen. Für die meisten Menschen ist dies einfach nicht praktikabel. Sie können auch ein automatisches Makro hinzufügen, das unmittelbar vor dem Schließen der Arbeitsmappe ausgeführt wird, z. B. das folgende, das Teil des ThisWorkbook-Objekts sein sollte:
Private Sub Workbook_BeforeClose(Cancel As Boolean) ActiveWorkbook.Saved = True End Sub
Dieses Makro löscht lediglich das Dirty-Flag (die gespeicherte Eigenschaft). Dieser Ansatz wird zwar funktionieren, es besteht jedoch ein großes Risiko, ihn zu verwenden. Wenn das Makro vorhanden ist, werden Sie von Excel niemals gefragt, ob Sie beim Beenden Änderungen speichern möchten, selbst wenn legitime Änderungen an der Arbeitsmappe vorgenommen wurden. Daher müssen Sie daran denken, bei jeder Änderung explizit alles in der Arbeitsmappe zu speichern. Wenn Sie dies nicht tun, verlieren Sie möglicherweise einen Teil Ihrer Arbeit.
Eine Variation dieses Ansatzes – eine, die vergessene Änderungen weniger unversöhnlich macht – besteht darin, das Makro tatsächlich Teil der Workbook_Open-Prozedur für das ThisWorkbook-Objekt zu machen:
Private Sub Workbook_Open() ActiveWorkbook.Saved = True End Sub
Jetzt öffnet Excel die Arbeitsmappe, berechnet sie neu (einschließlich Änderungen basierend auf Funktionen wie HEUTE und JETZT) und löscht dann das Dirty-Flag. Wenn Sie sofort schließen, werden Sie nicht gefragt, ob Sie Ihre Änderungen speichern möchten. Sie werden jedoch gefragt, ob Sie Änderungen speichern möchten, wenn Sie Änderungen vornehmen, nachdem dieses Makro ausgeführt wurde – mit anderen Worten, nachdem das Arbeitsblatt vollständig geöffnet wurde.
Neben der automatischen Neuberechnung von Funktionen, die das Dirty-Flag setzen, ist es auch möglich, dass Ihre Arbeitsmappe ein oder zwei Makros enthält, die beim Öffnen automatisch ausgeführt werden. Wenn das Makro eine Änderung in der Arbeitsmappe vornimmt, setzt es natürlich das Dirty-Flag. Sie können den VBA-Editor überprüfen, um festzustellen, ob dies der Fall ist.
_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 (2081) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: