Findメソッドは指定した範囲且つ、指定した条件に当てはまるセルを検索します。
条件に当てはまるセルが複数ある場合はFindNextメソッドもしくはFindPreviousメソッドを使用します。
メソッド説明
FIndメソッドの構文は以下のように記載します。
object.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
引数の一覧は以下です。
引数 | 定数 | 説明 | 省略可否 |
What | ー | 検索する文字 | 不可 |
After | ー | 検索開始位置 | 可能 |
LookIn | xlFormulas | 「数式」で検索 | 可能 |
xlValues | 「値」で検索 | ||
xlComents | 「コメント分」で検索 | ||
LookAt | xlPart | 「一部一致」で検索 | 可能 |
xlWhole | 「全部一致」で検索 | ||
SearchOrder | xlByRows | 「列」で検索をする | 可能 |
xlByColumns | 「行」で検索をする | ||
SearchDirection | xlNext | 「順方向」で検索 | 可能 |
xlPrevious | 「逆方向」で検索 | ||
MatchCase | True | 大文字と小文字を区別する | 可能 |
False | 大文字と小文字を区別しない | ||
MatchByte | True | 半角と全角を区別する | 可能 |
False | 半角と全角を区別しない | ||
SearchFormat | True | 書式を検索する | 可能 |
False | 書式を検索しない |
注意点
- 最初に見つかった一つ目のセルのみ検索結果として返ります。複数はFindNext/FindPreviousを参照。
- 検索の開始は一番左上のセルの2つ目からです。1つ目のセルは一番最後に検索します。
例)検索範囲がA1:A100ならA2から順番に検索し、A100まで検索し終えた後、A1を計算します。 - 検索結果が0件の場合、「Nothing」が返る為、エラー回避処理は必須。
- 引数で検索条件に関わるものは、省略可能なものも省略せず記載する。
→省略すると検索結果が異なる場合がある。(デフォルト値がエクセル検索ダイアログと連動している) - Findメソッドを使用すると、エクセル検索ダイアログの設定が書き換えられます。
使い方サンプル
完全一致での検索の場合
商品コードや顧客コードなどの、セル内で特定文字を検索するケースが主な使い方です。
(一つの範囲で重複がないと想定される場合に使用します)
Dim rng as Range Dim target As Range '■■検索範囲を設定 Set rng = Range("A1:A20") '■■検索処理 Set target = rng.Find(what:="あいうえお", LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=True, MatchByte:=True) If target Is Nothing Then Msgbox "検索結果が存在しません" Else Msgbox target.Row & "行目" & target.Column & "列目に存在します" End If
パーツ化
便利なパーツ化(関数化)しています。
コピペでOK。こちらもお使いください。
複数の検索結果を抽出する場合
FindNextメソッドもしくはFindPreviousメソッドで複数結果を抽出可能です。
詳細は下記ページ参照してください。
【VBA入門】マクロで複数のセルの値を全て抽出する(FindNext/FindPreviousメソッド)
コメント