在双击停止工作之前,工作表更改,选择更改

时间:2017-09-12 15:33:33

标签: vba worksheet eventtrigger

在我的工作表上,我有工作表更改,选择更改和双击宏之前。 他们的工作就像魅力,但有时他们会停止工作。它们根本不会触发,即使我做了必须触发它们的事情。

当他们停止触发时: 1.如果我写一个像

这样的宏
sub test
msgbox "hello" & application.EnableEvents
end sub

播放这个宏,它可以工作并告诉我"你好TRUE"。

  1. 如果我添加msgbox"你好"在工作表更改宏的第一行,并使用必须触发它的事情对其进行测试,没有任何反应。

  2. 如果我关闭工作簿并重新打开它,那就像魅力一样。

  3. 我不知道什么可以阻止这些宏。我认为如果application.events返回" TRUE"然后这些宏必须触发(并最终导致错误,但它们必须触发)。 我有什么办法来测试有时阻止他们的东西?它可能是什么?

2 个答案:

答案 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中试图收起我遇到的错误。感谢您的提示。