配列(一次元/二次元)

二次元配列の一次元目を増やす場合、Transposeを使って65537件以上のデータを処理した場合

二次元配列の一次元目の要素を増やすには以下方法があります。

実際には65537件以上はTranspose関数を利用した場合は正常にデータ取得できません。
どのような結果になるか検証しました。

Transposeを使って65537件以上のデータを処理したら?

Public Sub test()
    Dim arr As Variant

    '■配列の宣言
    ReDim arr(1 To 65537, 1 To 30)
    
    '■arr(1 To 65538, 1 To 30)なるはずが、arr(1 To 2, 1 To 30)に変換されてしまう
    arr = Call_RedimPreserveArray(arr, 65538)
    '■その為実効時エラー9 インデックスが有効範囲にありませんが表示されてしまう
    Debug.Print arr(65536, 1)
End Sub

結果

65536を超える(65537以上になると)下方から差し引いた要素数の配列になってしまう。
※Transpose Methodには制限(2^16 =65536)があるため。

配列の一次元目を増やしたい場合は、別配列に代入しましょう。

関連記事

コメント