Range.FindNext-Methode (Excel)

Setzt eine Suche fort, die mit der Find-Methode begonnen wurde. Sucht nach der nächsten Zelle, die dieselben Bedingungen erfüllt, und gibt ein Range-Objekt zurück, das diese Zelle darstellt. Dies hat keine Auswirkung auf die Auswahl oder die aktive Zelle.

Syntax

Ausdruck. FindNext (Nachher)

Ausdruck Eine Variable, die ein Range-Objekt darstellt.

Parameter

Name Erforderlich/Optional Datentyp Beschreibung
After Optional Variant Die Zelle, nach der mit der Suche begonnen werden soll. Dies entspricht der Position der aktiven Zelle, wenn eine Suche über die Benutzeroberfläche durchgeführt wird. Beachten Sie, dass After eine einzelne Zelle im Bereich sein muss.
Denken Sie daran, dass die Suche nach dieser Zelle beginnt; die angegebene Zelle wird nicht durchsucht, bis die Methode wieder auf diese Zelle umgebrochen wird. Fall dieses Argument nicht angeben ist, beginnt die Suche nach der Zelle in der oberen linken Ecke des Bereichs.

Rückgabewert

Bereich

Hinweise

Erreicht die Suche das Ende des angegebenen Suchbereichs, beginnt sie erneut am Anfang dieses Bereichs. Um eine Suche bei einem Umbruch zu beenden, speichern Sie die Adresse der ersten gefundenen Zelle, und testen Sie dann jede nachfolgende gefundene Zelladresse mit dieser gespeicherten Adresse.

Beispiel

In diesem Beispiel werden alle Zellen im Bereich A1:A500 im ersten Arbeitsblatt gesucht, die den Wert 2 enthalten, und der gesamte Zellwert wird in 5 geändert. Das heißt, dass die Werte 1234 und 99299 beide 2 enthalten und beide Zellwerte 5 ergeben.

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

In diesem Beispiel werden alle Zellen in den ersten vier Spalten gesucht, die eine Konstante X enthalten, und die Spalte, die das X enthält, ausgeblendet.

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

In diesem Beispiel werden alle Zellen in den ersten vier Spalten gesucht, die eine Konstante X enthalten, und die Spalte, die das X enthält, einblenden.

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 und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.