像我一样快速的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代替
答案 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原则。