2015-10-14 110 views
1

我遇到了VBA excel中的錯誤處理問題。基本上,我有一種情況,我正在處理同一個錯誤處理塊中的多個錯誤。excel vba錯誤處理

爲了使事情變得非常簡單,讓我們只說:

Sub some_function() 
    On Error go to step1 
    step2: 
     some code which triggers an error 
     Exit Sub 
    step1: 
     Okay, so far so good. 
     Problem is, that in this block of code can also occur an error 
     with the same Err.Number but I have to deal with him on other way 
     which is not specified in this block of code. 
     go to step 2 
End sub 

我使用SAP會話連接到SAPGUI,我無法預測這將發生錯誤。如果我能在錯誤處理代碼塊中發現錯誤,我可以解決這種情況。

所以基本上我是盲目的基礎。如果發生錯誤,我嘗試做一些其他的事情,如果它工作正常,但如果第二次發生錯誤(在錯誤處理塊內),它會引發我一個錯誤。

有沒有什麼解決方法?

UPDATE:

只是想大聲。

如果我使用On Error Resume Next語句,並做如下:

On Error Resume next 
some code, 
line of code that could trigger an error 
if Err.Number <> 0 Then 
    try to handle an error 
    Err.Clear 
End if 
line of code that could also trigger an error 
If Err.Number <> 0 Then 
    Try to handle an error 
    Err.Clear 
End If 

請問這是否正常?或者有沒有更好的解決方案?

是否有可能在程序中僅使用Resume next語句?我們只是說我們有一個20行的過程,並且我希望在第10行和第15行之間使用Resume Next語句。是否可以啓用和禁用Resume next語句或Error行?

+0

所以一旦你確認err.Number爲什麼不是Err.Clear所以你可以捕獲下一個? – Sorceri

+0

讓錯誤處理塊潛在失敗並且必須第二次發現錯誤通常不是一個好主意。但是,您可以使用「On Error Resume Next」來檢查以前的語句是否成功。 –

回答

0

如何將步驟2中的代碼放入單獨的過程?在那裏,您可以使用新的on error goto聲明進行單獨的錯誤處理。

+0

是的,我也可以這樣做。所以,如果我理解正確,你可以使用錯誤去同一程序中的語句只有一次? –