我试图找到我的代码崩溃的行号但是这个网站上的许多解释似乎对我的级别来说很复杂。
我的代码基本上如下,我不知道它在哪里打破。
Sub1
Call function1
Call function2
End Sub
本网站上的其他答案似乎只是一个简短的功能。但我不知道在我的代码中调用函数的位置或者如何获取弹出消息。如果我打算将我的sub1代码放入其功能中,我也不知道在哪里。初学者在这里。
答案 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
将返回导致错误的调用。如果这是函数调用,那么您需要处理该函数中的运行时错误。
确保您永远不要在生产代码中留下Stop
和Resume
条款:
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