1

我编写了一个相当简单的 VBA 函数,我想在我的工作表和链接到宏工作表的其他函数中使用它。我允许用户输入一个值或一个范围(基本上是一个单元格引用)作为参数。

Public Function TSTT(arg As Range) As Single
    Dim a25 As Variant
    a25 = 522.6 - (arg / 155.2867)

    TSTT= a25
End Function

问题是当我使用 Range 作为类型(如上)并且用户在公式中输入一个值时,我得到一个 #VALUE 作为返回。

如果我将参数声明为单个参数,那么如果用户输入值或单元格引用,它就会起作用。

最后,如果我将参数声明为 Variant,它也适用于两种类型的输入。

要允许两种类型的输入,我应该使用 Variant 还是预期类型?

4

1 回答 1

2

您不需要在函数头中声明参数,您可以测试用户给您的内容。您实际上可以测试用户给您的内容:

Function foo(r) As String
    If TypeOf r Is Range Then
      v = r.Value
    Else
        v = r
    End If
    '
    '   more stuff
    '
End Function
于 2013-09-17T01:02:56.937 回答