【问题标题】:How to return an array, of varying length, from a VBA Function如何从 VBA 函数返回不同长度的数组
【发布时间】:2015-07-02 20:40:16
【问题描述】:

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

    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,但如果可能的话,我希望尽量减少对代码的过多更改。任何帮助表示赞赏!

【问题讨论】:

    标签: arrays vba excel variant


    【解决方案1】:

    改变这个:

    Dim Elements() As Variant
    

    到这里:

    Dim Elements As Variant
    

    .

    第一条语句生成一个变体数组

    您的函数返回类型是“变体变量”(单数)而不是变体数组

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 2015-10-12
      • 1970-01-01
      • 2018-01-25
      • 1970-01-01
      • 1970-01-01
      • 2019-07-12
      • 1970-01-01
      相关资源
      最近更新 更多