二次元配列のReDim(失敗談)

こんな二次元配列があったとする。イメージを伝えやすくするため、Excelのテーブルで表現してみる。
f:id:Infoment:20190212215430p:plain
それで、とある理由から、上記の表1列目に相当するデータが不要になった。
f:id:Infoment:20190212220030p:plain

そこで、このように考えた。

Redimで配列の要素数を「1~11」(図ではA~K列)を、「2~11」(図ではB~K列)にすれば、事足りるのではないか。

試してみた。今回は当時を再現するために、上記表の値を一旦配列に入れて、要素数を変更ののちシートに貼り直してみる。

Sub test()
    ' データを配列に格納。
    Dim seq As Variant
        seq = Range("A1").CurrentRegion
    
    ' 値を保持したまま、配列の要素数を変更。
    ReDim Preserve seq(1 To UBound(seq, 1), _
                       2 To UBound(seq, 2))
    
    ' 上記配列をシートに貼り付ける。
    Range("A22").Resize(UBound(seq, 1) - LBound(seq, 1) + 1, _
                        UBound(seq, 2) - LBound(seq, 2) + 1) = seq
End Sub

さて、結果は・・・あれ?
f:id:Infoment:20190212221045p:plain

つまり、↓こうなったわけで。
f:id:Infoment:20190212221211p:plain

あたまを削ったつもりが、実は

  • 2番目(実質1番目)、3番目(実質2番目)・・・

というように、お尻の方が削れてしまった。

そんなに都合良くは行かなかった、というお話(失敗談)。

参考まで。