お知らせ

NetCommonsとは関係ありません。個人的メモ

 

Private Sub CommandButton実行_Click()
Dim my住所録 As Class住所録: Set my住所録 = New Class住所録

With Sheet1
 Dim i As Long: i = 2
 Do While .Cells(i, 1).Value <> ""
  Dim p As ClassPerson: Set p = New ClassPerson
  p.Initialize .Range(.Cells(i, 1), .Cells(i, 4))
  my住所録.addPerson p, p.Name

  i = i + 1
 Loop
End With

'クラスにもっているコレクションの要素を取得
Debug.Print "my住所録"
set p = my住所録.getPerson("Bob")

Debug.Print p.id

End Sub


 

■■ classPerson ■■

Public FirstName As String
Public Gender As String
Public Birthday As String

Public Sub Greet()
 MsgBox Me.FirstName & "です、こんにちは!"
End Sub

Public Sub Initialize(ByVal rng As Range)
 id_ = rng(1).Value
 FirstName = rng(2).Value
 Gender = rng(3).Value
 Birthday = rng(4).Value
End Sub

Public Property Get IsMale() As Boolean
 IsMale = (Me.Gender = "male")
End Property

Public Property Get Id() As String
 Id = id_
End Property

Public Property Get Name() As String
 Name = FirstName
End Property

Public Property Let Id(ByVal newId As String)
 If id_ <> "" Then
  Debug.Print "Idは上書きすることはできません"
 Else
  id_ = newId
 End If
End Property

 

■■ class住所録 ■■

Private Persons As Collection

Private Sub Class_Initialize()
  Set Persons = New Collection
End Sub

Public Function getPerson(名前 As String) As ClassPerson
 Set getPerson = Persons(名前)
End Function

Public Sub addPerson(人 As Object, 名前 As String)
 Persons.Add 人, 名前
End Sub