2

誰でも私を助けることができますか?

Excel ワークブックで配列を処理すると、コンパイル エラー (...: "Expected Array") が発生します。

基本的に、1 つの「母」配列 (2D、バリアント型) と 4 つの「赤ちゃん」配列 (1D、Double 型) があります。呼び出されたサブルーチンは、メイン マクロが最終的に表示目的で使用する公に宣言された配列を作成します。残念ながら、赤ちゃんの配列の最後のものは失敗します(「コンパイルエラー:予想される配列」を与えます)。不思議なことに、この最後の赤ちゃんの配列 ('final' - 宣言/定義の順序のように) を削除すると、最後から 2 番目の赤ちゃんの配列が壊れ始めます。

これが私のコードです:

 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

すべての配列をバリアント型として宣言しようとしましたが、役に立ちませんでした。BabyFour_Array() に別の名前を付けようとしましたが、役に立ちませんでした。

本当に奇妙なのは、BabyFour_Array() を作成する部分をコメントアウトしても、配列の各要素の値がゼロのままであることです。

また、少し奇妙なのは、最初の赤ちゃんの配列がまったく失敗しないことです (ただし、2 番目の配列は 1 回 (おそらく 30 回に 1 回) 失敗します)。

BANDAID: 一時的な修正として、5 番目のダミー配列を公に宣言しました (これは、塗りつぶされたり、再次元化されたりしません)。この 5 番目の配列は、「コンパイル エラー: 配列が必要です」というエラーが発生しないようにシステムをだます以外に、実際の用途はありません。

Excel VBAでこの「コンパイルエラー: 配列が必要です」という問題の原因を知っている人はいますか?

ありがとう、

エリアス

4

1 に答える 1