VBA:将变量(从工作表)传递到函数中

VBA:将变量(从工作表)传递到函数中,vba,Vba,给像我这样的人来一杯快速的 所以通常我会将工作表中的一些数据传递到函数中,如下所示: public function foo (someRange as range) dim someData as double if IsNumeric(someRange.value), do some crap end function 当我试图编写使用此函数foo的函数时,就会出现问题。我想传入一个double(),而不是range。因此,如果我要解决这个问题,我可以: a。我见过其他一些网

给像我这样的人来一杯快速的

所以通常我会将工作表中的一些数据传递到函数中,如下所示:

public function foo (someRange as range)
   dim someData as double
   if IsNumeric(someRange.value), do some crap
end function
当我试图编写使用此函数foo的函数时,就会出现问题。我想传入一个double(),而不是range。因此,如果我要解决这个问题,我可以:

a。我见过其他一些网站使用“someRange作为变体”来代替(这样可以避免我面临的问题)。然而,这是“良好的编码实践”吗

b。改为使用包装函数foo_wrap

您可以使用一个变量,然后使用
TypeName
来找出提供了哪种类型的参数:

?TypeName(range("A1"))
Range
?TypeName(45.66)
Double
?TypeName(array(34.5,56.7))
Variant()
就我个人而言,我只需要创建两个独立的函数。使用一个函数对我来说太麻烦了。为了使单个函数不只是复制代码,它必须将所有
范围
值提取到一个双数组中。这只是告诉我们,它应该是两个函数

创建包装器函数是一种选择,但我将让您决定这是否是一个好的解决方案

如果您确实希望实现多用途功能,则可以调查
ParamArray

仅用作arglist中的最后一个参数,表示 参数是变量元素的可选数组

这将允许您创建一个行为类似于内置函数(SUM等)的函数,该函数可以接受数量可变的参数,这些参数可以是范围和/或值。然而,特别是你是一个noob,我会暂时忽略这种可能性。原则