Identifizieren der zuletzt in einem Arbeitsblatt geänderten Zelle (Microsoft Excel)
John fragt sich, ob es in VBA eine Möglichkeit gibt, die letzte Zelle zu identifizieren, die von einem Benutzer geändert wurde. Er möchte nicht wissen, ob die Zelle von einem Makro geändert wurde, sondern speziell von einem Benutzer.
Die Antwort lautet ja – irgendwie. Mit dem Ereignis Worksheet_Change können Sie einen Handler schreiben, der aufzeichnet, wenn eine bestimmte Zelle in einem Arbeitsblatt geändert wird. Ein Makro, das dies tut, könnte ziemlich einfach sein, wie dieses:
Private Sub Worksheet_Change(ByVal Target As Range) Application.StatusBar = Target.Address End Sub
Das Makro fügt einfach die Adresse der letzten Änderung in die Statusleiste ein. Sie können das Makro so ändern, dass die Adresse in einer globalen Variablen (außerhalb des Ereignishandlers deklariert) beibehalten wird:
Dim sAddr As String Private Sub Worksheet_Change(ByVal Target As Range) sAddr = Target.Address(False, False) End Sub
Sie können dann ein reguläres Makro verwenden, um die in der Variablen sAddr gespeicherte Adresse abzurufen und damit zu tun, was Sie wollen.
Um sicherzustellen, dass der Ereignishandler keine von Makros vorgenommenen Änderungen aufzeichnet, müssen Sie die Ereignisbehandlung nur deaktivieren, bevor Sie einen Makrobefehl ausführen, der das Arbeitsblatt ändert. Beispielsweise kann die folgende EnableEvents-Eigenschaftsänderung vor und nach einem Befehl verwendet werden, der den Inhalt der Zelle A1 ändert:
Application.EnableEvents = False Range("A1") = "Hello" Application.EnableEvents = True
Wenn die Ereignisbehandlung deaktiviert ist, wird der Worksheet_Change-Ereignishandler nicht ausgelöst und die Adresse „zuletzt geändert“ wird nicht aktualisiert. Das Ergebnis ist, dass Sie am Ende nur die von Benutzern vorgenommenen Änderungen verfolgen, nicht die von Makros vorgenommenen Änderungen.
_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 (3819) 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: