1

我有一个函数,它接收一个 ParamArray,我试图将未知数量的参数传递给它。我正在遍历行并根据单元格是否为空来传递数字,但似乎我必须将每个数字作为其自己的参数传递。我尝试将数字放入一个数组并传递它,但它最终只是函数中的一个数组数组并且无法正常工作。有没有办法做到这一点?谢谢你。

前任:

Dim myarray() as double

function test(ParamArray arg() as variant) as single
  'function does stuff with arg(s)
end function

for each cell in [somerange]
  if cell <> "" then
    'save cell value into an myarray?
  endif
next

'want to pass those saved values into function
call test(myarray)

编辑:我找到了一种解决方法。我意识到我可以将一个范围传递给函数,所以我将创建一个临时范围并将其传递进去。

4

2 回答 2

1

从 Cpearson Passing And Returning Arrays With Functions开始,这就是您将数组传递给函数并循环该数组的方式:

Sub DoSomethingWithPassedArray(ByRef Arr() As Long)

    Dim N As Long
    For N = LBound(Arr) To UBound(Arr)
        '...do something
    Next N
End Sub

进一步,不清楚你想做什么......

于 2015-02-24T20:00:10.427 回答
0

在这里(它与我在Calling vba macro from python with unknown number of arguments 中的问题有关)

用这个:

Sub pass_this()
    Call flexible("a")
End Sub
Sub pass_alsothis()
    Call flexible("a", 2)
End Sub
Sub flexible(ParamArray args() As Variant)
    Dim i As Long
    MsgBox ("I have received " & _
            Str(UBound(args) + 1) & _
            " parameters.")
    For i = 0 To UBound(args)
        MsgBox (TypeName(args(i)))
    Next i
End Sub

干杯。

于 2019-10-01T18:06:46.130 回答