2009-05-28 102 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 
相關問題