此声明会导致 VBA 溢出:
Const OVERFLOWS As Long = 10 * 60 * 60
而直接设置值就可以了:
Const COMPILES_OK As Long = 36000
如何说服 VBA 将文字整数视为长整型?
谢谢
将
long
后缀 &
添加到至少一个数字:
Const OVERFLOWS As Long = 10& * 60 * 60
请注意,使用
CLNG
函数将值转换为 long
不起作用,因为 VBA 不允许将函数的返回值分配给常量。
http://support.microsoft.com/kb/191713 是对 VBA / VB4-6 中可用的类型声明字符的很好的总结。
对于那些觉得 & 符号有点深奥的人,另一种方法是使用 CLNG 函数,它将数字转换为 long
Const OVERFLOWS As Long = CLNG(10) * 60 * 60
然后你可以对单个常量做类似的事情
Const OVERFLOWS As Single = CSNG(10) * 60 * 60
类型字符也可以附加到文字上:
Const OVERFLOWS As Long = (10& * 60 * 60)
(实际上一个就足够了,因为 VBA 引擎计算表达式的方式)。