gpt4 book ai didi

vba - 如何在函数中指定多个可选参数而不考虑它们的顺序

转载 作者:行者123 更新时间:2023-12-01 02:23:28 32 4
gpt4 key购买 nike

下面的示例必须按顺序给出可选参数;因此 ShowHeaders 必须先于 ValueAdd 等等。如果我想指定 ValueAdd,我*必须*指定 ShowHeaders:

Function Example(Value1, Optional ShowHeaders = "Headers=N", Optional ValueAdd = "Sprd=0")

我希望能够指定一个或多个(相对)大的可选参数列表:1)但不按顺序,以及 2)不一定是全部。

对于 1) 我在想,也许可以列出一个通用的参数列表,例如而不是上面做的:
Function Example(Value1, Optional Arg1, Optional Arg2)

然后随后检查 Arg1 的最左边部分是否 = "Headers="或 "Sprd="等,然后对 Arg2 执行相同操作。这很好,但似乎效率不高,我计划创建具有 > 10 个可选参数的 UDF。上述解决方案也将解决 2) 但我只是觉得它的编码不是很好。

对于 2) 我知道我们可以使用
If IsMissing(Arg) Then

但这并没有真正解决我们指定函数的顺序。

最佳答案

您可以将 := 运算符与变量名称一起使用。这样您只需要发送特定于该调用的可选值。使用上面的示例,您可以使用:

Call Example(Value1, ValueAdd := "Sprd=0")

这样你就不必输入任何关于节目头等的信息。

编辑:

我已经修改了你的例子来处理缺失的参数,以便它们可以用于数学,希望这会有所帮助。
Function Example(Value1, Optional ValueA, Optional ValueB)

If IsMissing(ValueB) Then ValueB = 0
If IsMissing(ValueA) Then ValueA = 0

Example = (Value1 + ValueA) * ValueB)
MsgBox (Example)

End Function

Sub TestExample()
Call Example(2, ValueB:=1)
Call Example(2, ValueB:=1, ValueA:=6)
End Sub

关于vba - 如何在函数中指定多个可选参数而不考虑它们的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454165/

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