Kyl*_*ler 4 excel vba event-handling excel-vba
这应该很简单.当单元格的值发生变化时,我想触发一些VBA代码.单元(D3)是来自另外两个单元的计算=B3*C3.我试过两种方法:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 And Target.Row = 3 Then
MsgBox "There was a change in cell D3"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
由于单元格是计算,因此在值更改时不会触发,因为计算保持不变.我也尝试过:
Private Sub Worksheet_Calculate()
MsgBox "There was a calculation"
End Sub
Run Code Online (Sandbox Code Playgroud)
但我在工作表上有多个计算,它会多次触发.有没有办法可以确定哪个计算在计算事件中发生了变化?还是有另一种方法可以跟踪D3何时发生变化?
你能尝试这样的吗?将公式更改为=D3AlertOnChange(B3*C3).
Private D3OldVal As Variant
Public Function D3AlertOnChange(val)
If val <> D3OldVal Then MsgBox "Value changed!"
D3OldVal = val
D3AlertOnChange = val
End Function
Run Code Online (Sandbox Code Playgroud)