我在这里寻求一些建议。
我有一个电子表格,其中包含可以从Worksheet_Change事件中调用的各种模块和过程。当我需要从工作簿中发出工作表以供其他用户完成时,这会导致问题。
每当用户尝试更新工作表时,on change事件就会被触发,导致编译错误,因为被调用的过程不存在,并且这不能被捕获(据我所知)。我已尝试使用Application.EnableEvents = False,但这是在工作表事件中,并且一旦触发事件,代码就会中断。
无论如何通过后期绑定调用一个程序,我可以捕获错误吗?
我现在正在尝试这样的事情。
Dim mdl as object
' Test for module in workbook, if error, then exit routine
Set mdl = Application.ActiveWorkbook.VBProject.VBComponents("mdlSharedFunctions")
'If no error, then call procedure here
call mdl.UpdateData(Target)
'Or
Application.Run mdl.UpdateData(Target)
这些呼叫方法都不起作用,我希望那里的某个人能指出我正确的方向。
干杯
皮特
答案 0 :(得分:0)
你可以使用一个全局变量作为标志 - 位脏,但它工作正常。然后在更改事件子中添加If flag = true then
语句。
Public globalflag as Boolean
Sub test1()
If globalflag = True Then
BrokenSub 'This sub has an invalid sub/function referenced, but will be ignored if the flag is set to false
Else
'Don't run the code
Exit Sub
End If
End Sub
Sub BrokenSub()
invalidfunction ("asb")
End Sub
修改
要将其放入工作表中,只需查看变量是否存在:
在主电子表格的模块中声明:
Public globalflag as Boolean
然后在您的工作表代码中
If not IsEmpty(globalflag) Then
BrokenSub 'Put your master spreadsheet code here - it'll run if globalflag exists and be ignored if it doesn't
End If
Sub BrokenSub()
invalidfunction ("asb")
End Sub