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