ExcelVBA ユーザー定義型で複数の関連データを一つにまとめて扱う方法

 

ExcelVBA 「ユーザー定義型」を使用することで、複数の関連データを一つの単位(構造体)としてまとめて扱えるようにします。これにより、コードの可読性とメンテナンス性が向上します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA ユーザー定義型 利用シーン

以下のようなシーンで利用で表示します。

1.顧客情報(名前、住所、電話番号など)のような関連データを1つの型でまとめる。

2.配列やコレクションで複雑なデータを管理する際に便利

3.複数のデータを1つの関数やプロシージャで簡単にやり取りする。

使い方

ユーザー定義型は、標準モジュールで定義し、プロシージャや関数で使用します。

1.定義する場所
ユーザー定義型は、標準モジュール内に定義します。

2.定義の構文

Type 型名
 メンバ1 As データ型
 メンバ2 As データ型
 ...
End Type

ポイント

1.標準モジュールに定義
ユーザー定義型は標準モジュール内で定義する必要があります。他のモジュールやフォームモジュール内には定義できません。

2.PublicまたはPrivateの指定
型のスコープを意識して、適切に Public や Private を使用します。

3.名前の競合に注意
型名が既存のVBAキーワードや他の変数名と競合しないようにします。

 

Excel VBA  ユーザー定義型のサンプルコード

標準モジュール(ユーザー定義型の定義)

Option Explicit

Public Type CustomerInfo
    Name As String
    Address As String
    PhoneNumber As String
End Type

Sub TestUserDefinedType()
    ' ユーザー定義型の変数を宣言
    Dim customer As CustomerInfo

    ' メンバに値を設定
    customer.Name = "山田 太郎"
    customer.Address = "東京都千代田区"
    customer.PhoneNumber = "012-3456-7890"

    ' 値を表示
    MsgBox "名前: " & customer.Name & vbCrLf & _
           "住所: " & customer.Address & vbCrLf & _
           "電話番号: " & customer.PhoneNumber
End Sub

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

標準モジュール(複数の顧客情報を管理する場合に配列で使用)

Option Explicit

Public Type CustomerInfo
    Name As String
    Address As String
    PhoneNumber As String
End Type

Sub TestArrayWithUserDefinedType()
    Dim customers(1 To 2) As CustomerInfo

    ' 1人目のデータを設定
    customers(1).Name = "山田 太郎"
    customers(1).Address = "東京都千代田区"
    customers(1).PhoneNumber = "012-3456-XXXX"

    ' 2人目のデータを設定
    customers(2).Name = "鈴木 花子"
    customers(2).Address = "大阪府大阪市"
    customers(2).PhoneNumber = "098-7654-YYYY"

    ' データを表示
    Dim i As Integer
    For i = LBound(customers) To UBound(customers)
        MsgBox "名前: " & customers(i).Name & vbCrLf & _
               "住所: " & customers(i).Address & vbCrLf & _
               "電話番号: " & customers(i).PhoneNumber
    Next i
End Sub

 ユーザー定義型は必ず標準モジュール内で定義する。PublicまたはPrivateを指定して、スコープを適切に管理。配列や複雑なデータ構造での使用はコードの効率を向上させます。

エラーが出たら、まず定義場所とスペルを確認してください。

これらのポイントを押さえれば、初心者でもユーザー定義型を安心して活用できます。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問