HOME > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > テキストボックスで指定された値と同じセルを検索して選択する

即効テクニック

ユーザーフォーム関連のテクニック

テキストボックスで指定された値と同じセルを検索して選択する

(Excel 97)
Findメソッドを使って、指定されたセル範囲の中でテキストボックスに入力された情報を検索し、情報が見つかった最初のセルを選択します。
Findメソッドは、検索の条件にあてはまるセルが見つからなかった場合は、Nothingを返します。
フォームにテキストボックス「TextBox1」を配置して、テキストボックスの内容が変更された時に発生するイベント「Change」に次のイベントプロシージャを作成します。
Private Sub TextBox1_Change()
    Dim Mynumber  As String
    Dim FoundCell As Range
    
    Range("A1").Select
    Mynumber = UserForm1.TextBox1.Text

    Set FoundCell = Cells.Find(What:=Mynumber, After:=ActiveCell, _
                               LookIn:=xlFormulas, LookAt:=xlPart, _
                               SearchOrder:=xlByRows, _
                               SearchDirection:=xlNext, MatchCase:=False, _
                               MatchByte:=False)
    
    If FoundCell Is Nothing = False Then
        FoundCell.Select
    End If

End Sub
Findメソッドの構文は、次のとおりです。

<構文>
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte)

expression
必ず指定します。
対象となるRangeオブジェクトを表すオブジェクト式を指定します。

What
必ず指定します。
対象セル範囲内で検索するデータです。文字列など、 セル内のデータに該当する値を指定します。

After
省略可能です。
指定したセルの次から検索が開始されます。
この引数で指定するセルは、コードからではなく、通常の画面上で検索を行う場合のアクティブセルに該当します。
対象セル範囲の中の、単一セルでなければなりません。検索は指定したセルの次から始まるので、指定したセル自体は、検索が範囲全体を一度検索して戻ってくるまで検索されません。この引数を省略すると、対象セル範囲の左上端のセルが検索の開始点となります。

LookIn
省略可能です。
使用できる定数は、XlFindLookInクラスのxlFormulas、xlValues、xlCommentsのいずれかです。

LookAt
省略可能です。
使用できる定数は、XlLookAtクラスのxlPartまたはxlWholeです。

SearchOrder
省略可能です。
使用できる定数は、XlSearchOrderクラスのxlByColumnsまたはxlByRows です。

SearchDirection
省略可能です。
使用できる定数は、XlSearchDirectionクラスのxlNextまたはxlPreviousです。既定の定数はxlNextです。

MatchCase
省略可能です。
大文字と小文字を区別するには、Trueを指定します。既定値は False です。

MatchByte
省略可能です。
この引数は、2 バイト(全角)文字の言語サポートが選択またはインストールされているときだけ使用できます。半角全角を区別するには、Trueを指定します。区別しないようにするには、Falseを指定します。