その他関連のテクニック

ユーザー定義型変数

(Excel 97/2000/2002/2003/2007)
VBAでは、1つの変数に、異なる複数のデータ型を内包することができます。
こうした変数を「ユーザー定義型」と呼びます。
C言語などの「構造体」と同じ考え方です。

ユーザー定義型は、複数のデータ型を1つにまとめて、ユーザーが独自の型を定義する機能です。
たとえばVBA標準の「文字列型」は文字列だけを格納するための型ですし、「整数型」は整数しか格納できない専用の型です。
それらVBAが標準で持っているデータ型を寄せ集めて、独自の型として定義できます。

ここでは、文字列と数値を格納できるユーザー定義型を作ってみましょう。
ユーザー定義型は、どんな構造にするかをTypeステートメントで指定します。
記述するのは宣言セクションです。

Type myType
  Name As String
  Age As Long
End Type

Sub Sample1()
  Dim UserData As myType
  UserData.Name = "tanaka"
  UserData.Age = 39
  MsgBox UserData.Name & vbCrLf & UserData.Age
End Sub
プロシージャの中で宣言している変数UserDataにユーザー定義型を指定しています。 ここで宣言したユーザー定義型「myType」には、文字列を格納するNameと数値を格納するAgeを定義しています。 変数UserDataは、NameとAgeという小部屋を2つ持っているようなイメージです。 こうしたユーザー定義型が便利なのは、定型のデータ群を扱うときです。 セル範囲A1:A5に名前、セル範囲B1:B5に年齢が入力されているとき、この5人分のデータは次のように操作できます。
Sub Sampl2()
  Dim i As Long, cnt As Long, UserData(5) As myType
  For i = 1 To 5
    UserData(i).Name = Cells(i, 1)
    UserData(i).Age = Cells(i, 2)
  Next i
  cnt = Val(InputBox("何人目のデータを表示しますか(1〜5)"))
  If cnt < 1 Or 5 < cnt Then Exit Sub
  MsgBox UserData(cnt).Name & vbCrLf & UserData(cnt).Age
End Sub
●補足● 宣言セクションとは、モジュールのコードウィンドウで、最上部のプロシージャより上の領域です。