サイトについて      連絡先   検索

VBA 構造体

はじめに

Excel VBA で構造体(Type)の使い方を紹介します。

複数のフィールド (変数) を定義できるので、それぞれの値に関連性ができます。

関数やコンストラクタは作成できません。

構造体の定義

Private Type 構造体名のようにして宣言します。他の関数より上に定義できます。Public で定義できるのは標準モジュールのみです。

構造体の中にフィールド (変数) を定義します。


Private Type Point
    X As Integer
    Y As Integer
End Type

' Public は標準モジュールでのみ定義できる
Public Type Size
    Height As Integer
    Width As Integer
End Type

構造体の操作

構造体.フィールドのようにして各フィールドの値を取得または設定できます。


' 初期化と設定
Dim p As Point
p.X = 10
p.Y = 20

' 取得
Dim i As Integer
i = p.X
Debug.Print (i) ' 10

構造体を同じ型の別の変数に入れることでコピーできます。


Dim p1 As Point
p1.X = 10
p1.Y = 20

Dim p2 As Point
p2 = p1 ' コピーする
Debug.Print (p2.X) ' 10
Debug.Print (p2.Y) ' 20

VBA の構造体にはコンストラクタはありません。

構造体の配列

構造体を配列にするのに特別なことは一切ありません。変数を配列で宣言するのとまったく同じです。

構造体を配列化


Dim p(3) As Point
p(0).X = 10

フィールドを配列化


Private Type Point
    X(3) As Integer
    Y()  As Integer
End Type

Sub Tips
    Dim p As Point
    p.X(0) = 10
    ReDim Preserve p.Y(5)
    p.Y(0) = 20
End Sub

テーブルのデータを取得するときなど、多くのデータを操作するときに構造体が役に立ちます。構造体をレコード、フィールドを列として考え、構造体を配列にすると複数のレコードを受け取れます。

関連ページ