我已经写了一个自动过滤代码2标准,它是完美的工作.唯一的问题是,如果第二个标准不是,它返回一个空白的工作表,然后我必须清除过滤器,让我的数据回来.我想修改代码,所以它只会处理我的消息框,并返回我的工作表不变.
Sub filter_Available()
Dim strInput As String
Dim fltrdrng As Range
Dim lUpper As Long
Dim LstRow2 As Long
Dim j As Integer
Dim r As Range
Sheets("Available").Select
Set r = Range(Range("D1"), Range("D1").End(xlDown))
strInput = InputBox("Enter The Project Code")
ActiveSheet.Range("A:D").AutoFilter Field:=1, Criteria1:=strInput
ActiveSheet.Range("A:D").AutoFilter Field:=2, Criteria1:=Sheets("Requirement").Range("G2").Value
j = WorksheetFunction.Count(r.Cells.SpecialCells(xlCellTypeVisible))
If j = 0 Then
MsgBox "The ICD was not found"
Exit Sub
Else: If j > 0 Then Set fltrdrng = Intersect(ActiveSheet.UsedRange, ActiveSheet.UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible)
lUpper = UBound(Split(fltrdrng.Address, "$"))
LstRow2 = Split(fltrdrng.Address, "$")(lUpper)
Range("A2:D" & LstRow2).Copy (Sheets("TempAvail").Range("A1"))
End If
End Sub
字符串
1条答案
按热度按时间aemubtdh1#
你必须在函数结束时清除自动筛选。
另外,您不必计算WorksheetFunction.Count()的第一个单元格,不是吗?
字符串
PS:我不知道为什么,但是WorksheetFunction.Count对我不起作用:我用WorksheetFunction.CountA代替了它