← コード一覧へ戻る
実務検索・集計

名前を検索して見つかった行を選ぶ

Sheet1のA列で名前を完全一致検索し、最初に一致したセルの行全体を選びます。

実行前に確認

  • 大文字・小文字は区別しません。空欄やキャンセルなら検索しません。同名が複数あっても先頭の1行だけ選択します。
  • Findの検索設定は毎回指定しています。検索名に*や?が含まれる場合も、その文字自体を探すようエスケープしています。

1サンプルコード

Sub 名前を検索する()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Dim foundCell As Range
    Dim searchName As String

    searchName = InputBox("検索する名前を入力してください")

    If Len(searchName) = 0 Then Exit Sub
    searchName = Replace(searchName, "~", "~~")
    searchName = Replace(searchName, "*", "~*")
    searchName = Replace(searchName, "?", "~?")
    Set foundCell = ws.Columns("A").Find( _
        What:=searchName, _
        After:=ws.Cells(ws.Rows.Count, "A"), _
        LookIn:=xlValues, LookAt:=xlWhole, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        SearchFormat:=False, _
        MatchCase:=False)

    If foundCell Is Nothing Then
        MsgBox "見つかりませんでした"
    Else
        Application.Goto foundCell.EntireRow
    End If
End Sub
表で見る処理のイメージ実行前・実行後のセルを見比べる

入力した氏名をA列で完全一致検索します。

A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。

実行前

Sheet1

実行前のサンプル。列記号と行番号でセルの位置を確認できます。
A
1氏名
2佐藤 花子
3田中 太郎

実行後

Sheet1

実行後のサンプル。列記号と行番号でセルの位置を確認できます。
A
1氏名
2佐藤 花子
3田中 太郎(注目セル)

色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。

InputBoxへ「田中 太郎」と入力した例。3行目全体へ移動・選択します。見つかった場合のメッセージ表示やセル内容の変更はありません。 強調は注目するセルの目印です。実際のセルの色・書式を再現するものではありません。

使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    このブックのSheet1のA列へ検索する氏名を用意します。別のシート名ならコードのSheet1も変更します。

  3. 3

    実行するSubの内側にカーソルを置き、F5キーを押します。 表示された入力欄へ探す名前を入力し、[OK]を押します。

  4. 4

    最初に一致した行全体が選択されます。一致がなければメッセージが出ます。入力欄を空欄にするかキャンセルすると、そのまま終了します。

使っている機能の公式ドキュメント(Microsoft Learn)