ユーザー定義のデータ型を宣言する~Private Type宣言

エクセルVBAの変数には文字列型や整数型など様々ありますが、自分でデーター型を作るのが今回のテーマです。

例えば家計簿などを作るときには、買い物をした日付や品物の名前、金額などがあります。
通常は日付データや金額データを入れるための変数を別々に宣言してそれぞれにデーターを入れるということになります。例えば下の例の様にです。

Dim Hiduke as Date
Dim Sinamono as String
Dim Kingaku as Currency

上の例ではHidukeという名前の「日付型 (Date)」、Sinamonoという名前の「文字列型 (String)」、そしてKingakuという名前の「通貨型 (Currency)」
をそれぞれに宣言しています。

これらを一つの束(グループ)にしてしまおうというものがユーザー定義のデーター型(変数)を宣言するということです。

Private Type Okaimono
  Hiduke as Date
  Sinamono as String
  Kingaku as Currency
End Type

上の例ではOkaimonoという任意の名前のデーター型(変数)を作り、HidukeもSinamonoもKingakuもその中に含めてしまっています。いわば「いっぱひとからげ」の状態です。

こうすると何が良いのか次に述べて見たいと思います。下に例を挙げました。

---------------------------------------------—-
Private Type MemberData
    Simei1 As String
    Simei4 As String
    Hoken1 As String
    Hoken2 As String
    Hoken3 As String
    Hoken4 As String
    Hoken5 As String
    Hoken6 As String
End Type
Dim OldMember() As MemberData

Private Sub Member()
    ReDim OldMember(MaxRows)
    l = 0
    With Touseki
        For i = 2 To MaxRows
            With OldMember(l)
                .Simei1 = Touseki.Cells(i, 3)
                .Simei4 = Touseki.Cells(i, 2)
                .Hoken1 = Touseki.Cells(i, 20)
                .Hoken2 = Touseki.Cells(i, 21)
                .Hoken3 = Touseki.Cells(i, 22)
                .Hoken4 = Touseki.Cells(i, 23)
                .Hoken5 = Touseki.Cells(i, 24)
                .Hoken6 = Touseki.Cells(i, 25)
            End With
            l = l + 1
        Next
        Maxl = l
    End With
End Sub
--------------------------------------------------

上の例ではMemberDataというデーター型を作りました。そしてそのデータ型を使ってOldMemberという変数を宣言しています。いうなれば、OldMemberという変数はMemberDataというデーター形ですよ(ちょっとややこしいいですが…)といっています。

MemberDataの中には患者さんの氏名(Simei1は漢字、Simei2はカタカナ)と保険番号(6個)を格納するための変数が”ひとからげ”になっています。
これら8個の変数が集まって一つのデータ型を作っているといえるでしょう。いうなれば8個のグループです。

幼稚園でも小学校でも良いのですが、呼び出すときに「よしおくん」と「ゆうたくん」と「ゆかりちゃん」と「はなこちゃんと」「ひさしくん」「みきおくん」と「さゆりちゃん」と「とおるくん」集まって!と一人一人の名前を呼んで集めるよりも、8人をグループに入れて「ひまわり組」の人は集まって!とグループ名で呼んだほうが簡単で早いです。

それと同じ事をここではやっています。ひまわり組に当たるのがユーザー定義型で宣言されたOldMemberでありその中の一人一人の園児がSimei1でありSimei4でありHoken1です。

コメント