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

 

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

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 VBAを学んで社内評価を上げる方法はこちら

 

 

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  ユーザー定義型のサンプルコード

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません
👉 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

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

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で自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

「VBAスキルを証明できれば、社内評価アップにつながるかもしれません