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 (11475) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: