Excel VBAのチップスです。
データを検索することはよくありますが、検索にはFindメソッドを使用します。
構文
(以下Helpより)-----
式.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)
式 Range オブジェクトを表す変数
パラメーター
名前 必須/オプション データ型 説明 What 必須 バリアント型 (Variant) 検索するデータです。文字列など、セル内のデータに該当する値を指定します。 After オプション バリアント型 (Variant) セル範囲内のセルの1つを指定します。このセルの次のセルから検索が開始されます。引数 After で指定するセルは、コードからではなく、通常の画面上で検索を行う場合のアクティブセルに該当します。このセルの次から検索が開始されるため、範囲内の他のセルがすべて検索され、このセルに戻るまで、このセル自体は検索されません。この引数を省略すると、対象セル範囲の左上端のセルが検索の開始点になります。 LookIn オプション バリアント型 (Variant) 情報の種類を指定します。 LookAt オプション バリアント型 (Variant) 使用できる定数はXlLookAtクラスのxlWholeまたはxlPartです。 SearchOrder オプション SearchOrder 検索の方向を指定します。 MatchCase オプション バリアント型 (Variant) 大文字と小文字を区別するにはTrueを指定します。既定値はFalseです。 MatchByte オプション バリアント型 (Variant) この引数は、2 バイト (全角) 文字の言語サポートが選択またはインストールされている場合にだけ使用できます。2バイト文字が 2 バイト文字とだけ一致するようにする場合はTrueを指定します。2バイト文字が2バイト文字だけではなく、対応する1バイト文字とも一致するようにする場合はFalseを指定します SearchFormat オプション バリアント型 (Variant) 検索の書式を指定します。
戻り値
検索範囲の先頭のセルを表すRangeオブジェクト。
備考
一致するデータが見つからなかった場合、このメソッドは Nothing を返します。Find メソッドは、選択範囲またはアクティブ セルに影響を与えません。
引数 LookIn、LookAt、SearchOrder、および MatchByte の設定は、このメソッドを使用するたびに保存されます。次にこのメソッドを使用するときにこれらの引数の指定を省略すると、保存された設定が使用されます。
同じ検索を繰り返すときは、FindNext メソッドおよび FindPrevious メソッドを使用します。
XlLookAt
検索テキスト全体または検索テキストの一部を検索するかどうかを指定します。
名前 値 説明 xlPart 2 検索テキストの一部を検索します。 xlWhole 1 検索テキスト全体を検索します。
XlSearchDirection
範囲を検索する場合の検索方向を指定します。
名前 値 説明 xlNext 1 範囲内で、一致する次の値を検索します。 xlPrevious 2 範囲内で、一致する前の値を検索します
-----(以上Helpより)
以下のような表で検索をしてみます。
Sub findtest()
Dim FindString As String
Dim FindRnage As Range
FindString = Application.InputBox("氏名を入力してください")
If FindString = "false" Then
Exit Sub
End If
Set FindRange = Range("A4", "E9").Find(FindString)
If FindRange Is Nothing Then
MsgBox "氏名が見つかりません"
Else
MsgBox "電話番号は" & FindRange.Offset(0, 3).Value & "です"
End If
End Sub
結果