为什么运行时错误' 9' (除以零)发生在没有除法的地方

时间:2015-03-24 01:14:11

标签: vba excel-vba excel-vba-mac excel

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 - 即使上面的行因为零而被破坏了。

为什么会出现此错误,并且(如果可能的话)如何防止错误发生?

1 个答案:

答案 0 :(得分:0)

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