Я создал метод, который принимает глобальный массив объектов arrayOReservists, который представляет людей, и отображает их объекты в ListBox.
' Fill the ListBox results with the names and surnames of the staff
ListBoxResults.AddItem (arrayOReservists(i).Surname & " " & arrayOReservists(i).Name)
' we resize the table
i = i + 1
Другой метод, ListBoxResults_DblClick
, отвечает, когда я дважды щелкаю по одной из строк в ListBox. Он показывает пользовательскую форму, на которую я хотел бы отправить объект, на который я нажал. Однако я не знаю, как получить доступ к этому объекту. У меня сложилось впечатление, что данные, передаваемые в ListBox с помощью AddItem, преобразуются в текст.
Private Sub ListBoxResults_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim Msg As String
Dim i As Integer
Dim newInstanceOfMe As Object
' We look for the name and surname of the reserviser we clicked on.
For i = 0 To ListBoxResults.ListCount - 1
If ListBoxResults.Selected(i) Then
ReservistName = ListBoxResults.List(i)
End If
Next i
' Consider the case in which you click on the TextBox Results while it is empty
If False Then
If ReservistName <> "" Then
Set newInstanceOfMe = UserForms.Add(Me.Name)
newInstanceOfMe.Caption = ReservistName
newInstanceOfMe.Show
Unload newInstanceOfMe
Set newInstanceOfMe = Nothing
End If
End If
' Pass the name, first name to ReservistUserForm and in the Load that filters the list of these fields by obtaining the oReservist object.
' Once you have the information of that user, the following will be to map the information to the corresponding textBox.
ReservistFormUserForm.Caption = ReservistName
ReservistFormUserForm.Show
End Sub
На самом деле, когда я показываю MsgBox (ListBoxResults.List (i))
, у меня есть только имя и фамилия, а не объект.
Следовательно, как хранить объекты в ListBox vba и получать их, когда мы щелкаем по ним? Это позволит мне, например, поместить их в глобальную переменную, к которой у меня будет доступ в пользовательская форма.