相关疑难解决方法(0)

为什么单元格(1,1)= 500*100会导致溢出但50000*100不会导致溢出?

好吧,我刚刚创建了一个简单的sub,它给出了溢出的错误.但是,我没有看到代码有什么问题,而且真的很奇怪,因为50000*100远大于500*100.

sub add()
    'This will cause an overflow error
    cells(1,1) = 500 * 100
    'But this won't
    cells(2,2) = 50000 * 100
end sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

65
推荐指数
3
解决办法
3895
查看次数

为什么使用整数而不是长?

我经常看到Overflow错误有关的问题.

我的问题是为什么使用integer变量声明而不是仅仅定义所有数值变量(不包括double等)long

除非您正在执行类似for循环的操作,您可以保证该值不会超过32,767的限制,否则是否会对性能产生影响或其他会导致不使用long

vba integer integer-overflow long-integer

59
推荐指数
6
解决办法
6万
查看次数

整数与长期混乱

我见过很多人相信以下内容

VBA将所有整数值转换为Long类型

事实上,即使是MSDN文章也

"但是,在最近的版本中,VBA将所有整数值转换为Long类型,即使它们被声明为Integer类型."

在此输入图像描述

这怎么可能?考虑这个简单的例子.

Sub Sample()
    Dim I As Integer
    I = 123456789
End Sub
Run Code Online (Sandbox Code Playgroud)

如果VBA将所有Integer值转换为类型,Long 即使它们被声明为Integer类型,那么上面的代码永远不会给你Overflow错误!

我在这里错过了什么?或者,我是否应该认为该陈述是错误的并且在开头时注意到该链接所说的内容

vba

22
推荐指数
3
解决办法
2万
查看次数

当它不应该时,excel VBA溢出错误

Sub TestFunction()
     Dim var As Double
     var = 25 * 24 * 23 * 22 * 21 * 20
End Sub
Run Code Online (Sandbox Code Playgroud)

我收到此vba操作的溢出错误.当我在具有功能的单元格中运行它时,我得到127,512,000

这可能是一个错误?这应该远低于此数据类型的大小限制吗?

excel vba overflow excel-vba

1
推荐指数
1
解决办法
1650
查看次数