「Excel VBAで配列を使いたいけど、データ量が変わるときはどうすればいいの?」
そんな疑問を解決するのが、動的配列です!この記事では、動的配列を使う際の基本ルールから、ReDimステートメントを活用したサイズ変更の方法、エラーを防ぐコツまでを初心者向けに丁寧に解説します。これを読めば、動的配列を使った効率的なデータ処理ができるようになりますよ!
インプレス
¥2,288 (2024/12/20 13:08時点 | Amazon調べ)
ポチップ
1. 動的配列とは?
動的配列とは、プログラム実行中にサイズを変更できる配列のことです。固定サイズの配列と異なり、データ量が変化する状況に柔軟に対応できます。
2. 動的配列の宣言方法
動的配列を宣言するには、以下のように配列のサイズを指定せずに宣言します。
1 |
Dim myArray() As String |
サイズを指定する場合は、ReDim
ステートメントを使用します。
3. ReDimステートメントで配列サイズを変更
基本の使い方
配列のサイズを設定するには、次のコードを使用します。
1 |
ReDim myArray(1 To 5) |
これにより、myArray
は5つの要素を持つ配列に変わります。
サイズを再設定する
配列のサイズを再設定する場合も、ReDim
を使います。
1 |
ReDim myArray(1 To 10) |
ただし、この操作では元の配列データが失われる点に注意が必要です。
4. データを保持するには「Preserve」を使用
データを保持しながらサイズを変更するには、Preserve
キーワードを使います。
1 |
ReDim Preserve myArray(1 To 10) |
Preserve
を使う際の注意点:
- 配列の最後の次元のみサイズ変更が可能です。
例: 2次元配列の場合
1 |
ReDim Preserve myArray(1 To 3, 1 To 10) |
5. 実用例
データを動的に追加
次のコードは、ユーザー入力に応じて配列を動的に拡張する例です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub DynamicArrayExample() Dim myArray() As String Dim i As Integer Dim inputValue As String i = 0 Do inputValue = InputBox("値を入力してください (キャンセルで終了):") If inputValue = "" Then Exit Do i = i + 1 ReDim Preserve myArray(1 To i) myArray(i) = inputValue Loop ' 結果をシートに出力 For i = LBound(myArray) To UBound(myArray) Cells(i, 1).Value = myArray(i) Next i End Sub |
条件に応じた配列のフィルタリング
動的配列を使って条件を満たすデータだけを保存する方法です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
Sub FilterDynamicArray() Dim numbers() As Integer Dim filtered() As Integer Dim i As Integer, j As Integer ' 元の配列を定義 numbers = Array(10, 25, 30, 15, 50) ' 条件に合う要素を保存 j = 0 For i = LBound(numbers) To UBound(numbers) If numbers(i) > 20 Then j = j + 1 ReDim Preserve filtered(1 To j) filtered(j) = numbers(i) End If Next i ' 結果を出力 For i = LBound(filtered) To UBound(filtered) Debug.Print filtered(i) Next i End Sub |
6. 動的配列を使う際の注意点
- 初期化の忘れ: 配列を
ReDim
で初期化しないとエラーになります。 - 範囲外エラー: サイズを変更後、適切に範囲チェックを行う必要があります。
- 不要な配列の削除: メモリを節約するために、不要になった配列を解放することを忘れないでください。
まとめ
動的配列を使えば、Excel VBAで効率的かつ柔軟なプログラムを作成できます。ReDimやPreserveをマスターすることで、可変データにも対応可能です。初心者の方も、まずは基本の使い方から実践してみましょう!
インプレス
¥2,288 (2024/12/20 13:08時点 | Amazon調べ)
ポチップ
コメント