2015-10-14 111 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

是的,我也可以这样做。所以,如果我理解正确,你可以使用错误去同一程序中的语句只有一次? –