如何从VBA函数返回不同长度的数组



我正试图在一个更大的宏中编写一个函数,以返回元素列表。数组由电子表格中的单元格生成:

    Function Elem_Array() As Variant
    Dim Elements() As Variant
    i = 1
    Cells(i, 38).Select
    element1 = Cells(i, 38).Value
    element2 = ""
    Do While element2 <> element1
    i = i + 1
    Cells(i, 38).Select
    element2 = Cells(i, 38).Value
    ReDim Preserve Elements(1 To i)
    Elements(i) = element2
    Loop
    Elements(1) = element1
    Elem_Array= Elements
    End Function

当试图将Elem_Array设置为等于Elements数组时,它将在Elem_Array不等于任何值的情况下结束函数。当我调用函数时,我会出现错误,因为我试图调用一个空数组或字符串。我曾尝试使用for循环来一次填充一个元素的Elem_Array,但函数结束时没有添加任何内容。Elements((是否被Dim‘ed为Variant或字符串对我来说没有任何改变。对类似问题的建议包括使用Elements(((的集合,然后使用循环使Elem_Array等于Elements,但如果可能的话,我希望尽量减少对代码的过多更改。感谢您的帮助!

更改此项:

Dim Elements() As Variant

对此:

Dim Elements As Variant

第一条语句生成一系列变体

您的函数返回类型是"变量"(单数(,而不是变量数组

相关内容

  • 没有找到相关文章

最新更新