每个人。我是VBA语言的新手。根据我的情况,
1)我想从H列中过滤“未完成”并删除
2)我想从Q列中过滤“ Y”并删除它
我已经编写了一些代码来运行它。第一次按运行时,我可以过滤和删除第一个需求,但是如果要过滤和删除第二个需求,则需要再次按运行。我是否可以一次执行这些要求。以下附件是我的代码
Sub try2()
Dim Filterrng1 As Range, Filterrng2 As Range
Dim Delrng1 As Range, Delrng2 As Range
Dim FilterArr1
Dim FilterArr2
Application.ScreenUpdating = False
FilterArr1 = Array("Unfulfilled")
FilterArr2 = Array("Y")
Set Filterrng1 = Range("H1", Range("H" & Rows.Count).End(xlUp))
Set Filterrng2 = Range("Q1", Range("Q" & Rows.Count).End(xlUp))
Set Delrng1 = Filterrng1.Offset(1, 0)
Set Delrng2 = Filterrng2.Offset(1, 0)
Debug.Print LBound(FilterArr1)
Debug.Print LBound(FilterArr2)
For f = LBound(FilterArr1) To UBound(FilterArr1)
Filterrng1.AutoFilter Field:=1, Criteria1:="=" & FilterArr1(f)
If Filterrng1.SpecialCells(xlCellTypeVisible).Count > 1 Then
Delrng1.EntireRow.Delete
End If
For a = LBound(FilterArr2) To UBound(FilterArr2)
Filterrng2.AutoFilter Field:=1, Criteria1:="=" & FilterArr2(a)
If Filterrng2.SpecialCells(xlCellTypeVisible).Count > 1 Then
Delrng2.EntireRow.Delete
End If
Next
Next
Filterrng1.AutoFilter 'Remove Autofilter from range
Filterrng2.AutoFilter 'Remove Autofilter from range
End Sub
答案 0 :(得分:0)
sub try3()
Dim rg As Range
Set rg = ActiveSheet.Range("H1").CurrentRegion 'Edit to your range
Dim Filterrng1 As Range, Filterrng2 As Range
Dim Delrng1 As Range, Delrng2 As Range
Dim FilterArr1
Dim FilterArr2
Set Filterrng1 = Range("H1", Range("H" & Rows.Count).End(xlUp))
Set Filterrng2 = Range("Q1", Range("Q" & Rows.Count).End(xlUp))
Set Delrng1 = Filterrng1.Offset(1, 0)
Set Delrng2 = Filterrng2.Offset(1, 0)
rg.AutoFilter Field:=1, Criteria1:="Unfulfilled"
If Filterrng1.SpecialCells(xlCellTypeVisible).Count > 1 Then
Delrng1.EntireRow.Delete
End If
rg.AutoFilter
rg.AutoFilter Field:=10, Criteria1:="Y"
If Filterrng2.SpecialCells(xlCellTypeVisible).Count > 1 Then
Delrng2.EntireRow.Delete
End If
end sub
添加其他内容,例如屏幕更新等。