在 VBA 中计算 const 时发生溢出

问题描述 投票:0回答:4

此声明会导致 VBA 溢出:

Const OVERFLOWS As Long = 10 * 60 * 60

而直接设置值就可以了:

Const COMPILES_OK As Long = 36000

如何说服 VBA 将文字整数视为长整型?

谢谢

vba constants overflow
4个回答
14
投票

long
后缀
&
添加到至少一个数字:

Const OVERFLOWS As Long = 10& * 60 * 60

请注意,使用

CLNG
函数将值转换为
long
不起作用,因为 VBA 不允许将函数的返回值分配给常量。


4
投票

http://support.microsoft.com/kb/191713 是对 VBA / VB4-6 中可用的类型声明字符的很好的总结。


4
投票

对于那些觉得 & 符号有点深奥的人,另一种方法是使用 CLNG 函数,它将数字转换为 long

Const OVERFLOWS As Long = CLNG(10) * 60 * 60

然后你可以对单个常量做类似的事情

Const OVERFLOWS As Single = CSNG(10) * 60 * 60

3
投票

类型字符也可以附加到文字上:

Const OVERFLOWS As Long = (10& * 60 * 60)

(实际上一个就足够了,因为 VBA 引擎计算表达式的方式)。

© www.soinside.com 2019 - 2024. All rights reserved.