[英]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
為變體,將兩個和四個Redimming
為Redimming
。
請參閱此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.