带参数的VBA宏main在宏对话框中不显示的问题咨询
带参数的VBA宏无法在宏对话框显示的问题
我编写了如下带参数的VBA宏:
Public Sub main(ByRef wkb As Workbook)
发现该宏main无法在宏对话框中显示;但编写无参数的宏:
Public Sub main()
时,就能正常显示。我确定是参数ByRef wkb As Workbook导致的,但看到其他人这么操作却没问题,想咨询我哪里出错了?
原因与解决办法
- VBA宏对话框仅显示无参数的Public子过程,这是Excel的默认规则——因为对话框无法为带参数的宏传递参数,所以直接隐藏了这类宏。
- 你看到他人操作正常,大概率是他们并非通过宏对话框运行带参数的宏,而是采用了以下调用方式:
- 在其他VBA代码中直接调用(例如
main ThisWorkbook) - 给按钮或形状指定宏时,手动输入宏名并确保调用时能传递对应参数
- 通过自定义功能区按钮触发,在按钮的回调代码里传递参数
- 在其他VBA代码中直接调用(例如
如果想让带参数的宏方便调用,可以编写一个无参数的"入口宏":
Public Sub main_Entry() ' 可手动指定参数,例如此处传递当前工作簿 main ThisWorkbook End Sub
这个无参数的main_Entry会出现在宏对话框中,运行它即可间接调用带参数的main。
内容的提问来源于stack exchange,提问作者Jun Wu 131
相关产品推荐
相关产品推荐

