在VBA中查找错误行号

时间:2016-04-11 16:06:06

标签: vba

我试图找到我的代码崩溃的行号但是这个网站上的许多解释似乎对我的级别来说很复杂。

我的代码基本上如下,我不知道它在哪里打破。

Sub1   
    Call function1  
    Call function2  
End Sub  

本网站上的其他答案似乎只是一个简短的功能。但我不知道在我的代码中调用函数的位置或者如何获取弹出消息。如果我打算将我的sub1代码放入其功能中,我也不知道在哪里。初学者在这里。

1 个答案:

答案 0 :(得分:14)

如果您的代码没有行号,那么VBA无法为您提供行号

可以编写VBA并让它看起来像1980年那样:

Sub1
On Error GoTo 100
10   Call Function1
20   Call Function2
90   Exit Sub
100  Debug.Print Err.Message & " on line " & Erl
End Sub

但你不想这样做。真的,你不需要一个行号。

您需要处理运行时错误的小型函数。

On Error GoTo ErrHandler

发生运行时错误时,执行会跳转到名为ErrHandler行标签

     ...
     Exit Sub
ErrHandler: '<< the line label is denoted with a colon

那个处理程序是什么?如果您正在调试,您可能只想Stop在那里执行并检查当地人:

    Stop

然后在下一行添加Resume,然后按 F8 步入它。 Resume将返回导致错误的调用。如果这是函数调用,那么您需要处理该函数中的运行时错误。

确保您永远不要在生产代码中留下StopResume条款:

Sub WhenWillThisEnd()
    On Error GoTo ErrHandler
    Debug.Print 42/0
    Exit Sub
ErrHandler:
    Resume 'jumps back to the line that caused the error
    Resume Next 'resumes execution on the line right after the one that went boom
End Sub