har*_*ryg 4 excel vba excel-vba
好吧我不确定这是否容易实现,但我会尝试.
如果单元格被更改,我使用此子程序执行一些宏:
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
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我有点问题.
细胞B4
,如在小区变更子引用的上方,具有由这是动态的,并包含在另一片的值的列表中的命名范围确定其值.我使用数据验证工具制作B4
一个包含命名范围内容的下拉列表.
我有另一个宏,其目的是更新此列表.它的作用是清除当前列表,查询数据库并将一组值输出到该范围内.问题是,当运行此宏时,它会导致值B4
更改(作为B4
引用范围中的值).这反过来导致我的"单元格更改"宏运行抛出错误.
当我更新它引用的列表时,有没有办法防止"单元格更改"宏运行?
希望这个问题有道理.
bre*_*tdj 10
您可以Worksheet_Calculate
使用Application.EnableEvents
以下方法禁用事件.请注意,这将禁用介于和之间的任何WorkSheet
或WorkBook
事件Application.EnableEvents = False
Application.EnableEvents = True
因此,如果您的其他子类运行如此 - Worksheet_Calculate
事件将不会触发
Sub Other_Sub()
Application.EnableEvents = False
[b4].Value = "10"
'other stuff
Application.EnableEvents = True
End Sub
Run Code Online (Sandbox Code Playgroud)