代码之家  ›  专栏  ›  技术社区  ›  sigil

vba函数似乎返回一个数组,但我得到“类型不匹配:需要数组或用户定义的类型”

  •  0
  • sigil  · 技术社区  · 6 年前

    我有一组VBA函数:

    Sub x()
        Dim a() As Variant
        z y(a)
    End Sub
    
    Function y(a() As Variant) As Variant
        y = a
    End Function
    
    Function z(a() As Variant) As Variant
        z = a
    End Function
    

    当我奔跑 x() ,线 z y(a) 引发错误:

    Type mismatch: array or user-defined type expected
    

    我想这是因为 z() 要求数组作为参数,但返回值为 y() 是变量,而不是数组。我不知道该怎么说 () 返回一个变量数组——我声明的是错误的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Scott Craner    6 年前

    虽然您的代码什么也不做,但这将停止错误:

    Sub x()
        Dim a() As Variant
        z y(a)
    End Sub
    
    Function y(a() As Variant) As Variant()
        y = a
    End Function
    
    Function z(a() As Variant) As Variant()
        z = a
    End Function