2015-05-08 2 views
0

Я искал в Интернете и просто хочу знать, как добавить кучу ListBoxes из моей Userform в мой массив. Вот то, что я до сих пор:VBA - Добавление списка в массив

Dim LBArray() As Variant 

Private Sub UserForm_Initialize() 

ReDim LBArray(7) As Variant 
FirstNameTextBox.Clear 
LastNameTextBox.Clear 
HotelCIDate.Clear 
HotelCODate.Clear 
HotelNameBox.Clear 
HotelConfStatus.Clear 
HotelConfNumber.Clear 

LBArray(0) = FirstNameTextBox 
LBArray(1) = LastNameTextBox 
LBArray(2) = HotelNameBox 
LBArray(3) = HotelCIDate 
LBArray(4) = HotelCODate 
LBArray(5) = HotelConfStatus 
LBArray(6) = HotelConfNumber 

End Sub 

Это должно работать, но это не на самом деле добавить ListBoxes в массив. Все элементы либо «", либо Null, и я не могу изменять объекты ListBox из массива. Кто-нибудь знает, почему это происходит?

+0

Я мог бы спросить, почему ** ** вы делаете это, так как члены формы (контроль такие как ListBoxes, TextBoxes и т. д.) доступны для ссылки по имени. Помещение их в массив кажется ненужным дополнительным шагом ... –

+0

Это лишний дополнительный шаг, в основном предназначенный для сохранения некоторого кода позже. Мне это не нужно/оно, но оно по-прежнему полезно. – Alfabit

ответ

0

ListBox является Object, так что вам нужно использовать Set ключевое слово при назначении объекта, в противном случае он возвращает свойство по умолчанию объекта (в данном случае, я думаю, что это .Value свойства)

Set LBArray(2) = HotelNameBox 

И т. Д.

Я не думаю, что это действительно необходимо для этого, и на самом деле это кажется ненужным и запутанным! Позже в вашем коде вам понадобится обратиться к ListBox(i) или к объектам по имени.

Если вам нужно перебрать ListBoxes и выполнять некоторые операции над ними, вы всегда можете сделать:

Dim ctrl as MSForms.Control 

For each ctrl in UserForm1.Controls 
    If TypeName(ctrl) = "ListBox" Then 
     ** Code to do something with each listbox 
    End If 
Next 
+1

Это работает отлично. Я не понимал, что вы можете прокручивать элементы управления такой формы, это очень помогает! Огромное спасибо! – Alfabit