FindNextメソッド解説(Excel VBA)

Excel VBAのFindNextメソッドについて

Excel VBAのFindNextメソッドは、Findメソッドと組み合わせて使用され、一連のセル内で特定の値や文字列を検索するための強力なツールです。

具体的には、FindNextメソッドは、Findメソッドによって最後に見つかったセルの次のセルから検索を開始します。これにより、一連のセル全体で特定の値を網羅的に検索することが可能になります。

SimpleFindNextサンプルコード

以下に、シンプルな形でFindNextメソッドを使用するVBAコードを示します。このコードは、ワークシート内で値を検索し、その位置を示すアドレスをイミディエイトウィンドウへ出力します。


Sub SimpleFindNext()

    Dim rng As Range
    Dim firstAddress As String

    With Worksheets(1).Range("A1:A100")
    
        Set rng = .Find("example", LookIn:=xlValues)
        
        If Not rng Is Nothing Then
            firstAddress = rng.Address
            Do
                Debug.Print rng.Address
                Set rng = .FindNext(rng)
            Loop While Not rng Is Nothing And rng.Address <> firstAddress
        End If
        
    End With

End Sub
    

このコードは、ワークシート1の範囲”A1:A100″で文字列”example”を検索します。値が見つかると、そのセルのアドレスを出力し、FindNextメソッドを使用して同じ値をさらに検索します。値が見つからなくなるまで検索が続けられます。

注意:FindNextメソッドを使用する前に、必ずFindメソッドで初回の検索を行う必要があります。また、FindNextは見つかった後のセルから検索を続けるため、同じ値が見つかった場合でもループが終了しない可能性があります。この問題を防ぐために、初回に見つかったセルのアドレスを保存し、それが再度現れた時点でループを終了するようにコードが設計されています。