谁能帮我?
在我的 Excel 工作簿中处理数组时,我遇到了编译错误(...:“Expected Array”)。
基本上,我有一个“母亲”数组(2D,Variant 类型)和四个“婴儿”数组(1D,Double 类型)。被调用的子例程创建公开声明的数组,我的主宏最终将其用于显示目的。不幸的是,最终的婴儿数组无效(给出“编译错误:预期数组”)。奇怪的是,如果我删除了这个最终的婴儿数组('final' - 按照声明/定义的顺序),倒数第二个婴儿数组开始出现问题。
这是我的代码:
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 出现“编译错误:预期的数组”问题?
谢谢,
埃利亚斯