2017-07-18 12 views
0

テキストボックスに入力された内容に基づいてフィルタリングする次のコードがあります。これは文字列に対しては機能しますが、整数検索では機能しません。私は間違って何をしているのだろうか?VBAフィルタ(Interger値の検索)

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だけではなく、それを行う方法がありますか? –