こんにちは。
本日はVBAメモです。
概要
Collectionとクラスモジュールを使用して
複数件のデータを取得します。
サンプルコード
サンプルでは、以下を作成します。
- クラスモジュール(UserInfo)
- 標準モジュール
クラスモジュール(UserInfo)
ユーザー情報のクラスモジュールです。
' Id Public Id As String ' 名前 Public Name As String ' 年齢 Public Age As String
標準モジュール
実際の処理を記載するモジュールです。
Sub Main() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets(1) ' 使用している範囲を取得 Dim target As Range Set target = ws.UsedRange Dim items As Collection Set items = New Collection Dim r As Variant Dim rIdx As Integer Dim info As UserInfo For Each r In target.Rows rIdx = r.Row Set info = New UserInfo info.Id = ws.Cells(rIdx, 1) info.Name = ws.Cells(rIdx, 2) info.Age = ws.Cells(rIdx, 3) With items .Add Item:=info End With Set info = Nothing Continue: Next r Dim i As Variant For Each i In items Debug.Print (i.Id & ", " & i.Name & ", " & i.Age) Next i End Sub
実行結果
エクセルのターゲットシートに以下のデータが存在するとします。
行番号 | Id | Name | Age |
---|---|---|---|
1 | 1 | 太郎 | 50 |
2 | 2 | 花子 | 35 |
3 | 3 | 一郎 | 20 |
サンプルのコードを実行するとイミディエイトに以下が表示されます。
1, 太郎, 50 2, 花子, 35 3, 一郎, 20
シートの情報が取得できました。
以上です。