Range.Find メソッド (Excel)

セル範囲内で特定の情報を検索します。

注:

複数のプラットフォーム間で Office エクスペリエンスを拡張するソリューションを開発することに関心がありますか? 新しい Office アドイン モデルを参照してください。 Office アドインは、VSTO アドインやソリューションに比べてフットプリントが小さく、HTML5、JavaScript、CSS3、XML などのほぼすべてのWeb プログラミング テクノロジーを使用して構築できます。

構文

expression.Find (What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

expressionRange オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
What 必須 バリアント型 検索するデータです。 指定できるのは、文字列、または任意の Microsoft Excel のデータ型です。
After 省略可能 バリアント型 このセルの後から検索を開始します。 これは、ユーザー インターフェイスから検索が実行されたときにアクティブなセルの場所に対応しています。

After は範囲内の 1 つのセルにする必要があることに注意してください。 このセルの後から検索が開始されるため、メソッドによって範囲内の他のセルがすべて検索され、このセルに戻るまで、指定されたセルは検索されません。

この引数を指定しない場合は、範囲の左上端のセルの後から検索が開始されます。
LookIn 省略可能 Variant 使用できるのは、XlFindLookIn定数: xlFormulasxlValuesxlComments あるいは xlCommentsThreaded のいずれかです。
LookAt 省略可能 Variant 次のXlLookAt定数:xlWholeあるいはxlPartのいずれかになります 。
SearchOrder 省略可能 Variant 次のXlSearchOrder定数:xlByRowsあるいはxlByColumnsのいずれかになります 。
SearchDirection 省略可能 Variant 次の XlSearchDirection 定数: xlNext あるいは xlPrevious のいずれかになります。
MatchCase 省略可能 Variant 大文字と小文字を区別するには、True を指定します。 既定値は False です。
MatchByte 省略可能 バリアント型 2 バイトの言語サポートが選択またはインストールされている場合にのみ使用されます。 2 バイト文字が 2 バイト文字とだけ一致するようにする場合は、True を指定します。 2 バイト文字が同等の 1 バイト文字とも一致するようにする場合は、False を指定します。
SearchFormat 省略可能 バリアント型 (Variant) 検索の書式を指定します。

戻り値

検索範囲の先頭のセルを表す Range オブジェクト。

解説

一致するデータが見つからなかった場合、このメソッドは Nothing を返します。 Find メソッドは、選択範囲またはアクティブ セルに影響を与えません。

LookInLookAtSearchOrder、および MatchByte の設定は、このメソッドを使用するたびに保存されます。 これらの引数に値を指定しないと、このメソッドの次回の呼び出しでは保存された値が使用されます。 これらの引数を設定すると、[検索] ダイアログ ボックスの設定が変更され、また、[検索] ダイアログ ボックスで設定を変更すると、引数を省略した場合に使用される保存された値が変更されます。 問題を回避するには、このメソッドを使用するたびに、これらの引数を明示的に設定します。

検索を繰り返すには、FindNext および FindPrevious メソッドを使用します。

検索が指定された検索範囲の最後に達すると、範囲の最初に戻ります。 最初に戻ったときに検索を停止するには、最初に見つかったセルの位置を保存しておき、セルが見つかるたびに、その位置と保存しておいた位置を比較します。

より複雑なパターンに一致するセルを見つけるには、For Each...Next ステートメントを Like演算子と共に使用します。 たとえば、次のコードでは、範囲 A1:C5 のすべてのセルで、フォント名の先頭に "Cour" の文字が使用されるセルが検索されます。 Microsoft Excel で一致が見つかったら、フォントが "Times New Roman" に変更されます。

For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next`

この例は、シート 1 の範囲 A1:A500 で、値 2 が含まれているすべてのセルを検索し、すべてのセルの値を 5 に変更します。 つまり、1234 と 99299 の値にはどちらも 2 が含まれていますが、両方とも 5 になります。

Sub FindValue()
    
    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500") 
        Set c = .Find(2, lookin:=xlValues) 
        If Not c Is Nothing Then 
            firstAddress = c.Address 
            Do 
                c.Value = 5 
                Set c = .FindNext(c) 
            Loop While Not c Is Nothing
        End If 
    End With
    
End Sub

この例は、シート 1 の範囲 A1:A500 で、サブ文字列 "abc" が含まれているすべてのセルを検索し、"abc" を "xyz" に置き換えます。

Sub FindString()

    Dim c As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A500")
        Set c = .Find("abc", LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                c.Value = Replace(c.Value, "abc", "xyz")
                Set c = .FindNext(c)
            Loop While Not c Is Nothing
        End If
    End With

End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。