VBAでReDimを使って配列の無駄を省く

Pocket

VBAで配列を使うにはDimで宣言する必要がありますが、ReDimを使うと配列のサイズを変えることができます。
基本的な使い方をメモしておきます。

Sub test1()
    Dim a(10)
    ReDim a(20) '「配列は既に宣言されています。」
End

ReDimは配列のサイズを変える際に使うのですが、Dimで宣言した場合は、エラーになります。

Sub test2()
    ReDim a(10) '最初からReDimを使う。
    ReDim a(20) 'エラーにならない。
End

最初からReDimで宣言すると再度、宣言することができます。

Sub test3()
    ReDim a(10)
    a(0) = 100 '値を代入。
    ReDim a(20)
    MsgBox a(0) 'Empty値になる。
End

ただし代入されていた値は空になってしまいます。

Sub test4()
    ReDim a(10)
    a(0) = 100 '値を代入。
    ReDim Preserve a(20) 'Preserveを使う。
    MsgBox a(0) '値が表示される。Empty値にならない。
End

「Preserve」を使うと代入されていた値が空になりません。

Sub test5()
    ReDim a(10)
    a(0) = 100
    a(1) = 200
    a(2) = 300
    ReDim Preserve a(2) '添え字の最大値を減らす。
    MsgBox a(2) '要素はそのまま。
    MsgBox UBound(a) '添え字の最大値だけ小さくなる。
End

サイズが分からない配列を作るときはサイズを大きめに宣言するので使わない部分が無駄になります。
上述の性質を利用すると無駄を省くことができます。
まずReDimで大きめに宣言します。配列を使って処理します。配列のサイズが分かったところで、改めてReDimでサイズを宣言します。Preserveを使えば要素はそのままです。
配列の無駄な部分を省けます。

[ 2015年8月31日 | カテゴリー: Excel | タグ: , , ]

« | »

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

送信してください。


タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報