【发布时间】:2016-05-02 05:54:07
【问题描述】:
我有一个宏,它遍历列并从范围内的所有单元格中删除数字。我想添加一个可选参数,这样我就可以调用 sub 同时告诉它要在哪些列上运行。这是我所拥有的:
Sub GEN_USE_Remove_Numbers_from_Columns(Optional myColumns as String)
这个想法是我可以从另一个 sub 调用它,就像这样 GEN_USE_...Columns("A B C")
但是,我无法从 VB 编辑器运行它,也无法在宏窗口中看到该宏(单击查看 --> 宏时)。为什么不?为什么我必须用参数调用它(甚至GEN_USE_...Columns(""))我不能再调用GEN_USE_...Columns()了。
我有seen that,你可以在末尾添加= Nothing,如果没有给出,则设置默认值。我已经尝试过 () 但它没有做任何事情。
我想我的问题是 A) 为什么我在宏窗口中看不到具有可选参数的宏? B) 为什么我不能直接从 VB 编辑器调用带有参数的宏?我必须实际创建一个子程序,然后我可以在该子程序中调用宏。不再只是突出显示一些文本并点击“播放”。
我知道这两个问题可能是相关的,所以任何见解都将不胜感激!
(PS:我知道我们应该发布代码,但我认为这不是很相关。当然,如果您想看到它,请告诉我,我会更新)。
【问题讨论】:
-
使用
Optional myColumns as Variant在运行宏 ([alt]+[F8]) 对话框中显示它。或者,将其隐藏;您可以键入名称并单击运行。变体类型也是唯一能正确响应IsMissing的类型。 -
您可以从 VBE 的即时窗口 ([ctrl]+G) 中使用参数调用 sub。