我正试图循环遍历表的标题行,以填充UserForm的ComboBox下拉列表。
表格的标题行是工作表的第二行。
我的想法是使用intersect((函数来检查循环是否仍在标题范围内,如果不在,则退出循环
如果intersect为true,则将当前cell.value
添加到组合框列表中。
我还试图将头行存储到一个数组中,但我无法启动循环来查看我的代码是否将头行值设置为数组
我得到的错误是
"对象变量或未设置块变量">
Option Explicit
Dim ws As Worksheet
Public Tbl1 As ListObject
Private Sub ComboBox_DropButtonClick()
Set ws = ActiveSheet
Set Tbl1 = ws.ListObject("Table1")
Dim i As Integer
Dim Tbl1HeaderArray() As Variant
i = 1
ComboBox.RowSource = ""
Do Until i = -1
If Intersect(Tbl1.HeaderRowRange(), ws.Cells(2, i)) Is Nothing Then
i = -1
Else
ComboBox.AddItem (ws.Cells(2, i).Value)
Tbl1HeaderArray(i - 1) = ws.Cells(2, i).Value
i = i + 1
End If
Loop
End Sub
我尝试了几种不同的方法,但这是最有希望的。我对完成任务的不同途径持开放态度。
用表格标题填充组合框
代码
Option Explicit
Private Sub ComboBox1_DropButtonClick()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim tbl As ListObject
Set tbl = ws.ListObjects("Table1")
With ComboBox1
'.Clear
.Column = tbl.HeaderRowRange.Value
End With
End Sub