在UDF VBA中的可选参数上获得错误弹出窗口

getting an error pop-up window on optional argument in UDF VBA

提问人:carlos_ruiz 提问时间:11/15/2023 最后编辑:carlos_ruiz 更新时间:11/15/2023 访问量:28

问:

我在尝试在用户定义的函数上使用可选参数时收到一个弹出错误窗口。 UDF 有 3 个参数,第一个和第三个参数是必需的,而第二个是可选的。代码与此类似

function test (p1 as string, optional p2 as string="", p3 as string) as boolean
...
test=true
End function

当我完成函数语句的那一刻,会弹出一个错误窗口,其中包含以下消息

编译错误:

预期:可选

指向 p3 参数。

虽然快速的方法是将可选参数移动到第三个参数,但它对我的 udf 不是很用户友好,我猜测是否有任何其他方法可以解决这个问题,或者我是否收到此错误,因为我必须在配置中设置一些东西

谢谢

Excel VBA 用户定义函数 可选参数

评论

0赞 Paul 11/15/2023
正如@chill60所说,没有其他办法。查看 learn.microsoft.com/en-us/dotnet/visual-basic/...“如果参数列表包含可选参数,则其后面的每个参数也必须是可选的。”
0赞 CHill60 11/16/2023
这与配置无关,而是您必须遵循的语法规则。唯一的其他选择是将 p3 设为可选或使 p2 为必填项。
0赞 carlos_ruiz 11/16/2023
感谢 chill60 和 Paul 的澄清

答:

2赞 CHill60 11/15/2023 #1

将函数声明更改为

Function test (p1 As String, p3 As String, Optional p2 As String="") As Boolean

不能在可选参数之后使用强制参数