为什么此子过程返回运行时溢出错误?

时间:2018-08-31 12:52:11

标签: excel vba excel-vba

试图了解数据类型,并正在测试此子过程。数据类型似乎适用于变量,但是除非将B变量更改为Single或Double,否则它不会起作用。这对我来说没有意义。当分配给它的值在Long数据类型的范围内时,为什么Long不起作用?我是否不了解某些有关数据类型的规则?

plt.ioff()

1 个答案:

答案 0 :(得分:2)

我认为问题出在可能与

相似的行中
A = B * 53976 

问题在于,VBA第一步评估表达式B * 53976的时间,只要它导致溢出即可。仅在第二步中,VBA会将其转换为两倍。您可以这样解决

A = CDbl(B) * 53976

或者您更改帖子中写的数据类型

另一个示例

Sub TestInt()

Dim myDbl As Double
Dim a As Integer, b As Integer

    a = 32000
    b = 1000
    myDbl = a + b

End Sub

这还会生成运行时错误6,因为数据类型整数限制为32565(或如此),但是代码首先将a + b相加,然后将结果放入整数,然后将其转换为双精度。

SO上的另一个示例here