名前を検索して見つかった行を選ぶ
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
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
このブックのSheet1のA列へ検索する氏名を用意します。別のシート名ならコードのSheet1も変更します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。 表示された入力欄へ探す名前を入力し、[OK]を押します。
- 4
最初に一致した行全体が選択されます。一致がなければメッセージが出ます。入力欄を空欄にするかキャンセルすると、そのまま終了します。