将未知数量的参数传递到VBA中的ParamArray

时间:2015-02-24 19:49:54

标签: vba paramarray

我有一个函数,它接收一个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)

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

2 个答案:

答案 0 :(得分: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

此外,它还不清楚你想做什么......

答案 1 :(得分:0)

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

使用此:

private func getAddress(from coordinates: CLLocation) {
    CLGeocoder().reverseGeocodeLocation(coordinates) { placemark, error in
        guard error == nil,
            let placemark = placemark
        else
        {
            // TODO: Handle error
            return
        }

        if placemark.count > 0 {
            let place = placemark[0]
            let city = place.locality
            let country = place.country
            let countryIsoCode = place.isoCountryCode
        }
    }
}

干杯。