VBA - 将列表框添加到数组

时间:2015-05-08 14:14:43

标签: arrays vba listbox userform

我一直在网上搜索,只是想知道如何从我的Userform中添加一堆ListBoxes到我的数组。这是我到目前为止所做的:

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

这应该可行,但实际上并没有将列表框添加到数组中。所有元素都是“”或Null,我无法修改数组中的ListBox对象。任何人都知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

列表框是Object,因此在分配对象时需要使用Set关键字,否则它将返回对象的默认属性(在这种情况下我认为是.Value属性)

Set LBArray(2) = HotelNameBox

我不认为这样做真的很有必要,实际上这似乎是不必要和令人困惑的!稍后在您的代码中,您需要按名称引用ListBox(i)或对象。

如果您需要遍历列表框并对它们执行某些操作,您可以随时执行:

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