我有以下用于填充列表框的代码
Function fillData()
Dim vList As Variant
Dim ws As Worksheet: Set ws = Worksheets(BD)
With ws
If (IsEmpty(.Range("D2").Value) = False) Then
Dim lastCell As String: lastCell = "D" & .Range("D65536").End(xlUp).Row
vList = ws.Range("D2:" & lastCell).Value
Me.ListBox1.List = vList
End If
Me.ListBox1.ListIndex = -1
End With
Set vList = Nothing
Set ws = Nothing
End Function
到目前为止一切正常...
但是当我只留下一行数据时,会出现此错误:
我什至用这个打印了我的范围:
MsgBox "the range is D2:" & celdaFin
这就是我得到的
然后出现错误消息,如何在一个单元格上执行此操作?
编辑:解决方案感谢@Jason和@tospig
Function fillData()
Dim vList As Variant
Dim ws As Worksheet: Set ws = Worksheets(BD)
Me.ListBox1.Clear
With ws
If (IsEmpty(.Range("D2").Value) = False) Then
vList = ws.Range("D2:D" & .Range("D65536").End(xlUp).Row).Value
If IsArray(vList) Then
Me.ListBox1.List = vList
Else
Me.ListBox1.AddItem (vList)
End If
End If
Me.ListBox1.ListIndex = -1
End With
Set vList = Nothing
Set ws = Nothing
End Function
最佳答案
每当变体由具有多个值的范围填充时,它都会自动创建一个二维数组。
二维数组应该毫无问题地填充列表框。
如果范围内只有一个值,则该数组不是二维数组,因此您可能需要手动重新调整变量
如果数组只有一个值,您可能需要测试该数组
如果只有一个值则
Redim vList(1 to 1, 1 to 1)
vList(1,1) = ws.Range("D2:" & lastCell).Value
此时列表框应该能够获取变体
关于vba - 问题 '381' 与范围 VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27302741/