没有行号的错误消息

我在Visual Basic for Applications(6.5)中编写了一个小程序(macros),我正在使用集成到Excel 2007中的标准编辑器。

我的问题是,我得到没有任何行号信息的错误信息。 我不是指我的error handling或用户定义的消息。

例:

德语错误信息“1004”

错误消息说我有一个运行时错误“1004”。 我无法点击“debugging”button,只有“结束”和“帮助”可用。 因此,我没有看到错误发生在哪一行。 这是非常令人沮丧的。

我该如何解决这个问题?

VBAmacros中的这个错误通常表示滥用了Excel VBA函数。 你不会得到debugging信息,因为它将从debugging器无法访问的内部办公室代码抛出。

隔离失败的行的最好方法是在macros的顶部放置一个断点,然后逐行执行。 你也可以在栈中find你的代码行(虽然我不记得VBA中有多less这样的代码)。

如果您知道某些代码段出现故障,您可以将其添加到您的问题中,让我们来看看。

不能进入debugging模式的一个原因是VBA被保护 – VBA项目属性 – locking项目查看。

您需要手动添加行号并捕获错误。 在陷阱中,使用Erl获取行号。 我现在没有用Excel来检查我的语法,但是你的代码应该是这样的:

public sub Test() on error goto TestError 10 Dim i as Integer 20 Dim j as Integer 30 i = 1 40 j = 0 50 debug.Print i/j TestExit: exit sub TestError: debug.Print Err.Number, Err.Description, Erl goto TestExit end sub 

您可以在MZTools中创builderror handling程序“模板”,并将其快速应用到项目中的每个子/function。 当遇到错误时,像这样的模板会给你一个消息框,告诉你错误在哪个模块/子中,停止会导致代码中断,所以你可以按下F8,然后继续执行下一行代码那引发了错误。

  On Error GoTo {PROCEDURE_NAME}_ErrorHandler {PROCEDURE_BODY} NormalExit: Exit {PROCEDURE_TYPE} {PROCEDURE_NAME}_ErrorHandler: MsgBox "Error " & Err.Number & " (" _ & Err.Description & ") in {PROJECT_NAME}:{MODULE_NAME}:{PROCEDURE_NAME}" Stop Resume Next 

有时候这种错误发生在代码的密码保护部分内,特别是在加载项中,因为VBA不能移动它的debugging光标。 这就是为什么它不给你行号。