Range.Find (What, LookAt)
セル内の文字列・値を検索するRangeメソッドです。
引数では大文字・小文字の区別、全角・半角の区別、置換え対象文字列の全体・部分一致の選択などが出来ます。
引数で指定した値はメソッド実行後にエクセル上での置換及び検索のダイアログボックスでも継続して反映されてしまいます。
通常はReplaceメソッド、Findメソッド使用後はデフォルトの値に戻す処理の実行をするのが良いと思います。(サンプル2参照)
セル内の文字列・値を検索する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