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
我已经编写了根据单个列过滤器中的单个输入值删除行的代码,我想对其进行编辑以处理来自同一列过滤器的多个输入值。
数据库的 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