好吧,我不确定这是否容易实现,但我会尝试。
如果单元格发生更改,我使用此子程序来执行一些宏:
Private Sub Worksheet_Calculate()
Dim target As Range
Set target = Range("b4")
If Not Intersect(target, Range("b4")) Is Nothing Then
Call init
End If
End Sub
这工作正常,但我有一点问题。
细胞B4
正如上面的单元格更改子部分中所引用的,其值由动态的命名范围确定,并包含另一张工作表上的值列表。我使用数据验证工具来制作B4
包含指定范围内容的下拉列表。
我有另一个宏,其目的是更新此列表。它的作用是清除当前列表,查询数据库并将一堆值输出到范围内。问题是,当这个宏运行时,它会导致B4
改变(如B4
参考范围内的值)。这反过来又导致我的“单元格更改”宏运行并抛出错误。
有没有办法在我更新它引用的列表时阻止“单元格更改”宏运行?
希望这个问题有意义。
您可以禁用Worksheet_Calculate
事件通过使用Application.EnableEvents
如下。请注意,这将禁用任何WorkSheet
or WorkBook
其间可能发生的事件Application.EnableEvents = False
and Application.EnableEvents = True
所以如果你的另一个子程序像这样运行 -Worksheet_Calculate
事件不会触发
Sub Other_Sub()
Application.EnableEvents = False
[b4].Value = "10"
'other stuff
Application.EnableEvents = True
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)