二次元配列のReDim(失敗談)
こんな二次元配列があったとする。イメージを伝えやすくするため、Excelのテーブルで表現してみる。
それで、とある理由から、上記の表1列目に相当するデータが不要になった。
そこで、このように考えた。
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
さて、結果は・・・あれ?
つまり、↓こうなったわけで。
あたまを削ったつもりが、実は
- 2番目(実質1番目)、3番目(実質2番目)・・・
というように、お尻の方が削れてしまった。
そんなに都合良くは行かなかった、というお話(失敗談)。
参考まで。