繁体   English   中英

EXCEL VBA错误:“编译错误:预期数组”

[英]EXCEL VBA Error: “Compile Error: Expected Array”

谁能帮我?

在处理Excel工作簿中的数组时,我遇到了编译错误(...:“预期数组”)。

基本上,我有一个'母'阵列(2D,Variant类型)和四个'baby'阵列(1D,Double类型)。 被调用的子例程创建公开声明的数组,我的主宏最终用于显示目的。 不幸的是,婴儿阵列的最后一个出来了(给出了“编译错误:预期数组”)。 奇怪的是,如果我删除这个最终的婴儿阵列('最终' - 按照声明/定义的顺序),第二个到最后一个婴儿阵列开始剔除。

这是我的代码:

 Public Mother_Array() as Variant, BabyOne_Array(), BabyTwo_Array(), BabyThree_Array(), BabyFour_Array() as Double 'declare may other variables and arrays, too

Sub MainMacro()
    'do stuff

   Call SunRaySubRoutine(x, y)

    'do stuff

    Range("blah") = BabyOne_Array: Range("blahblah") = BabyTwo_Array
    Range("blahbloh" = BabyThree_Array: Range("blahblue") = BabyFour_Array

End Sub

Sub SunRaySubRoutine(x,y)
    n = x * Sheets("ABC").Range("A1").Value + 1

    ReDim Mother_Array(18, n) as Variant, BabyOne_Array(n), BabyTwo_Array(n) as Double
    ReDim BabyThree_Array(n), BabyFour_Array(n) as Double

    'do stuff

    For i = 0 to n

        BabyOne_Array(i) = Mother_Array(0,i)
        BabyTwo_Array(i) = Mother_Array(2,i)
        BabyThree_Array(i) = Mother_Array(4,i)
        BabyFour_Array(i) = Mother_Array(6,i)
    Next        

End Sub

我试图将所有数组声明为Variant类型,但无济于事。 我试图给BabyFour_Array()一个不同的名字,但无济于事。

真正奇怪的是,即使我注释掉了组成BabyFour_Array()的部分,该数组的每个元素仍然具有零值。

还有一点奇怪的是,第一个婴儿阵列从来没有扯过(尽管,第二个婴儿阵列被淘汰一次(一次可能30次)。

BANDAID:作为一个临时修复,我只是公开声明了第五个虚拟数组(没有填充或重新标注)。 除了“编译错误:预期数组”之外,该第五个数组除了欺骗系统之外没有实际用途。

有谁知道Excel VBA导致这个​​“编译错误:预期数组”问题是什么?

谢谢,

埃利亚斯

在全局声明中,您仅将最后一个婴儿数组声明为Double 您将前三个声明为Variants数组。 但是在子程序中,你正在Redimming婴儿一和三Redimming为变体,将两个和四个RedimmingRedimming

请参阅此Chip Pearson页面并向下滚动到“注意使用一个暗淡声明声明的变量”。

在VBA中,当您声明类似于:

Dim x, y, z as Long

只有z是Long ,其余都是Variants 正确的形式是:

Dim x as Long, Y as Long, Z as Long (或您的Double数组。)

您可以看到这将导致您描述的行为,即最后一个错误,但其他错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM