首页 > 解决方案 > 如何将 VBA 函数中的多范围作为参数传递?

问题描述

Public Function iQuery(pName As Varient, pTime As Varient)
For Each item in pName
   ...
Next item
End Function

我有一个名为 iQuery 的函数,我想将范围$A$3,$A$4,$A$5,$A$6作为 pName 和范围作为$A$19pTime 传递,但是当 iQuery 被称为$A$3$A$4iQuery($A$3,$A$4,$A$5,$A$6,$A$19)

标签: excelvbaexcel-addins

解决方案


如果您从 VBA 执行此操作,则需要将范围作为范围对象传递。看这个例子

Sub Sample()
    Dim rngA As Range
    Dim rngB As Range
    Dim Ret As ??????

    Set rngA = Range("$A$3,$A$4,$A$5,$A$6")
    Set rngB = Range("$A$4")

    Ret = iQuery(rngA, rngB)
End Sub

Public Function iQuery(pName As Range, pTime As Range) As ??????
    Dim itm As Range

    For Each itm In pName
       ...
    Next itm
End Sub

??????您要返回的相关数据类型在哪里。

如果您是从工作表中执行此操作,则将其作为一个范围传递。例如

=iQuery($A$3:$A$6,$A$19)

但是如果 sFormula 是 "=iQuery($A$3,$B$14,$C$11,$A$6,$A$19)" 并且我希望第一个参数是 $A$3,$B$14,$C$11,$ 6 澳元,第二个 19 澳元 – rs4 18 分钟前

对于非连续范围,请使用括号。例如

=iQuery(($A$3,$B$14,$C$11,$A$6),$A$19)

推荐阅读