我试图找到行号,我的代码崩溃,但在这个网站上的许多解释似乎很复杂,我的水平。在VBA中查找错误行号
我的代码基本如下,我不知道它在哪里打破。
Sub1
Call function1
Call function2
End Sub
本网站上的其他答案似乎只是一个简短的功能。但是我不知道在哪里调用我的代码中的函数或如何获得弹出消息。如果我打算把我的sub1代码放到他们的函数中,我也不知道在哪里。初学者在这里。
我试图找到行号,我的代码崩溃,但在这个网站上的许多解释似乎很复杂,我的水平。在VBA中查找错误行号
我的代码基本如下,我不知道它在哪里打破。
Sub1
Call function1
Call function2
End Sub
本网站上的其他答案似乎只是一个简短的功能。但是我不知道在哪里调用我的代码中的函数或如何获得弹出消息。如果我打算把我的sub1代码放到他们的函数中,我也不知道在哪里。初学者在这里。
如果你的代码没有行号,那么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
尽管编程VBA已经有十多年了,但我并不了解'Erl'。我喜欢Stack Overflow - 你每天都会学到新的东西。 –
我也是,5年在VBA,现在只有我想到这个。曾经有一段时间,我看到某人的代码用数字标注每一行,并想到为什么h ***会有人标出每一行......现在我知道为什么了:D – Rosetta
你不采取当你按下'Debug'提示上发生错误的代码?也应该是'Sub One()'而不是'Sub1' – newguy
“我的代码基本上如下”。有什么理由为什么你发布的东西“基本上”是你的代码而不是你的实际代码? –