Bru*_*yne 7 excel vba excel-vba udf
我有一个宏通过列,并从范围内的所有单元格中删除数字.我想添加一个可选参数,所以我可以调用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()了.
我已经看到你可以添加= Nothing到最后,如果没有给出一个默认值.我已经尝试了()但它没有做任何事情.
我想我的问题是A)为什么我在宏窗口中看不到具有可选参数的宏?和B)为什么我不能直接从VB编辑器调用带参数的宏?我必须实际创建一个sub,然后我可以调用该sub中的宏.不再只是突出显示一些文字并点击"播放".
我知道这两个问题可能是相关的,所以任何见解都会受到赞赏!
(PS:我知道我们应该发布代码,但我不认为这是非常相关的.当然,如果你想看到它,请告诉我,我会更新).
小智 8
用于Optional myColumns as Variant在运行宏([alt] + [F8])对话框中显示它.或者,将其隐藏起来; 您可以键入名称,然后单击"运行".变体类型也是唯一能够正确响应IsMissing函数的类型.
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
Run Code Online (Sandbox Code Playgroud)
您可以使用VBE的立即窗口([ctrl] + G)中的参数调用sub.
具有ANY参数(可选或非可选)的Sub不能直接运行,只能从另一个Sub或Function调用
最好的选择是编写一个包装子,它将出现在“宏”窗口中
Sub USER_Remove_Numbers_from_Columns()
GEN_USE_Remove_Numbers_from_Columns
End Sub
Run Code Online (Sandbox Code Playgroud)