「excel vba 配列 redim preserve」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。
VBA(Visual Basic for Applications)の、動的配列の再宣言を行うReDimステートメントで見かけることのある、「Preserve」という語句について調べている方による検索です。
Preserveとは
Preserveキーワードについて一言でまとめるなら以下のとおりです。配列に格納されている値を残したまま、配列の最後の次元の要素数を変更するために、ReDim文の中で使用するキーワード
Preserveの動作を確認するサンプルマクロ
解説をただ読むよりも、実際にマクロを動かして配列変数の中身を確認するほうが、理解が早いでしょう。
Dim arr() As String
ReDim arr(2)
arr(0) = "あ"
arr(1) = "い"
arr(2) = "う"
Stop
ReDim Preserve arr(3)
arr(3) = "え"
Stop
ReDim arr(4)
arr(4) = "お"
Stop
サンプルマクロの解説
上記のマクロを実行すると、Stop文の箇所で中断されステップ実行モードになります。
ステップ実行の状態でメニュー[表示]-[ローカルウィンドウ]からローカルウィンドウを表示して、配列変数・arrの中に何が代入されているのかを確認しましょう。
1つ目のStop文、
ReDim arr(2)
arr(0) = "あ"
arr(1) = "い"
arr(2) = "う"
Stop
で中断されたときに、ローカルウィンドウを確認すると、下図のようになっているはずです。
配列・arr(0)からarr(2)に「あ」「い」「う」が格納されていることを確認したら、ショートカットキー[F5]で実行を継続しましょう。
2つ目のStop文、
ReDim Preserve arr(3)
arr(3) = "え"
Stop
で中断されたときは、下図のようになっているはずです。
先の「あ」「い」「う」につづいて、arr(3)に「え」が格納されています。
ReDim Preserveで、元の値を残したまま、配列の要素数を増やして、
ReDim Preserve arr(3)
その増やした配列の要素に「え」を代入したとおりの結果になっています。
arr(3) = "え"
このことを確認したら再度ショートカットキー[F5]で実行を継続です。
3つ目のStop文、
ReDim arr(4)
arr(4) = "お"
Stop
で中断されたときは、下図のようになっているはずです。
arr(4)には「お」が代入されていますが、arr(0)~arr(3)は「""」(空白文字列)になっています。
ReDim arr(4)
で、配列の要素を増やしたときに、Preserveキーワードがついていないために元の値は削除されて、つづく、
arr(4) = "お"
の代入によってarr(4)に「お」だけが格納された状態になっています。
ReDim Preserve arr(3)
のときには、元々格納されていたデータが残り、
ReDim arr(4)
ではデータは残っていません。
配列に格納されている値を残したまま、配列の最後の次元の要素数を変更するために、ReDim文の中で使用するキーワード
これが、Preserveキーワードの役割です。
- Newer:背景のスタイルを1枚にだけ適用したい
- Older:Word VBAで描画オブジェクト印刷の設定を変更する
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » VBAのReDim Preserveとは