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 - 即使上面的行因为零而被破坏了。
为什么会出现此错误,并且(如果可能的话)如何防止错误发生?
答案 0 :(得分:0)
我猜测 MaxTheta 被声明为long或整数。如果是这种情况,那么它不能包含整数的小数部分,只能包含整数部分。如果它是小于 1 或Int(MaxTheta)
或CInt(MaxTheta)
的小数(当MaxTheta小于0.5时),它将被解析为零。解决方案:将 MaxTheta 声明为 double 。 DEGREES function可以使用double作为 参数