Excel VBA-从单列筛选器中删除多个值上的行
我已经编写了一段代码,该代码基于单个列过滤器中的单个输入值删除行,我希望编辑该代码以处理来自同一列过滤器的多个输入值 数据库的标题位于A4:Z上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
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”,这应该是有效的——这个值确实存在吗?尝试将参数更改为“,”,如果逗号后有空格。不确定我做错了什么,但你是对的,它确实有效!很抱歉:)