なんだかGoodVibes

日々の勉強メモです。

【VBA】Collectionとクラスを使ってデータを取得する

こんにちは。
本日は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

シートの情報が取得できました。



以上です。