gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:35:10 24 4
gpt4 key购买 nike

像我这样的菜鸟可以快速上手!

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

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 代替

最佳答案

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

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

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

创建包装函数是一种选择,但我会让您自己决定这是否是适合您的解决方案。

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

Used only as the last argument in arglist to indicate that the final argument is an Optional array of Variant elements.

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

关于VBA:将变量(从工作表)传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17770553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com