vba - 问题 '381' 与范围 VBA

标签 vba excel range

我有以下用于填充列表框的代码

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

到目前为止一切正常...

enter image description here

但是当我只留下一行数据时,会出现此错误:

enter image description here

我什至用这个打印了我的范围:

MsgBox "the range is D2:" & celdaFin

这就是我得到的

enter image description here

然后出现错误消息,如何在一个单元格上执行此操作?


编辑:解决方案感谢@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/

相关文章:

delphi - Excel 2010 中的 "File Format No Longer Supported"用于我们的 COM 库

javascript - Microsoft Javascript 插件 : read/write to Excel, 访问

excel - Excel Range 奇怪行为的 SpecialCells 方法

javascript - 如何使用原生 html 输入范围和 Vue.js 创建双范围 slider ?

date - Elasticsearch 中的日期过滤器

通过 VBA 发送到 Google 搜索时无法识别带有特殊字母的 Excel 单元格值

excel - 在 Excel VBA 中,为什么删除范围中的重复条目会删除单元格背景颜色?

optimization - 使用 Solver、EXCEL 时保存目标函数值

excel - 通过 vlookup 检测空白单元格

sql - 如何在oracle中计算范围