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,我会暂时忽略这种可能性。原则