2017-07-18 68 views
0

我有下面的代码基于什么输入到文本框中的过滤器。这适用于字符串,但它不适用于整数搜索。任何想法我可能做错了什么?VBA过滤器(搜索整数值)

Private Sub TextBox1_Change() 
On Error Resume Next 
metin = TextBox1.Value 
Set bul = Range("a4:a10").Find(What:=metin) 
Application.Goto Reference:=Range(bul.Address), Scroll:=False 
Selection.AutoFilter field:=1, Criteria1:=TextBox1.Value & "*" 
If metin = "" Then 
    Selection.AutoFilter 
End If 
End Sub 

回答

1

在开始处添加Range("a4:a10").NumberFormat = "@"。使用数字,Excel会尝试比较值,而不是字符串中的数字表示。因此,它试图完全匹配:)与该行它将数字序列视为字符串,并将应用字符串比较。最终的代码如下:

Private Sub TextBox1_Change() 

Range("a4:a10").NumberFormat = "@" 

On Error Resume Next 
metin = TextBox1.Value 
Set bul = Range("a4:a10").Find(What:=metin) 
Application.Goto Reference:=Range(bul.Address), Scroll:=False 
Selection.AutoFilter field:=1, Criteria1:=TextBox1.Value & "*" 
If metin = "" Then 
    Selection.AutoFilter 
End If 
End Sub 

为了优化起见,你应该某处设置范围格式这种方法之外,所以你不必做的每一文本框已经改变一次。

+0

谢谢你,但找到函数之前? –

+0

嗯尝试完全是你写的,但它仍然不会找到列中的数字返回没有结果 –

+0

我想我理解我的错误,但问题是,它必须是搜索的确切数量?我的意思是,如果我想搜索123我必须键入123而不只是12有没有办法做到这一点? –