Wie kann ich die R- und C-Werte (Row & Column) einer Zelle, die gerade ein calculate-Ereignis ausgelöst hat, in Variablen schreiben.
Weiß jemand bescheid?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dd As Range, c As Range
If Target.Count > 1 Then Exit Sub
On Error GoTo errH
Set dd = Target.DirectDependents
For Each c In dd.Cells
MsgBox c.Address(0, 0)
Next
Exit Sub
errH:
End Sub
Um die R- und C-Werte (Row und Column) einer Zelle zu ermitteln, die ein Calculate-Ereignis in Excel auslöst, kannst Du den folgenden VBA-Code verwenden:
ALT + F11, um den VBA-Editor zu öffnen.Private Sub Worksheet_Calculate()
Dim cell As Range
Dim dependentCells As Range
Set dependentCells = Me.Cells.SpecialCells(xlCellTypeFormulas)
For Each cell In dependentCells
If cell.HasFormula Then
MsgBox "Die Zelle " & cell.Address & " wurde neu berechnet!"
End If
Next cell
End Sub
Dieser Code nutzt das Worksheet_Calculate-Ereignis, um alle abhängigen Zellen zu ermitteln. Beachte, dass dies in Excel 2010 oder später ausgeführt werden sollte.
Fehler: Das Calculate-Ereignis wird nicht ausgelöst.
Formeln > Berechnungsoptionen > Automatisch).Fehler: Keine Meldung wird angezeigt.
Eine alternative Methode, um das Verhalten von target.calculate zu nutzen, wäre die Verwendung des Worksheet_Change-Ereignisses:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Columns("B")) Is Nothing Then
MsgBox "Änderung in Zelle " & Target.Address
End If
End Sub
Dieser Code zeigt eine MessageBox an, wenn eine Änderung in Spalte B erfolgt. Es ist eine einfache Möglichkeit, um zu erfahren, welche Zelle eine Änderung ausgelöst hat und damit das Calculate-Ereignis beeinflusst.
Beispiel für die Verwendung von Worksheet_Calculate:
=B1*2. Ändere den Wert in B1 und beobachte, wie das Calculate-Ereignis ausgelöst wird und die Nachricht angezeigt wird.Beispiel für die Verwendung von Worksheet_Change:
Application.CalculationState, um den Status der Berechnung zu überprüfen, bevor Du das Calculate-Ereignis verarbeitest.1. Kann ich auch mehrere Zellen gleichzeitig überwachen?
Ja, Du kannst das Target-Objekt im Worksheet_Change-Ereignis verwenden, um Änderungen in mehreren Zellen zu erfassen.
2. Wie kann ich sicherstellen, dass der Code nur in bestimmten Zellen ausgeführt wird?
Verwende die Intersect-Funktion, um sicherzustellen, dass der Code nur für spezifische Zellen oder Bereiche ausgeführt wird.