【问题标题】:Populate ComboBox from Table从表中填充 ComboBox
【发布时间】:2019-10-23 13:14:41
【问题描述】:

我正在尝试填充我在从表中获取数据的用户表单中使用的两列组合框。组合列表需要是动态的,因此当将其他项目添加到表中时,它们会被送入组合框。

我正在使用之前的事件双击来启动代码,但表单没有初始化。该表单已使用一种更简单的方法从固定范围内获取数据进行了初始化 - 表格让我失望。

我已经单独运行了代码,我可以看到组合列表数组被填充。

我试图重新调整组合列表数组,但出现错误,提示它已经变暗。

我怀疑我从表格中填充组合框的代码过于复杂。

Private Sub UserForm_Initialize()

'Populate Combo list values

ComboBox1.ColumnCount = 2

Dim myTable As ListObject
Dim myArray As Variant
Dim x As Long, NumItems As Long

Set myTable = Worksheets("RefTable").ListObjects("AccountTable")

myArray = myTable.DataBodyRange
NumItems = UBound(myArray)

Dim ComboList(1 To 20, 1 To 2) As String

Dim i As Integer, j As Integer

For i = 1 To 20
    For j = 1 To 2
       ComboList(i, j) = myArray(i, j)
    Next j
Next i

ComboBox1.List = ComboList

End Sub

表格根本不显示!

【问题讨论】:

    标签: excel vba combobox


    【解决方案1】:

    您的代码非常接近,我刚刚对您的数组进行了更改:

    Private Sub UserForm_Initialize()
    
    'Populate Combo list values
    
    ComboBox1.ColumnCount = 2
    
    Dim myTable As ListObject
    Dim myArray As Variant
    Dim i As Long, j As Long
    
    Set myTable = Worksheets("RefTable").ListObjects("AccountTable")
    
    myArray = myTable.DataBodyRange
    
    Dim ComboList() As String: ReDim ComboList(1 To UBound(myArray), 1 To UBound(myArray, 2))
    
    For i = LBound(ComboList) To UBound(ComboList)
        For j = LBound(ComboList, 2) To UBound(ComboList, 2)
           ComboList(i, j) = myArray(i, j)
        Next j
    Next i
    
    ComboBox1.List = ComboList
    
    End Sub
    

    您也可以只使用第一个数组:

    Private Sub UserForm_Initialize()
    
    'Populate Combo list values
    
    ComboBox1.ColumnCount = 2
    
    Dim myTable As ListObject
    Dim myArray As Variant
    
    Set myTable = Worksheets("RefTable").ListObjects("AccountTable")
    
    myArray = myTable.DataBodyRange
    
    ComboBox1.List = myArray
    
    End Sub
    

    【讨论】:

    • 谢谢 - 我知道我已经完成了工程!第二种解决方案是完美的。谢谢
    • @Chris 为什么在使用第二个选项时我会收到“无法设置 Value 属性。类型不匹配”?
    猜你喜欢
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多