【问题标题】:Using array constants in excel vba function在excel vba函数中使用数组常量
【发布时间】:2009-10-01 13:11:15
【问题描述】:

我在 VBA 中有一个函数,类型为

Function MyFunc(Indx As Integer, k As Long, Rho As Range, A As Range) As Variant
....
End Function

在 Excel 工作表中作为用户定义的函数调用。当最后两个参数是一个范围调用时

结果 = MyFunc(1,98,A1:A2, B1:B2))

它工作正常。但是,当我尝试直接使用数组常量而不是范围时

结果 = MyFunc(1,98,{10,11}, {20,30})

它返回 #VALUE 错误。

我想我可以通过将最后两个参数重新定义为 double 类型的数组来解决它,但这也不起作用

Function MyFunc(Indx As Integer, k As Long, Rho() As Double, A() As Double) As Variant
....
End Function

有人对灵活的解决方案有建议吗,这将允许两种调用方法:按范围,以及按数组常量?

【问题讨论】:

  • 是否有任何内置函数允许范围或数组常量作为参数?事实上,是否有任何内置函数甚至只允许数组常量? (我以为有,但我检查过的所有实际上都在使用参数列表数组)

标签: vba excel


【解决方案1】:

您可以将两个参数声明为 Variant 类型,然后在您的函数中使用 TypeName(varname) 函数检查传递给它们的内容。

【讨论】:

    【解决方案2】:

    也许您可以在调用函数时将数组转换为范围对象。

    结果 = MyFunc(1,98,Range(10,11), Range(20,30))

    【讨论】:

    • 感谢您的建议。我刚刚尝试过,不幸的是,它失败了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多