每当特定单元格中的值发生更改时,如何自动执行Excel宏?
现在,我的工作代码是:
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("H5")) Is Nothing Then Macro End Sub
"H5"
被监视的特定单元格在哪里,是Macro
宏的名称.
有没有更好的办法?
你的代码看起来很不错.
但是,要小心,你的调用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
希望这可以帮助...
处理Worksheet_Change
活动或Workbook_SheetChange
活动.
事件处理程序采用"目标作为范围"参数,因此您可以检查正在更改的范围是否包括您感兴趣的单元格.