VBA 可选参数

Posted

技术标签:

【中文标题】VBA 可选参数【英文标题】:VBA optional parameters 【发布时间】:2014-03-16 15:03:42 【问题描述】:
Private Sub a()
   b 1,
End Sub

Private Sub b(p1 As Variant, Optional p2 As Variant)
   Stop
End Sub

我在 Access 中使用 VBA。我想要一个带有 2 个参数的过程 - 最后一个是可选的。 为什么 Private Sub a() 不能编译。

如何通过调用 b() 运行 a() 并且不传递任何参数作为第二个参数?

【问题讨论】:

只是b 1 没有逗号 just b 1 有效,但问题是假设我希望有三个参数,最后 2 个是可选的,如果缺少第三个(最后一个)参数,它总是返回编译错误 使用命名参数:b p1:=1 Yes OK 谢谢 Private Sub a() b p1:=1, p2:=1 End Sub Private Sub b(p1 As Variant, Optional p2 As Variant, Optional p3 As Variant) Stop End Sub p3 在 Sub a() 中的任何地方都没有提到,因此它丢失了。而不是 b 1,1,谢谢 【参考方案1】:

结尾的, 违反语法规则,省略:

b 1

(或者提供一个占位符b 1, p2:

【讨论】:

能否请您显示缺少最后一个参数的 sub a() 和 sub b() 代码?谢谢

以上是关于VBA 可选参数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VBA 过程中使用可选数组参数?

(Excel)带有可选参数的vba程序将无法启动

vba中 find函数每个参数的详细解释

如何测试是不是提供了可选参数?

如何测试是否提供了可选参数?

将数据从 Excel 导出到 Access - 错误:参数不是可选的