带有可选参数的用户 Sub - 在宏中不可见 window
User Sub with Optional parameters - not visible in Macro window
我有一个宏,它遍历列并从范围内的所有单元格中删除数字。我想添加一个可选参数,这样我就可以调用 sub,同时告诉它 运行 在哪些列上。这是我拥有的:
Sub GEN_USE_Remove_Numbers_from_Columns(Optional myColumns as String)
想法是我可以从另一个子调用它,像这样 GEN_USE_...Columns("A B C")
但是,我无法从 VB 编辑器中 运行,也无法在宏 Window 中看到该宏(单击查看 --> 宏时)。为什么不?为什么我必须用参数调用它(甚至GEN_USE_...Columns("")
)我不能再调用GEN_USE_...Columns()
了。
我已经 seen that 你可以在末尾添加 = Nothing
,如果给出 none 则设置默认值。我已经试过了 () 但它没有做任何事情。
我想我的问题是 A) 为什么我在宏 window 中看不到具有可选参数的宏?和 B) 为什么我不能直接从 VB 编辑器调用带参数的宏?我必须实际创建一个子程序,然后我才能在该子程序中调用宏。不再只是突出显示一些文本并点击 "Play"。
我知道这两个问题可能相关,所以任何见解都将不胜感激!
(PS: 我知道我们应该 post 编码,但我认为这不是很相关。当然,如果你想看,让我知道了,我会更新)。
带有任何参数(可选与否)的 Sub 不能直接 运行 并且只能从另一个 Sub 或函数调用
最好的选择是编写一个将出现在宏中的包装器 Sub window
Sub USER_Remove_Numbers_from_Columns()
GEN_USE_Remove_Numbers_from_Columns
End Sub
使用 Optional myColumns as Variant
在 运行 宏 ([alt]+[F8]) 对话框中显示它。或者,将其隐藏;您可以键入名称并单击 运行。变体类型也是唯一能够正确响应 IsMissing function.
的类型
Sub GEN_USE_Remove_Numbers_from_Columns(Optional myColumns As Variant)
If IsMissing(myColumns) Then
myColumns = Intersect(Selection.Parent.UsedRange, Selection).Address '.address 'cause you were using a string
End If
Debug.Print Range(myColumns).Address(external:=True)
End Sub
您可以使用 VBE 的即时 window ([ctrl]+G) 中的参数调用子程序。
我有一个宏,它遍历列并从范围内的所有单元格中删除数字。我想添加一个可选参数,这样我就可以调用 sub,同时告诉它 运行 在哪些列上。这是我拥有的:
Sub GEN_USE_Remove_Numbers_from_Columns(Optional myColumns as String)
想法是我可以从另一个子调用它,像这样 GEN_USE_...Columns("A B C")
但是,我无法从 VB 编辑器中 运行,也无法在宏 Window 中看到该宏(单击查看 --> 宏时)。为什么不?为什么我必须用参数调用它(甚至GEN_USE_...Columns("")
)我不能再调用GEN_USE_...Columns()
了。
我已经 seen that 你可以在末尾添加 = Nothing
,如果给出 none 则设置默认值。我已经试过了 () 但它没有做任何事情。
我想我的问题是 A) 为什么我在宏 window 中看不到具有可选参数的宏?和 B) 为什么我不能直接从 VB 编辑器调用带参数的宏?我必须实际创建一个子程序,然后我才能在该子程序中调用宏。不再只是突出显示一些文本并点击 "Play"。
我知道这两个问题可能相关,所以任何见解都将不胜感激!
(PS: 我知道我们应该 post 编码,但我认为这不是很相关。当然,如果你想看,让我知道了,我会更新)。
带有任何参数(可选与否)的 Sub 不能直接 运行 并且只能从另一个 Sub 或函数调用
最好的选择是编写一个将出现在宏中的包装器 Sub window
Sub USER_Remove_Numbers_from_Columns()
GEN_USE_Remove_Numbers_from_Columns
End Sub
使用 Optional myColumns as Variant
在 运行 宏 ([alt]+[F8]) 对话框中显示它。或者,将其隐藏;您可以键入名称并单击 运行。变体类型也是唯一能够正确响应 IsMissing function.
Sub GEN_USE_Remove_Numbers_from_Columns(Optional myColumns As Variant)
If IsMissing(myColumns) Then
myColumns = Intersect(Selection.Parent.UsedRange, Selection).Address '.address 'cause you were using a string
End If
Debug.Print Range(myColumns).Address(external:=True)
End Sub
您可以使用 VBE 的即时 window ([ctrl]+G) 中的参数调用子程序。