VBA - 将列表框添加到数组

VBA - Adding a listbox to an array

我一直在网上搜索,只是想知道如何将我的用户窗体中的一堆列表框添加到我的数组中。这是我目前所拥有的:

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 对象。有人知道为什么会这样吗?

一个列表框是一个Object,所以你需要在分配对象时使用Set关键字,否则它会return对象的默认属性(在这种情况下,我认为是 .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