Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA中计算常量时溢出_Vba_Constants_Overflow - Fatal编程技术网

在VBA中计算常量时溢出

在VBA中计算常量时溢出,vba,constants,overflow,Vba,Constants,Overflow,此声明导致VBA中溢出: Const OVERFLOWS As Long = 10 * 60 * 60 而直接设置该值则可以: Const COMPILES_OK As Long = 36000 如何说服VBA将文字整数视为长整数 谢谢将长后缀&添加到至少一个数字: Const OVERFLOWS As Long = 10& * 60 * 60 请注意,使用CLNG函数将值转换为long将不起作用,因为VBA不允许将函数的返回值指定给常量。类型字符也可以附加到文字:Const OV

此声明导致VBA中溢出:

Const OVERFLOWS As Long = 10 * 60 * 60
而直接设置该值则可以:

Const COMPILES_OK As Long = 36000
如何说服VBA将文字整数视为长整数


谢谢

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

Const OVERFLOWS As Long = 10& * 60 * 60

请注意,使用
CLNG
函数将值转换为
long
将不起作用,因为VBA不允许将函数的返回值指定给常量。

类型字符也可以附加到文字:Const OVERFLOWS As long=(10&*60*60)
(由于VBA引擎对表达式求值的方式,其中一个很有说服力)。

是VBA/VB4-6中可用类型声明字符的一个很好的总结。

对于那些认为&符号有点深奥的人,另一个选择是使用CLNG函数,该函数将数字转换为长字符

Const OVERFLOWS As Long = CLNG(10) * 60 * 60
然后你可以对一个常数做类似的事情

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

问题的原因是Access中的默认数字类型为整数。我认为类型声明字符使用较少,而dbb建议的Clng等是首选。