Range.FindNext メソッド (Excel)

Find メソッドで開始された検索を続行します。 前回の検索条件に一致するセルを、下方向 (行のときは左から右、列のときは上から下) に検索し、見つかったセル (Range オブジェクト) を返します。 選択範囲やアクティブ セルには影響はありません。

構文

FindNext (After)

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

パラメーター

名前 必須 / オプション データ型 説明
After 省略可能 バリアント型 (Variant) 指定したセルの下方 (行のときは右、列のときは下) のセルから検索を開始します。 これは、ユーザー インターフェイスから検索が実行されたときにアクティブなセルの場所に対応しています。 引数 After には、対象セル範囲内の単一セルを指定する必要があります。
検索は指定したセルの次のセルから始まるので、指定したセル自体は、範囲全体が一度検索されるまで検索されません。 この引数を省略すると、検索はセル範囲の左上隅のセルの後から開始します。

戻り値

範囲

注釈

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

次の使用例は、値 2 を含むワークシート 1 の範囲 A1:A500 内のすべてのセルを検索し、セル値全体を 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

次の使用例は、定数 X を含む最初の 4 つの列のすべてのセルを検索し、X を含む列を非表示にします。

Sub Hide_Columns()

    'Excel objects.
    Dim m_wbBook As Workbook
    Dim m_wsSheet As Worksheet
    Dim m_rnCheck As Range
    Dim m_rnFind As Range
    Dim m_stAddress As String

    'Initialize the Excel objects.
    Set m_wbBook = ThisWorkbook
    Set m_wsSheet = m_wbBook.Worksheets("Sheet1")
    
    'Search the four columns for any constants.
    Set m_rnCheck = m_wsSheet.Range("A1:D1").SpecialCells(xlCellTypeConstants)
    
    'Retrieve all columns that contain an X. If there is at least one, begin the DO/WHILE loop.
    With m_rnCheck
        Set m_rnFind = .Find(What:="X")
        If Not m_rnFind Is Nothing Then
            m_stAddress = m_rnFind.Address
             
            'Hide the column, and then find the next X.
            Do
                m_rnFind.EntireColumn.Hidden = True
                Set m_rnFind = .FindNext(m_rnFind)
            Loop While Not m_rnFind Is Nothing And m_rnFind.Address <> m_stAddress
        End If
    End With

End Sub

次の使用例は、定数 X を含む最初の 4 つの列のすべてのセルを検索し、X を含む列を再表示します。

Sub Unhide_Columns()
    'Excel objects.
    Dim m_wbBook As Workbook
    Dim m_wsSheet As Worksheet
    Dim m_rnCheck As Range
    Dim m_rnFind As Range
    Dim m_stAddress As String
    
    'Initialize the Excel objects.
    Set m_wbBook = ThisWorkbook
    Set m_wsSheet = m_wbBook.Worksheets("Sheet1")
    
    'Search the four columns for any constants.
    Set m_rnCheck = m_wsSheet.Range("A1:D1").SpecialCells(xlCellTypeConstants)
    
    'Retrieve all columns that contain X. If there is at least one, begin the DO/WHILE loop.
    With m_rnCheck
        Set m_rnFind = .Find(What:="X", LookIn:=xlFormulas)
        If Not m_rnFind Is Nothing Then
            m_stAddress = m_rnFind.Address
            
            'Unhide the column, and then find the next X.
            Do
                m_rnFind.EntireColumn.Hidden = False
                Set m_rnFind = .FindNext(m_rnFind)
            Loop While Not m_rnFind Is Nothing And m_rnFind.Address <> m_stAddress
        End If
    End With

End Sub

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

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