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

时间:2015-07-02 20:40:17

标签: arrays excel vba excel-vba variant

我正在尝试在更大的宏中编写一个函数来返回元素列表。该数组是从电子表格中的单元格生成的:

    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()是否被变暗为变体或字符串并不会改变我的任何内容。对类似问题的建议涉及使用Elements()的集合,然后使用循环使Elem_Array等于Elements,但如果可能的话,我想尽量减少更改代码。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

改变这个:

Dim Elements() As Variant

对此:

Dim Elements As Variant

第一个语句生成变体数组

您的函数返回类型是&#34;变量&#34; (单数)不是变种数组