简体   繁体   English

Excel VBA-从单个列过滤器删除多个值上的行

[英]Excel VBA - Delete rows on multiple values from a single column filter

I have written code which deletes rows based on a SINGLE input value from a single column filter, I want to edit this to handle multiple input values from the same column filter. 我已经编写了删除单个列过滤器中基于单个输入值的行的代码,我想对其进行编辑以处理来自同一列过滤器的多个输入值。

The database's header is on A4:Z. 数据库的头位于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

The input box takes a single period (month number) at present. 输入框当前只包含一个句点(月数)。 I want it to take multiple values like so '2,3,4'. 我希望它采用多个值,例如“ 2,3,4”。 This will delete 2 (feb), 3 (march), 4 (april). 这将删除2(2月),3(3月),4(4月)。

Really not sure what to do next, I'm still a newb to vba. 真的不确定下一步该怎么做,我还是vba的新手。

Try replacing the autofilter line with this. 尝试以此替换自动过滤器线。 It assumes the values are entered in the input box separated by commas. 假定值在输入框中输入,并以逗号分隔。 It converts them into an array. 它将它们转换为数组。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM