FindNext メソッド (Excel)Range.FindNext method (Excel)

Find メソッドによって開始された検索を続行します。Continues a search that was begun with the Find method. 前回の検索条件に一致するセルを、下方向 (行のときは左から右、列のときは上から下) に検索し、見つかったセル (Range オブジェクト) を返します。Finds the next cell that matches those same conditions and returns a Range object that represents that cell. 選択範囲やアクティブ セルには影響はありません。This does not affect the selection or the active cell.

構文Syntax

FindNext(After)expression.FindNext (After)

expressionRange オブジェクトを表す変数です。expression A variable that represents a Range object.

パラメーターParameters

名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
AfterAfter 省略可能Optional VariantVariant 指定したセルの下方 (行のときは右、列のときは下) のセルから検索を開始します。The cell after which you want to search. 検索がユーザー インターフェイスから実行されるときは、ワークシート上で検索を行う場合のアクティブ セルに相当します。This corresponds to the position of the active cell when a search is done from the user interface. 引数 After には、対象セル範囲内の単一セルを指定する必要があります。Be aware that After must be a single cell in the range.

検索は指定したセルの次のセルから始まるので、指定したセル自体は、範囲全体が一度検索されるまで検索されません。Remember that the search begins after this cell; the specified cell is not searched until the method wraps back around to this cell. この引数を省略すると、検索はセル範囲の左上隅のセルの後から開始します。If this argument is not specified, the search starts after the cell in the upper-left corner of the range.

戻り値Return value

範囲Range

注釈Remarks

検索が指定された検索範囲の最後に達すると、範囲の最初に戻ります。When the search reaches the end of the specified search range, it wraps around to the beginning of the range. 最初に戻ったときに検索を停止するには、最初に見つかったセルの位置を保存しておき、セルが見つかるたびに、その位置と保存しておいた位置を比較します。To stop a search when this wraparound occurs, save the address of the first found cell, and then test each successive found-cell address against this saved address.

Example

次の使用例は、セル範囲 A1: A500 の値が2であるセルをすべて検索し、その値を5に変更します。This example finds all cells in the range A1:A500 that contain the value 2 and changes their value to 5.

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)
        If c is Nothing Then
            GoTo DoneFinding
        End If
        Loop While c.Address <> firstAddress
      End If
      DoneFinding:
End With

次の使用例は、定数 X を含む最初の4つの列のすべてのセルを検索し、X が含まれる列を非表示にします。This example finds all the cells in the first four columns that contain a constant X, and hides the column that contains the 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 が含まれる列を再表示します。This example finds all the cells in the first four columns that contain a constant X, and unhides the column that contains the 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

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.