検索したセルすべてに対して処理する

検索したセルが複数ある場合、そのすべてのセルに対して処理する方法を紹介します。以下が、サンプルマクロです。

' 検索したセルすべてに対して処理したい
Private Sub AllSerchCell(ByVal serchStr As String)

    Dim rng As Range
    Dim firstCell As Range
    Dim rngUnion As Range
    
    '検索条件を指定して検索開始
    Set rng = Cells.Find(What:=serchStr)
    If rng Is Nothing Then
        MsgBox "「" & serchStr & "」が見つかりません"
        Exit Sub
    Else
        Set firstCell = rng
        Set rngUnion = rng
    End If
    '「次のセル」の検索を続行
    Do
        ' 次のセルを検索
        Set rng = Cells.FindNext(rng)
        
        If rng.Address = firstCell.Address Then
            ' 最初に検索したセルと同じセルを検索したら終了
            Exit Do
        Else
            ' それ以外は、セルを統合
            Set rngUnion = Union(rngUnion, rng)
        End If
    Loop
    
    'rngUnionに格納しておいた全検索結果をまとめたセルを操作
    rngUnion.Interior.ColorIndex = 6    ' 網掛けを黄色に
    MsgBox "「" & serchStr & "」が " & rngUnion.Count & "件見つかりました"

End Sub

今回は、検索したセルの網掛けを黄色にしています。以下が使用例です。

Private Sub test()
    Call AllSerchCell("fdさ5")
End Sub

このマクロを実行すると、「fdさ5」と入力されているセルが選択され、網掛けが黄色になり、個数表示がでます。以下が、実行結果です。

Follow me!