セルの文字列検索 Findメソッド



Range.Find (What, LookAt)

セル内の文字列・値を検索するRangeメソッドです。
引数では大文字・小文字の区別、全角・半角の区別、置換え対象文字列の全体・部分一致の選択などが出来ます。

引数で指定した値はメソッド実行後にエクセル上での置換及び検索のダイアログボックスでも継続して反映されてしまいます。
通常はReplaceメソッド、Findメソッド使用後はデフォルトの値に戻す処理の実行をするのが良いと思います。(サンプル2参照)


名前 説明 備考
What 検索対象文字列 Variant 必須
After 検索対象セル Variant 規定値:
対象左上
LookIn 情報の種類 xlFormulas(数式) or
xlValues(文字列) or
xlComments(コメント)
規定値:
xlValues
LookAt 完全一致検索 or
部分一致検索
xlWhole or
xlPart
規定値:
xlPart
SearchOrder 列or行から検索 xlByColumns or
xlByRows
規定値:
xlByRows
MatchCase 大文字小文字の区別
するorしない
True or False 規定値:
False
MatchByte 2Byteと1Byteの区別
するorしない
True or False 規定値:
True
SearchFormat 書式の指定 規定値:
False
引数一覧



サンプル1)A列で文字列"ABC"を含む行を検索して行番号を取得
Option Explicit
Sub SampleFind()

    Dim celRow As Long
    
    If Worksheets(1).Columns("A").Find(what:="ABC", _
    lookat:=xlWhole) Is Nothing Then
    
    '見つからない場合
        MsgBox ("A列に'ABC'という値のセルはありません")
    Else
    'ある場合
        celRow = Worksheets(1).Columns("A").Find(what:="ABC", _
        lookat:=xlWhole).Row
        MsgBox celRow
    End If

End Sub
※Worksheets(1).Columns("A")の部分に検索範囲を任意で指定



サンプル2)検索設定の初期化(デフォルトに変更)
Option Explicit
Sub rFindTe2()
    
    '書式検索のクリアをする
    Application.FindFormat.Clear
    
    '検索対象文字を省略してデフォルトの検索をする
    Cells(1, 1).Find what:="", Lookat:=xlPart, _
    Searchorder:=xlByRows, MatchCase:=False, MatchByte:=False

End Sub