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

谁能帮我?

我在处理Excel工作簿中的数组时遇到了编译错误(…:“Expected Array”)。

基本上,我有一个“母亲”arrays(2D,Varianttypes)和四个“宝贝”arrays(1D,双重型)。 被调用的子程序创build公共声明的数组,我的主macros最终用于显示目的。 不幸的是,婴儿arrays的最后阶段(给出了“编译错误:预期数组”)。 奇怪的是,如果我删除这个最后的婴儿arrays('最后' – 按照声明/定义的顺序),倒数第二个婴儿arrays开始放出。

这是我的代码:

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 

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

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

也有点奇怪的是,第一个婴儿数组从未出现过(尽pipe第二个婴儿数量已经减less了一次(大约是30次中的一次)。

BANDAID:作为一个临时的解决scheme,我刚刚公布了第五个虚拟数组(没有被填充或重新定义)。 这个第五个数组没有实际的用处,除了欺骗系统以外的“Compile Error:Expected Array”。

有没有人知道是什么导致Excel VBA的“编译错误:预期数组”的问题?

谢谢,

埃利亚斯

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

看到这个Chip Pearson页面 ,向下滚动到“注意用一个声明声明的variables”。

在VBA中,当你声明如下的东西时:

 Dim x, y, z as Long 

只有z是一个Long ,其余的是Variants 。 正确的forms是:

Dim x as Long, Y as Long, Z as Long (或Double array in your case。)

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