Excel VBA 函数不能将参数用作范围
Posted
技术标签:
【中文标题】Excel VBA 函数不能将参数用作范围【英文标题】:Excel VBA Function will not work with an argument as a Range 【发布时间】:2013-09-17 00:05:57 【问题描述】:我编写了一个相当简单的 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 还是预期类型?
【问题讨论】:
你没有在函数的任何地方返回 TSTT! 是的,很抱歉最后一行是为了返回结果。修好了。 【参考方案1】:你不需要在函数头声明参数,你可以测试用户给你的。您实际上可以测试用户给您的内容:
Function foo(r) As String
If TypeOf r Is Range Then
v = r.Value
Else
v = r
End If
'
' more stuff
'
End Function
【讨论】:
啊,这就是我认为必须有办法做到这一点的原因。感谢您让我走上正确的道路。这是 MS 构建其功能的方式吗,因为在他们的许多功能上,您可以使用范围或值。以上是关于Excel VBA 函数不能将参数用作范围的主要内容,如果未能解决你的问题,请参考以下文章