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

时间:2013-07-21 08:43:45

标签: vba

像我一样快速的noob!

所以我通常会将工作表中的某些数据范围传递给函数:

public function foo (someRange as range)
   dim someData as double
   if IsNumeric(someRange.value), do some crap
end function

当我尝试编写一些使用此函数foo的函数时,会出现问题。而不是范围我想传递double()。所以,如果我要解决这个问题,我可以:

一个。我已经看到一些其他网站使用“someRange as Variant”代替(然后避免像我面对的问题)。但是,它是“良好的编码实践”吗?

湾使用包装函数foo_wrap代替

1 个答案:

答案 0 :(得分:1)

可以使用Variant然后TypeName来找出提供的参数类型:

?TypeName(range("A1"))
Range
?TypeName(45.66)
Double
?TypeName(array(34.5,56.7))
Variant()

就个人而言,我只想创建两个独立的函数。使用一个函数对我来说会很麻烦。对于单个函数而言,不仅仅是复制代码,它必须将所有Range值提取到Double数组中。这只是告诉我们它应该是两个函数。

创建包装函数是一个选项,但我会让您决定这是否是一个很好的解决方案。

如果您确实想要使用多用途功能,那么您可以调查ParamArray

  

仅用作arglist中的最后一个参数来表示最终的   argument是Variant元素的Optional数组。

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