在单元格更改时自动执行Excel宏

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (45)

如何在特定单元格中的值每次更改时自动执行Excel宏?

现在,我的工作代码是:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("H5")) Is Nothing Then Macro
End Sub

有更好的办法吗?

提问于
用户回答回答于

你的代码看起来不错。

但是,请注意,对range(“H5”)的调用是对Application.Range(“H5”)的快捷命令,这相当于Application.ActiveSheet.Range(“H5”)。如果唯一的更改是用户--更改--这是最典型的--这可能是很好的,但是工作表的单元格值可以通过编程更改(例如VBA)来更改,当它不是活动工作表时。

考虑到这一点,我将使用Target.Worksheet.Range(“H5”):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Target.Worksheet.Range("H5")) Is Nothing Then Macro
End Sub

如果事件处理程序位于所讨论工作表的代码页上(通常是这样),则可以使用Me.Range(“H5”):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("H5")) Is Nothing Then Macro
End Sub

希望这能帮上忙.

用户回答回答于

处理工作表_更改事件或工作簿_SheetChange事件。

事件处理程序接受一个参数“Target as range”,因此您以检查正在更改的范围是否包含您感兴趣的单元格。

扫码关注云+社区