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。我看到其他一些网站使用"someRange作为变体"(这样可以避免像我面临的问题)。然而,这是"良好的编码实践"吗?

b。使用包装器函数foo_wrap而不是

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

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

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

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

如果你确实想追求多用途功能,那么你可以研究ParamArray:

仅用作arglist中的最后一个参数,以指示argument是Variant元素的可选数组。

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

最新更新