1

myArray という名前のグローバル配列があります。この配列には、別のファイルから取得した情報が格納されます。このプロシージャは、myArray に格納されたデータを処理し、正常に動作します。

ただし、プロシージャを 2 回目に起動すると、myArray がテストされる状態になります。IsEmpty(myArray) は false を返します。明らかに空ではありません。そのため、イミディエイト ウィンドウに「UBound(myArray)」と入力すると、エラー メッセージが表示されます。したがって、空ではありませんが、値はありません。また、IsNull(myArray) は false を返します。

これにより、myArray が空であるかどうかを確認する必要があり、そうでない場合は myArray の値に 1 つずつアクセスするため、コードが正しく機能しなくなります。明らかに、これにより2回目にエラーが発生します。

手順の最後に「Erase myArray」に疲れましたが、役に立ちません。

手がかりはありますか?

ありがとう、

編集:サンプルコード:

    Global myArray As Variant

    Sub tryMe()
    For i = 0 To 10
        If IsEmpty(myArray) Then
            ReDim myArray(0)
            myArray(0) = i
        Else
        tempVal = UBound(myArray)
        ReDim Preserve myArray(tempVal + 1)
        myArray(tempVal + 1) = i
        End If

    Next i
    MsgBox UBound(myArray)

    End Sub
4

0 に答える 0