【问题标题】:Why does a runtime error '9' (division by zero) occur where there is no division为什么在没有除法的情况下会出现运行时错误“9”(除以零)
【发布时间】:2015-03-24 01:14:11
【问题描述】:
If Application.WorksheetFunction.Degrees(MaxTheta) > 45 Then

在打开工作簿后子程序第一次运行时,Vba 会在此行中断。当 vba 中断时,变量 MaxTheta 的值为 0.481710873550436。一个消息框显示:“运行时错误'9':被零整除”并突出显示上述行。上面的行不包含 0 甚至是除法。奇怪的是,该错误仅在打开工作簿后发生一次,并且当重置项目并再次运行子程序时,该错误不会发生。
澄清一下,MaxTheta 的所有值都会出现错误,我已经搜索了所有代码行和包含公式的单元格以求被零整除。

当我将这些行拆分为以下行时,vba 在第二行中断(deg = Application.Wor...)

 Dim deg As Double
 deg = Application.WorksheetFunction.Degrees(MaxTheta)
 If deg > 45 Then

在即时窗口中,我输入了 ?Application.WorksheetFunction.Degrees(MaxTheta),它给了我 27.6 - 即使上面的行被零整除。

为什么会发生此错误以及(如果可能)如何防止它发生?

【问题讨论】:

    标签: excel vba macos


    【解决方案1】:

    我猜 MaxTheta 被声明为长整数或整数。如果是这种情况,那么它不能包含整数的小数部分,只能包含整数部分。当它小于 1Int(MaxTheta)CInt(MaxTheta)(当 MaxTheta 小于 0.5 时)时,它被解析为 0。解决方案:将 MaxTheta 声明为 doubleDEGREES function 可以使用 double 作为 参数

    【讨论】:

    • MaxTheta 是双精度数。
    猜你喜欢
    • 2015-04-16
    • 2020-08-11
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2022-01-08
    相关资源
    最近更新 更多