【发布时间】:2019-04-09 04:33:52
【问题描述】:
我在单元格 E2 中有一个简单的 countif 公式,它将检查特定文本。一旦它为真,它将执行一个宏,该宏会提示输入一个 msgbox。此代码工作正常,但是当对工作表进行任何其他更改时,将再次执行宏,即使单元格 E2 的值没有更改。如果 E2 完全没有变化,如何阻止宏继续执行?
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("E2")) Is Nothing Then
If Target.Value = "True" Then
Application.EnableEvents = False
a = MsgBox("Test", vbYesNo, "Test")
If a = vbYes Then
Range("E3") = "003"
Else
Range("E3") = "001"
End If
Call ApplyMG
Application.EnableEvents = True
End If
End If
End Sub
编辑:感谢下面的评论,将“旧代码”设置目标删除到相交线中的相同范围。但是,宏不再被触发。
【问题讨论】:
-
删除
Set Target = Range("E2") -
愚蠢的我,我将不同的代码混合在一起,现在变得一团糟。感谢您的提示,现在 intersect 找到了我手动更改的值。
-
很可能它现在没有触发,因为代码已经半途而废,所以它还没有达到重新启用事件的地步,进入调试窗口(来自 VBE 的 ctrl-G并输入
Application.EnableEvents = True并按回车,这应该会为您解决问题。