У меня 13 свойств, следующий синтаксису, подобному приведенному ниже:
Public Property Get Town() As String
Town = txtTown.Text
End Property
Я хотел бы иметь возможность использовать цикл и выполнять итерацию по совокупности этих свойств вместо ссылки на каждое из 13 свойств. Как бы я пошел о создании массива этих существующих свойств. Я бы очень хотел, чтобы они сохранили свои значимые имена.
EDIT:
aSet IDCell = customerDBSheet.Range("CustomerDBEntryPoint").Offset(ID() - 1)
Dim properties()
properties = Array("ID()", "FirstName()", "LastName()", "Address 1()", "Address 2()", "Town()", "Postcode()", "Phone()", "Email()", "Sex()", "Username()", "PasswordHash()")
For i = 0 To 11
IDCell.Offset(1, i).Value = CStr(CallByName(frmCustomerEntry, properties(i), VbLet, ""))
Next i
Я получаю сообщение об ошибке до последнего: IDCell.Offset(1, i).Value = CStr(CallByName(frmCustomerEntry, properties(i), VbLet, ""))
Итоговый код:
Dim properties()
properties = Array("ID", "FirstName", "LastName", "Address1", "Address2", "Town", "Postcode", "Phone", "Email", "Sex", "Username", "PasswordHash")
For i = 0 To 11
IDCell.Offset(1, i).Value = CStr(CallByName(frmCustomerEntry, properties(i), VbMethod))
Next i
Код, использованный в конце, показанный выше, специально использует функцию CallByName, отредактированную из ответа Радека, когда свойство было преобразовано в функцию. Кроме того, для цикла For необходимо использовать индекс на основе 0. Кроме того, возникло исключение, когда 4-й необязательный параметр представлял собой пустой строковый литерал.