我的VBA有点生疏,所以我在构建一个应用程序时遇到问题,该应用程序会在修改单元格的值时自动更新某些单元格。
我已经开始使用这个位于Worksheet
页面的基本子程序:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = True
If Not Intersect(Target, Target.Worksheet.Range("A1")) Is Nothing Then
MsgBox "Lorem Ipsum"
End If
End Sub
当修改单元格A1的值时,此子例程应弹出消息框 Lorem Ipsum 。
然而这不起作用。我一直无法找到问题所在;上面的代码不应该出现典型的问题(位于模块中的子程序,EnableEvents
转为False
);我还尝试将Target.Worksheet.Range("A1")
更改为Range("A1")
。
有谁知道这个问题来自哪里?
答案 0 :(得分:4)
问题是,当Application.EnableEvents
关闭时,工作表事件不会触发,您的代码将无法运行。
要重新打开,请在立即窗口中输入Application.EnableEvents = True
,如下所示
现在你的代码应该没有任何问题。
答案 1 :(得分:-1)
我复制了你的代码,它按照人们的预期运作。请注意,您需要手动编辑代码的工作表上的单元格A1以启动MsgBox。 Recalculation has no bite on the worksheet change event.