データを複数検索して検索結果を纏めて操作する【ExcelVBA】
FindNextメソッドを使用して複数検索する
最初にFindメソッドを続行するが、Findメソッドは1つしか検索しない
Findメソッドで検索した結果をFindNextメソッドの引数に指定し、検索を続行する
FindNextメソッドは検索を繰り返し続ける為、最初の検索結果と一致すればループを抜ける形をとる
Application.Unionメソッドで今選択しているセルと、検索で見つかったセルを合わせる形で
検索結果のセルを順番に選択し続け、検索結果範囲を最終的にSelectionで纏める
そしてSelectionに命令文を記述すれば検索結果に纏めて操作するという流れで実践
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
実際に使用したサンプルコード
Option Explicit
Public Sub sample()
'検索範囲はB10セルのアクティブセル領域
Dim 検索範囲 As Range
Set 検索範囲 = Range("B10").CurrentRegion
'A店をB21セルの後から検索し最初の検索結果として変数にセット
Dim 最初のセル As Range
Set 最初のセル = Range("B9").CurrentRegion.Find(What:="A店", After:=Range("B10"))
'もし最初のセルがNothingであれば
If 最初のセル Is Nothing Then Exit Sub
'最初に見つかったセルを選択
最初のセル.Select
'2個目以降用の変数
Dim セル As Range
Set セル = 最初のセル
Do
'最初に見つかったセルの次のセルから検索を続行
Set セル = 検索範囲.FindNext(After:=セル)
'最初のセルに戻ったら終了
If セル.Address = 最初のセル.Address Then Exit Do
'今の選択している箇所に見つかったセル範囲を合わせて選択
Application.Union(Selection, セル).Select
Loop
'選択している範囲の背景色を赤色に
Selection.Interior.ColorIndex = 3
End Sub