私は過去数ヶ月にわたってVBAでクラスを使用する方法を学んできましたが、複数のクラスアイテムをまとめてグループ化する正しい方法を見つけ出すのに問題があります。このVBA構造を作成するにはどうすればよいですか?
たとえば、Name、Gender、DOB、Age(Today-DOB)などのプロパティを持つclsPersonsというクラスがあります。私はたった一人を追加したい場合は、私は、次の操作を行います。
Dim Person As New clsPersons
Person.Name = "Phillip"
Person.Gener = "Male"
Person.DOB = "#1/1/2000"
' Person.Age would be automatically set by adding Person.DOB
しかし、私はそれでみんなと一緒にスプレッドシートを持っていたし、名前が文字「P」で始まるのですみんなでレポートを作成することにした場合、
Dim Person As New clsPersons
Dim lastRow As Long
lastRow = Sheet1.Cells(Rows.Count, 1).Row(xlUp).End
For i = 1 To lastRow
If Worksheet.Function.Left(Sheet1.Cells(i, 1), 1) = "P" Then
Person.Name = Sheet1.Cells(i, 1)
Person.Gener = Sheet1.Cells(i, 2)
Person.DOB = Sheet1.Cells(i, 3)
End If
Next i
それを充填した後、私はそれはアイテムを引き出すことをループにできるようにしたい:私は最初の(コレクション、辞書、など)、およびこのようなものは、それを埋めるために使用するオブジェクトのいくつかの種類を必要としますので、このような何か:
For Each Person In objPeople
Sheet2.Cells(i, 1) = Person.Name
Sheet2.Cells(i, 1) = Person.Gender
Sheet2.Cells(i, 1) = Person.Age
Next Person
私が概説したことがうまくいけばうまくいきます。簡単に言えば、私は、人々をひとつのオブジェクトにまとめる適切な方法を探しています。私は後で自分の手順で繰り返すことができます。
私はコレクションでどのように動作するかわからなかったし、それが仕事をした場合には、本当にそう確認するためのおかげでそれを行うための正しい方法だった場合。それはまた、整頓されたコードの素晴らしい部分です、投稿していただきありがとうございます! – pheeper