Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
Excel VBA-从单列筛选器中删除多个值上的行_Excel_Filter_Delete Row_Vba - Fatal编程技术网

Excel VBA-从单列筛选器中删除多个值上的行

Excel VBA-从单列筛选器中删除多个值上的行,excel,filter,delete-row,vba,Excel,Filter,Delete Row,Vba,我已经编写了一段代码,该代码基于单个列过滤器中的单个输入值删除行,我希望编辑该代码以处理来自同一列过滤器的多个输入值 数据库的标题位于A4:Z上 Option Explicit Sub Test() Dim ws As Worksheet Dim lastRow As Long Dim rng As Range Dim myValue As Variant 'set sheet reference Set ws = ActiveSheet

我已经编写了一段代码,该代码基于单个列过滤器中的单个输入值删除行,我希望编辑该代码以处理来自同一列过滤器的多个输入值

数据库的标题位于A4:Z上

Option Explicit

Sub Test()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim rng As Range
    Dim myValue As Variant

   'set sheet reference
    Set ws = ActiveSheet

    'turn off autofilter
    ws.AutoFilterMode = False

    'get last row
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    'set range to filter
    Set rng = ws.Range("A4:Z" & lastRow)

    'get user input
    myValue = InputBox("Periods to delete?")

    'set filter
    rng.AutoFilter Field:=8, Criteria1:=myValue

    'delete visible rows
    rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    'show remaining rows by removing autofilter
    ws.AutoFilterMode = False

End Sub
输入框目前只使用一个周期(月数)。我希望它取多个值,比如'2,3,4'。这将删除2(2月)、3(3月)、4(4月)


真的不知道下一步该怎么办,我还是vba新手

试着用这个替换自动过滤线。它假定值输入到由逗号分隔的输入框中。它将它们转换为数组

rng.AutoFilter Field:=8, Criteria1:=Array(Split(myValue, ",")), Operator:=xlFilterValues

真的很抱歉,但是有没有一种方法可以让代码捕获这样的值:“16m1-16m5”?似乎什么都不做。如果您是说分隔符是连字符而不是逗号,只需将第二个拆分参数更改为连字符即可。不抱歉,该值字面上是“16m1-16m5”。我尝试的例子是:“16m1,16m4,16m1-16m5”,这应该是有效的——这个值确实存在吗?尝试将参数更改为“,”,如果逗号后有空格。不确定我做错了什么,但你是对的,它确实有效!很抱歉:)