VBA触发单元格值更改的宏

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何时发生变化?

Che*_*hel 6

你能尝试这样的吗?将公式更改为=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)

  • 尝试将其放入标准模块中.右键单击任何工作表,然后选择"插入 - >模块". (2认同)