VBA宏溢出

时间:2012-09-26 16:47:29

标签: vba excel-vba excel

此代码出现问题。 我的编码如下:

    fitvalchild1 = 0
    fitvalchild2 = 0

    For i = 1 To 30                            
        counter = 30

        Do While counter > 0
            fitvalchild1 = fitvalchild1 + child1(counter) * 2 ^ (i - 1)
            fitvalchild2 = fitvalchild2 + child2(counter) * 2 ^ (i - 1)
            counter = counter - 1
        Loop
    Next i

所有变量都声明为long ...

我仍然得到错误:溢出并且突出显示的行是:

fitvalchild1 = fitvalchild1 + child1(counter) * 2 ^ (i - 1)

2 个答案:

答案 0 :(得分:6)

Long数据类型的最大大小为2,147,483,647 2 ^(30-1)= 536,870,912
因此,根据child1(counter)fitvalchild1的值,您很容易超过最大值。

你将每个循环添加到自身的值,所以在4-5循环之后,你可能会得到错误。

如果您不介意从整数类型切换,可以尝试使用Currency数据类型。它的最大尺寸为922,337,203,685,477.5807

答案 1 :(得分:1)

长数据类型的范围是-2,147,483,648到2,147,483,647。 child1和child2中的值不需要非常大,因为2 ^ 29非常接近限制。