簡體   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