Workbook_SheetChange ist ein Ereignis, das in Excel VBA auftritt, wenn sich der Inhalt einer Zelle in einem Arbeitsblatt einer Arbeitsmappe ändert. Dieses Ereignis ermöglicht es Benutzern, bestimmte Aktionen oder Manipulationen von Daten durchzuführen, wenn sich der Inhalt einer Zelle ändert.
In der Regel, Workbook_SheetChange wird zum Erstellen von Makros verwendet, die automatisch ausgeführt werden, wenn sich Benutzerdaten in einem Arbeitsblatt ändern. Mit diesem Ereignis können Sie beispielsweise überprüfen, ob die Daten korrekt sind, andere Zellen automatisch füllen oder Berechnungen durchführen, wenn sich eine bestimmte Zelle ändert.
Im Folgenden sind einige Anwendungsbeispiele aufgeführt Workbook_SheetChange in VBA Excel:
Beispiel 1: Füllt automatisch andere Zellen auf, wenn sich der Wert in einer bestimmten Zelle ändert. Wenn Sie beispielsweise den Wert von Zelle A1 ändern, werden die Zellen B1 und C1 automatisch aufgefüllt.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)If Not Intersect(Target, Range("A1")) Is Nothing Then
Range("B1").Value = Range("A1").Value * 2
Range("C1").Value = Range("A1").Value * 3
End If
End Sub
Beispiel 2: Überprüft, ob die Daten korrekt sind, wenn sich ein Wert in einer bestimmten Zelle ändert. Wenn Sie beispielsweise den Wert von Zelle D1 ändern, wird überprüft, ob es sich um einen Zahlenwert handelt, und wenn nicht, wird eine Fehlermeldung angezeigt.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)If Not Intersect(Target, Range("D1")) Is Nothing Then
If Not IsNumeric(Range("D1").Value) Then
MsgBox "Fehler: Geben Sie einen numerischen Wert ein!"
End If
End If
End Sub
Beispiel 3: Führt Berechnungen durch, wenn sich ein Wert in einer bestimmten Zelle ändert. Wenn Sie beispielsweise den Wert von Zelle E1 ändern, wird automatisch die Summe der Zellen F1 und G1 berechnet und das Ergebnis wird in Zelle H1 geschrieben.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)If Not Intersect(Target, Range("E1")) Is Nothing Then
Range("H1").Value = Range("F1").Value + Range("G1").Value
End If
End Sub
Bitte beachten Sie, dass für die Verwendung Workbook_SheetChange für Ereignisse müssen Sie den Code in das ThisWorkbook-Modul im VBA-Editor einfügen. Außerdem müssen Sie im Eigenschaftenfenster des ThisWorkbook-Moduls "Workbook" in der linken Liste und "SheetChange" in der rechten Liste auswählen, bevor Sie den Code schreiben.
Was ist Workbook_SheetChange
Wenn eine Änderung in einer Zelle auftritt, ruft VBA automatisch Workbook_SheetChange auf, wo Sie bestimmten Code schreiben können, um die erforderlichen Aktionen auszuführen. Dies kann beispielsweise nützlich sein, um Daten automatisch zu aktualisieren oder Berechnungen durchzuführen, wenn sich die Werte in Zellen ändern.
Beispiel für das Workbook_SheetChange-Ereignis:
' Code, der ausgeführt wird, wenn sich der Inhalt einer Zelle im Arbeitsblatt ändert
If Target.Column = 1 Then
' Wenn die Änderung in der ersten Spalte aufgetreten ist
' Die gewünschten Aktionen ausführen
In diesem Beispiel wird Workbook_SheetChange jedes Mal aufgerufen, wenn der Inhalt einer Zelle im Arbeitsblatt geändert wird. Innerhalb einer Prozedur können Sie Bedingungen schreiben, um bestimmte Aktionen abhängig von den geänderten Daten auszuführen. In diesem Fall wird ein bestimmter Code ausgeführt, wenn die Änderung in der ersten Spalte aufgetreten ist.
Das Workbook_SheetChange-Ereignis ermöglicht es Ihnen, Routineaufgaben zu automatisieren und die Arbeit mit Daten in Excel zu vereinfachen, was es zu einem sehr nützlichen Werkzeug für VBA-Entwickler macht.
Beispiele für die Verwendung von Workbook_SheetChange
Hier sind einige Beispiele für die Verwendung von Workbook_SheetChange:
1. Schreiben des Änderungsdatums in eine Zelle:
Bei jeder Änderung einer Zelle im ausgewählten Bereich werden Datum und Uhrzeit der Änderung in die benachbarte Zelle eingefügt.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Dim changedCells As Range' Диапазон, в котором необходимо отслеживать измененияSet changedCells = Range("A1:C10")' Проверяем, произошли ли изменения в нужном диапазонеIf Intersect(Target, changedCells) Is Nothing Then Exit Sub' Записываем дату изменения в соседнюю ячейкуTarget.Offset(0, 1).Value = NowEnd Sub
2. Überprüfen der Zellenwerte bei einer Änderung:
Wenn sich Zellen innerhalb des ausgewählten Bereichs ändern, werden deren Werte überprüft. Wenn der Zellenwert einer bestimmten Bedingung nicht entspricht, wird eine Fehlermeldung angezeigt.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Dim changedCells As RangeDim cell As Range' Диапазон, в котором необходимо отслеживать измененияSet changedCells = Range("A1:C10")' Проверяем, произошли ли изменения в нужном диапазонеIf Intersect(Target, changedCells) Is Nothing Then Exit Sub' Проверяем значения ячеекFor Each cell In Intersect(Target, changedCells)If cell.Value < 0 ThenMsgBox "Недопустимое значение в ячейке " & cell.Address, vbCritical, "Ошибка"Exit SubEnd IfNext cellEnd Sub
3. Automatisches Kopieren von Daten in ein anderes Arbeitsblatt:
Wenn Sie Zellen in einem Arbeitsblatt ändern, werden die Werte automatisch in den angegebenen Zellbereich des anderen Arbeitsblatts kopiert.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)Dim changedCells As Range' Диапазон, в котором необходимо отслеживать измененияSet changedCells = Sheets("Лист1").Range("A1:C10")' Проверяем, произошли ли изменения в нужном диапазонеIf Intersect(Target, changedCells) Is Nothing Then Exit Sub' Копируем значения в другой листIntersect(Target, changedCells).Copy Destination:=Sheets("Лист2").Range("A1")End Sub
Dies sind nur einige Beispiele für die Verwendung von Workbook_SheetChange. Mit diesem Ereignis können Sie verschiedene Aufgaben in der Datenautomatisierung in Excel lösen.