Option Explicit '個人クラス 'プロパティは、メンバー以外アクセスできない。 'プロパティの実体 Private mvntData() As Variant '配列 Private mlngPID As Long '主キー Private mstrName As String '名前 Private mintSex As Integer '性別;男「0」;女「1」;不明「2」 Private mintEmploy As Integer '雇用体系;役員「0」;一般「1」;パート「2」;アルバイト「3」 Private mintZaisyoku1 As Integer '在職区分;在職「0」;中途入社「1」 Private mintZaisyoku2 As Integer '在職区分;在職「0」;死亡退職「1」;普通退職「2」 Private mdatDate() As Date '日付 '(0)生年月日 '(1)入社年月日 '(2)退社年月日 Private mstrPostNumber As String '郵便番号 Private mstrAddress As String '住所 Private mstrTelphone As String '電話番号 Private mlngKoujo() As Long '控除 '(0)基礎控除 '(1)一般の寡婦(寡夫) '(2)特別の寡婦 '(3)老年者 '(4)勤労学生 '(5)控除対象配偶者控除 '(6)老人控除対象配偶者 '(7)扶養控除 '(8)特定扶養家族 '(9)同居老親等 '(10)同居老親以外の老人扶養家族 '(11)一般の障害者 '(12)特別障害者 '(13)同居特別障害者 '(14)本人が一般の障害者 '(15)本人が特別の障害者 Private mintKouOtu As Integer '甲欄乙欄区分;甲欄「0」;乙欄「1」 '一覧表ワークシートへ移動 Public Sub MoveData(ByVal objws As Worksheet, ByVal lngRow As Long) '引数[objWS]:ワークイート '引数[lngRow]:レコード objws.Cells(lngRow, 1).Value = mstrName objws.Cells(lngRow, 2).Value = mdatDate(0) objws.Cells(lngRow, 3).Value = mstrPostNumber objws.Cells(lngRow, 4).Value = mstrAddress objws.Cells(lngRow, 5).Value = mstrTelphone End Sub 'プロパティ値の取得 Public Sub LetProperty(ByVal objws As Worksheet, ByVal lngRow As Long, ParamArray vntArray() As Variant) '引数[objWS]:ワークシート '引数[lngRow]:レコード '引数[vntArray]:データ Dim i As Integer '整数型カウンタ '受け取ったデータをプロパティに格納 mlngPID = CLng(vntArray(0)) mstrName = CStr(vntArray(1)) mintSex = CInt(vntArray(2)) mintEmploy = CInt(vntArray(3)) mintZaisyoku1 = CInt(vntArray(4)) mintZaisyoku2 = CInt(vntArray(5)) For i = 0 To 2 If vntArray(i + 6) = 0 Then mdatDate(i) = vntArray(6) Else mdatDate(i) = CDate(vntArray(i + 6)) End If Next mstrPostNumber = CStr(vntArray(9)) mstrAddress = CStr(vntArray(10)) mstrTelphone = CStr(vntArray(11)) For i = 0 To 15 mlngKoujo(i) = CLng(vntArray(i + 12)) Next mintKouOtu = CInt(vntArray(28)) '配列に格納 Call LetArray 'ワークシートに書き出し Call LetData(objws, lngRow) End Sub 'プロパティ値の公開 Public Sub GetProperty(ByVal objws As Worksheet, ByVal lngRow As Long, ParamArray vntArray() As Variant) '引数[objWS]:ワークシート '引数[lngRow]:レコード '引数[vntArray]:データ Dim i As Integer '整数型カウンタ ReDim Preserve mvntData(28) As Variant '配列再定義 'ワークシートの値の取得 Call GetData(objws, lngRow) 'プロパティへ格納 Call GetArray '外部へ公開 For i = 0 To 28 vntArray(i) = mvntData(i) Next End Sub '配列の値の取得 Private Sub GetArray() Dim i As Integer '整数型カウンタ ReDim Preserve mvntData(28) As Variant '配列再定義 mlngPID = CLng(mvntData(0)) mstrName = CStr(mvntData(1)) mintSex = CInt(mvntData(2)) mintEmploy = CInt(mvntData(3)) mintZaisyoku1 = CInt(mvntData(4)) mintZaisyoku2 = CInt(mvntData(5)) For i = 0 To 2 mdatDate(i) = CDate(mvntData(i + 6)) Next mstrPostNumber = CStr(mvntData(9)) mstrAddress = CStr(mvntData(10)) mstrTelphone = CStr(mvntData(11)) For i = 0 To 15 mlngKoujo(i) = CLng(mvntData(i + 12)) Next mintKouOtu = CInt(mvntData(28)) End Sub 'プロパティの値を書き出し Private Sub LetArray() Dim i As Integer '整数型カウンタ ReDim Preserve mvntData(28) As Variant '配列再定義 'プロパティの値を配列へ書き出し mvntData(0) = mlngPID mvntData(1) = mstrName mvntData(2) = mintSex mvntData(3) = mintEmploy mvntData(4) = mintZaisyoku1 mvntData(5) = mintZaisyoku2 For i = 0 To 2 mvntData(i + 6) = mdatDate(i) Next mvntData(9) = mstrPostNumber mvntData(10) = mstrAddress mvntData(11) = mstrTelphone For i = 0 To 15 mvntData(i + 12) = mlngKoujo(i) Next mvntData(28) = mintKouOtu End Sub 'ワークシートの値を取得 Private Sub GetData(ByVal objws As Worksheet, ByVal lngRow As Long) '引数[objWS]:ワークシート '引数[lngRow]:レコード Dim i As Integer '整数型カウンタ ReDim Preserve mvntData(28) As Variant '配列の再定義 'ワークシートの値を取得 For i = 0 To 28 mvntData(i) = objws.Cells(lngRow, 1 + i).Value Next End Sub 'ワークシートへ書き出し Private Sub LetData(ByVal objws As Worksheet, ByVal lngRow As Long) '引数[objWS]:ワークシート '引数[lngRow]:レコード Dim i As Integer '整数型カウンタ ReDim Preserve mvntData(28) As Variant '配列の再定義 'ワークシートへ値を書き出し For i = 0 To 28 objws.Cells(lngRow, 1 + i).Value = mvntData(i) Next If IsEmpty(mvntData) = True Then Erase mvntData End Sub '所得控除プロパティのワークシートへの書き出し Public Sub LetKoujoProperty(ByVal objws As Worksheet, ByVal lngRow As Long, ParamArray vntArray() As Variant) '引数[objWS]:ワークシート '引数[lngRow]:レコード '引数[vntArray]:データ Dim i As Integer '整数型カウンタ '受け取ったデータをメンバー配列に格納 mlngPID = CLng(vntArray(0)) For i = 1 To 16 mlngKoujo(i - 1) = CLng(vntArray(i)) Next 'ワークシートへ書き出し Call LetKoujoData(objws, lngRow) End Sub '所得控除プロパティのワークシートから取得 Public Sub GetKoujoProperty(ByVal objws As Worksheet, ByVal lngRow As Long, ParamArray vntArray() As Variant) '引数[objWS]:ワークシート '引数[lngRow]:レコード '引数[vntArray]:データ Dim i As Integer '整数型カウンタ 'ワークシートの値の取得 Call GetKoujoData(objws, lngRow) For i = 0 To 15 vntArray(i) = mlngKoujo(i) Next End Sub '所得控除プロパティの書き出し Private Sub LetKoujoData(ByVal objws As Worksheet, ByVal lngRow As Long) '引数[objWS]:ワークシート '引数[lngRow]:レコード Dim i As Integer '整数型カウンタ 'ワークシートへ書き出し objws.Cells(lngRow, 1).Value = mlngPID For i = 0 To 15 objws.Cells(lngRow, 1 + i + 1).Value = mlngKoujo(i) Next End Sub '所得控除プロパティの取得(ワークシート) Public Sub GetKoujoData(ByVal objws As Worksheet, ByVal lngRow As Long) '引数[objWS]:ワークシート '引数[lngRow]:レコード Dim i As Integer '整数型カウンタ mlngPID = objws.Cells(lngRow, 1).Value For i = 0 To 15 mlngKoujo(i) = CLng(objws.Cells(lngRow, 1 + i + 1).Value) Next End Sub 'クラスのインスタンス時 Private Sub Class_Initialize() '配列型プロパティのメモリ確保 ReDim Preserve mdatDate(2) As Date ReDim Preserve mlngKoujo(15) As Long End Sub 'クラス開放時 Private Sub Class_Terminate() '動的配列のメモリ開放 If IsEmpty(mdatDate) = True Then Erase mdatDate If IsEmpty(mlngKoujo) = True Then Erase mlngKoujo If IsEmpty(mvntData) = True Then Erase mvntData End Sub