Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA自定义项-如何拥有;无限制“;ByVal参数?_Vba_Excel - Fatal编程技术网

VBA自定义项-如何拥有;无限制“;ByVal参数?

VBA自定义项-如何拥有;无限制“;ByVal参数?,vba,excel,Vba,Excel,我有一个自定义子。它可以从列中删除数字。这非常简单,它要求用户(通过inputbox)输入要从中删除数字的列。用户可以输入“B C D E F”,它将循环通过B、C、D、E、F列并删除数字 但是,我想从另一个子系统调用此子系统,但不使用inputbox。我更喜欢将我的专栏传递到sub,即 呼叫删除号码(B、C、D、E、F) 它会使用这些列运行我的removeNumbers宏 我如何设置我的removeNumberssub以允许传递无限的值(如果这不是术语的话,很抱歉!)。因为我也可以做B列,或者

我有一个自定义子。它可以从列中删除数字。这非常简单,它要求用户(通过inputbox)输入要从中删除数字的列。用户可以输入“B C D E F”,它将循环通过B、C、D、E、F列并删除数字

但是,我想从另一个子系统调用此子系统,但不使用inputbox。我更喜欢将我的专栏传递到sub,即

呼叫删除号码(B、C、D、E、F)

它会使用这些列运行我的removeNumbers宏

我如何设置我的
removeNumbers
sub以允许传递无限的值(如果这不是术语的话,很抱歉!)。因为我也可以做B列,或者B列,C列,D列,E列,F列,G列,H列,I列,…,ZZ列

我的想法是:

Sub-removeNumbers(可选ByVal x作为字符串,可选ByVal y作为字符串,可选ByVal z作为字符串)

但这只为三个“传递变量”留出了空间。如何创建一个开放式的?类似于
Sub-removeNumbers(可选的ByVal cols()作为数组)

如果我能澄清任何事情,请告诉我

值得一提的是,以下是我的
removeNumbers
sub:

Sub removeNumbers()
Dim ChosenColumn As String
Dim LastRowCol As String, i As Integer, cel, columnArray() As String

ChosenColumn = InputBox("What columns (A,B,C, etc.) would you like to remove numbers from?  Use SPACES, to separate columns")
columnArray() = Split(ChosenColumn)

LastRowCol = InputBox("What column do you want to use to determine the last cell?")

Application.ScreenUpdating = False

With ActiveSheet
    lastRow = .Cells(.Rows.Count, LastRowCol).End(xlUp).row
End With

Dim startCell As Range

For i = LBound(columnArray) To UBound(columnArray)
    Debug.Print "Now going through column " & columnArray(i)
    Column2Copy = columnArray(i)
    For Each cel In Range(Cells(1, columnArray(i)), Cells(lastRow, columnArray(i)))
        If IsNumeric(cel.Value) And Not IsEmpty(cel.Value) Then
            cel.Value = ""
        End If
    Next

Next i

Application.ScreenUpdating = True

Dim runAgain
runAgain = MsgBox("Run again?", vbYesNo)
If runAgain = vbYes Then
    Call removeNumbers
Else

    MsgBox ("Done!")
End If

End Sub

Edit3:对于解决方案,@Findwindow的链接是学习如何更程序化地实现这一点的一个很好的资源@Rory的答案是一个简短而甜蜜的解决方案,所以两者都有效。谢谢大家

@findwindow-你怎么知道这不是一个用来愚弄那些认为我不在外边的人的虚拟用户。。。不管怎样,我不是这个蝙蝠角色<代码>允许无限制的值通过也许?@findwindow-Tim Williams就是你要找的人:)那页看起来很密集-但是伙计,我很高兴我问了这个问题,这看起来是一个很棒的工具/方法。再次感谢@TimWilliams和Findwindow!您也可以像使用
Inputbox一样传递分隔字符串并拆分它