検索したセルすべてに対して処理する
検索したセルが複数ある場合、そのすべてのセルに対して処理する方法を紹介します。以下が、サンプルマクロです。
' 検索したセルすべてに対して処理したい
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」と入力されているセルが選択され、網掛けが黄色になり、個数表示がでます。以下が、実行結果です。