3

对于像我这样的菜鸟来说,一个快速的!

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

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

4

1 回答 1

1

可以使用 Variant 然后TypeName找出提供了哪种参数:

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

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

创建一个包装函数是一种选择,但我会让你决定这是否对你来说是一个好的解决方案。

如果您确实想追求多功能功能,那么您可以调查ParamArray

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

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

于 2013-07-21T10:10:13.493 回答