RedimPreserveは要素を保持したまま要素数を増やすことが多いと思います。
開発案件で、配列arr(1 to 5)から、arr(3)~arr(5)を抜き出したい案件がありました。
配列をForで回し、3~5を入れなおすの面倒だなぁ。
そうだ。インデックス番号変更したらFilter関数的な動きをするのでは???
→試す→できませんでした!
RedimPreserveはフィルタの動きは出来ずインデックス番号が変わるだけ
Public Sub sample() Dim arr As Variant ReDim arr(1 To 5) arr(1) = 1 arr(2) = 2 arr(3) = 3 arr(4) = 4 arr(5) = 5 ReDim Preserve arr(3 To 5) '■結果 'arr(3)→1 'arr(4)→2 'arr(5)→3 '■以下のような甘い動作を期待していた 'arr(3)→3 'arr(4)→4 'arr(5)→5 End Sub
まとめ
- 甘い期待はせず、ちゃんとForでLoopして入れなおしましょう。
コメント