在我的工作表上,我有工作表更改,选择更改和双击宏之前。 他们的工作就像魅力,但有时他们会停止工作。它们根本不会触发,即使我做了必须触发它们的事情。
当他们停止触发时: 1.如果我写一个像
这样的宏sub test
msgbox "hello" & application.EnableEvents
end sub
播放这个宏,它可以工作并告诉我"你好TRUE"。
如果我添加msgbox"你好"在工作表更改宏的第一行,并使用必须触发它的事情对其进行测试,没有任何反应。
如果我关闭工作簿并重新打开它,那就像魅力一样。
我不知道什么可以阻止这些宏。我认为如果application.events返回" TRUE"然后这些宏必须触发(并最终导致错误,但它们必须触发)。 我有什么办法来测试有时阻止他们的东西?它可能是什么?
答案 0 :(得分:0)
将此代码添加到工作表中:
Private Sub Worksheet_Change(ByVal Target As Range)
ThisWorkbook.Worksheets("Sheet1").Range("A1") = _
ThisWorkbook.Worksheets("Sheet1").Range("A1") + 1
End Sub
现在在单元格A1中输入数字1。这将触发工作表更改事件,该事件将向单元格A1中的值添加1,这将触发工作表更改事件,这将在单元格A1中将值加1 .......
现在看看这段代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
ThisWorkbook.Worksheets("Sheet1").Range("A1") = _
ThisWorkbook.Worksheets("Sheet1").Range("A1") + 1
Application.EnableEvents = True
End Sub
现在在单元格A1中输入1。事件观看被关闭,1被添加到单元格A1中的值并且因为事件观看被关闭 - 除了在事件被触发后再次打开之外没有其他事情发生。
答案 1 :(得分:0)
我想我刚刚在代码中发现了这个错误。我有一个" On error goto 0"在我的worksheet_change中(旧代码,当我不确定如何处理错误时......)。我认为发生错误并且处理不当,使用" application.EnableEvents = true"在末尾。我希望就是这样。我还把" application.EnableEvents = true"在workbook_open和workbook_activate中试图收起我遇到的错误。感谢您的提示。