我有一个 VBA 代码用于接收用户的输入并设置输入的过滤条件,但是,当用户输入值并执行函数时,过滤条件将为空白。我的电话号码以 0 开头作为输入。但是当我手动设置带有数字的过滤条件时,函数就可以工作了。请问可以帮我一下吗?
以下是有效且给我带来问题的代码:
Sub sort()
A = InputBox("ENTER THE SUBJECT NUMBER")
Range("A1:B1").Select
ActiveSheet.Range("$A$2:$AD$6184").AutoFilter Field:=3, Criteria1:= _
"A"
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Range("B1").Select
End Sub
运行此代码后,过滤的列为空白
Sub sort()
A = InputBox("ENTER THE SUBJECT NUMBER")
Range("A1:B1").Select
ActiveSheet.Range("$A$2:$AD$6184").AutoFilter Field:=3, Criteria1:= _
"08122816403"
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Range("B1").Select
End Sub
虽然这个直接输入代码的方法很好用
答案1
您将用户输入存储在变量 A 中,但按字面“A”进行过滤,就像实际字符一样。只需删除引号即可。正确代码:
Sub sort()
A = InputBox("ENTER THE SUBJECT NUMBER")
Range("A1:B1").Select
ActiveSheet.Range("$A$2:$AD$6184").AutoFilter Field:=3, Criteria1:=A
Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
ActiveSheet.Paste
Range("B1").Select
End Sub
致谢@JohnSUN 的评论。