2009-05-28 100 views

回答

6

这是因为它依赖于已经设置为“On错误继续下一步”做一个稍微哈克的方式,但你可以做这样的事情:

On Error Resume Next 
Dim objRef1, objRef2 
Set objRef1 = GetRef("DoStuff1") 
If objRef1 Is Nothing Then 
    Call objRef1 
Else 
    MsgBox "DoStuff1 is not defined!" 
End If 

Set objRef2 = GetRef("DoStuff2") 
If objRef2 Is Nothing Then 
    MsgBox "DoStuff2 is not defined!" 
Else 
    Call objRef2 
End If 

Sub DoStuff1 
    MsgBox "DoStuff1!" 
End Sub 

到GetRef呼叫将产生,如果异常你试图得到一个指针的子或函数不存在(DoStuff2就是这种情况)。然后您可以检查参考是否按预期设置。

+0

否则你将尝试调用该函数后检查Err.Number的。但是那么你调用的函数可能被定义,被调用,但是成为错误的来源,我猜这不是你想要的。 – Xiaofu 2009-05-28 15:32:26

+0

这是有效的。谢谢! – 2009-05-28 15:36:05

15

这里是我的解决方案,它在相同的原理工作,但哈克岬是相当自足:

Function FunctionExists(func_name) 
    FunctionExists = False 

    On Error Resume Next 

    Dim f : Set f = GetRef(func_name) 

    If Err.number = 0 Then 
     FunctionExists = True 
    End If 
    On Error GoTo 0 

End Function 
相关问题