Я изучаю, как использовать классы в VBA за последние пару месяцев, но у меня возникли проблемы с выяснением того, что является подходящим способом группировки нескольких элементов класса вместе, чтобы я мог проходить через них.Как создать эту структуру VBA?
Например, у меня есть класс с именем clsPersons с такими свойствами, как Name, Gender, DOB и Age (Today - DOB). Если бы я просто хотел бы добавить один человек, я хотел бы сделать следующее:
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
Однако, если бы я имел таблицу со всеми на нем и решили создать отчет со всеми, кто-то имя начинается с буквы «Р», то я сначала нужно какой-то объект для использования (сбор, словарь и т.д.) и что-то вроде этого, чтобы заполнить его:
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