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