vba - 在VBA中查找错误行号

标签 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将返回导致错误的调用。如果那是一个函数调用,那么您需要处理该函数中的运行时错误。

确保您永远不要在生产代码中留下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

关于vba - 在VBA中查找错误行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553813/

相关文章:

vba - 在 Excel 中调用 GetCrossReferenceItems(wdRefTypeHeading)

excel - 如何通过计划任务运行 Excel 宏

SQL 字符串太长

arrays - VBA - 创建空数组

ms-access - Access 中需要 DSum 对象

regex - 7 位数字的正则表达式,后跟可选的 3 个字母

vba - 为什么我的自动填充不起作用?

html - 使用 getelementbyID 时如何隔离多个 innertext 条目

sql - 计算一列中各行之间的 Datediff(超过 2 条记录)

vba - 如何根据 2 个单元格值在单元格中自动插入超链接