如果filter中没有值,则退出子

我正在运行一个macros,它根据用户input的数字进行过滤。 然后获取该数字并根据该值过滤列表。 我需要一个validation,如果用户input一个不在列表中的数字,它将退出macros。 我觉得我很接近,但我是VBA新手,所以我一直陷入困境。 任何帮助都是极好的!

谢谢!

'Filter based on user entry Sheets("New Revision ").Select part = Range("B4").Value Sheets("PN_List").Select Columns("D:E").Select Selection.EntireColumn.Hidden = False ActiveSheet.Range("$A$1:$K$3000").AutoFilter Field:=1, Criteria1:=part If ActiveSheet.Range("$A$1:$K$3000").AutoFilter Field=1, Criteria1="" Then MsgBox "Part number not found please try again.", vbOKOnly + vbExclamation, "Entry Error" Exit Sub End If 

 Sheets("New Revision ").Select part = Range("B4").Value Sheets("PN_List").Select If Application.Countif([A1:A3000], part) < 1 Then MsgBox "Part number not found please try again.", vbOKOnly + vbExclamation, "Entry Error" Exit Sub End If Sheets("PN_List").Columns("D:E").EntireColumn.Hidden = False ActiveSheet.Range("$A$1:$K$3000").AutoFilter Field:=1, Criteria1:=part 

试试这个:

 Sub Parts() Dim Part As Variant Dim Found As Boolean Part = Sheets("New Revision").Range("B4").Value On Error Resume Next ' If the lookup fails, ignore the error ' the following assumes Part is in Column A Found = WorksheetFunction.Match(Part, Sheets("PN_List").Range("$A$1:$A$3000"), 0) > 0 On Error GoTo 0 ' Resume normal error handling If Not Found Then MsgBox "Part number not found please try again.", vbOKOnly + vbExclamation, "Entry Error" End If End Sub 

编辑:你仍然可以过滤,如果你想要的。 也许一个好的地方是在If Not FoundElse条款中。