Excel VBA 在调试模式下不给出错误消息

问题描述 投票:0回答:3

我正在 Excel 中编写一些宏,一切都很顺利。

目前,一切仍然正常工作,但我遇到了一个奇怪的问题,并且找不到任何有关它的线程。

当程序遇到代码错误时,例如类型不匹配或错误引用(下面的示例),它不会破坏罪魁祸首行的代码,而只是中止整个宏并和平地结束它,没有任何消息或任何东西。

就像我不小心更改了某个设置或某些内容,导致调试器不再用调试消息来打扰我。

请帮忙!我希望我的错误消息和“及时”恢复!

Dim Margin As Double

If COS <> 0 Then
  Margin = Round((SALES - COS) / COS * 100, 2)
Else
  Margin = "???"
End If

或者喜欢错误的参考:

Dim that_cell as string
that_cell = "5"
Range(that_cell).Select

谢谢,

皮卡

excel vba debugging
3个回答
4
投票

过去几天我刚刚遇到了同样的问题。 我花费了大量时间使用 VBA 扩展 Access,但从来没有遇到过这样的问题。 但是,我知道错误捕获选项以及何时使用每个选项。 所以,令我懊恼的是,为了修复这个错误,我不得不做与我所建议的不直观的相反的事情。 实际上,我将错误捕获选项更改为“出现所有错误时中断”。 突然之间,我得到了我习惯的调试选项。

现在,显然,一旦您将一段代码投入生产,您需要选择“在未处理的错误上中断”(并祈祷您已经捕获并计划了每个可预见的错误......)。


0
投票

我刚刚遇到了一个类似的问题,这是由于我尝试将默认值 0 分配给可选范围对象而引起的:

Function test(rng1 as Range, Optional rng2 = 0)
    test = "Never gets to this line"
End Function

函数返回

#VALUE
错误,但不让你进入调试模式来发现是函数声明行导致了错误。

我知道尝试为范围对象赋值是一个菜鸟错误,但如果其他人难以进入调试模式,则可能是因为您错误地为参数列表中的对象赋值。


0
投票

我目前也遇到了同样的问题——在原始帖子发布多年后。 此线程上的答案没有帮助。 Excel VBA 已在“工具”>“选项”>“常规”中设置为“出现所有错误时中断”。 此外,我还在主 Excel 信任中心选项窗口中启用了对 VBA 对象模型的访问,并完全信任该工作簿。

我的宏正在运行,但如果存在代码问题,则宏会自动停止运行,并且单元格中会显示 #VALUE 错误。 我写宏很多年了,从来没有遇到过这个问题。

如果有人可以阐明这一点,那将是一个救星!

© www.soinside.com 2019 - 2024. All rights reserved.