配列(一次元/二次元)

RedimPreserveはフィルタの動きは出来ずインデックス番号が変わるだけ【ExcelVBA】

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

まとめ

関連記事

コメント

タイトルとURLをコピーしました