将数组传递给UDF; UBound函数

时间:2017-11-28 12:32:29

标签: excel vba excel-vba

令我非常沮丧的是,我在第一个VBA项目的第一行似乎已经做错了。从本质上讲,我的项目已经停滞不前,因为我无法弄清楚为什么会这样做:

Function TestF(Values As Variant, Dates As Variant)
    TestF = Values(2)
End Function

但这样做:

Function TestF(Values As Variant, Dates As Variant)
    TestF = UBound(Values)
End Function

(我只想看到UBound有效。所以,我删除了与项目无关的所有内容。)

其中ValuesDates均应为1维数组。 (或范围?或者问题是什么?)

如何修复第一段代码?

我用Google搜索,然后用Google搜索,但我找不到答案。

(Excel)'错误'是来自#VALUE!的{​​{1}},其范围如下:

=testf(A2:A10,B2:B10)

2 个答案:

答案 0 :(得分:1)

您需要将正确的参数传递给 UDF

这两个参数都是Range

Function TestF(Rng1 As Range, DatesRng As Range) As Long

    Dim C As Range
    Dim x As Long

    For Each C In Rng1
        If Trim(C.Value) <> "" Then ' make sure there isn't a blank cell in the middle of your Range
            x = x + 1
        End If
    Next C
    TestF = x - 1

End Function

如果Range中间没有空单元格,则以下代码就足够了:

Function TestF(Rng1 As Range, DatesRng As Range) As Long

    Dim C As Range
    TestF = Rng1.Cells.Count - 1

End Function

答案 1 :(得分:0)

你可能想要:

receive_device()

另外,你应该声明你的函数假设要返回的内容,比如

TestF=Values(Ubound(Values))