我在工作簿中有一个范围,我想从我的一个Userform设置到Combobox中的项目列表。问题是Range可以是任何大小。我目前通过退出Sub
来处理零案例,但是当该范围内只有一个元素时。
如果有一个元素,而不是返回一个元素数组,它只会返回一个String
元素,而列表框会给我一个错误:
`运行时错误'':无法设置List属性。无效的属性数组索引'。除了为只有一个元素的情况创建例外之外,还有处理这个吗?
这里是代码: 编辑:修正程序以准确表示问题。
Private Sub UserForm_Activate()
Dim formList As Variant
Dim lastRow As Long
lastRow = getLastRowInCol(Sheets("HiddenVariables"), "B")
If lastRow = 0 Or lastRow = 1 Then Exit Sub
formList = Sheets("HiddenVariables").Range("B2:B" & lastRow).value 'If lastRow =2 then run-time error 381 is thrown
Me.ComboBox.list = formList
End Sub
答案 0 :(得分:1)
一种方法是使用命名范围和组合框的RowSource
属性。
定义命名范围:
然后只需设置rowsource
Option Explicit
Private Sub UserForm_Activate()
Me.ComboBox1.RowSource = "Sheet1!Combo_Source"
End Sub
按照你的方法,使用它:
If IsArray(formList) Then
Me.ComboBox1.List = formList
Else
Me.ComboBox1.List = Split(formList, "") '/Converts str to arr on the fly.
End If