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

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

我已经编写了根据单个列过滤器中的单个输入值删除行的代码,我想对其进行编辑以处理来自同一列过滤器的多个输入值。

数据库的 header 在 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(二月)、3(三月)、4(四月)。

真的不知道下一步该做什么,我还是 vba 的新手。

尝试用这个替换自动过滤器行。它假定值是在输入框中输入的,并以逗号分隔。它将它们转换成一个数组。

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