【Excel/VBA】複数セルを検索する方法(Find/FindNext)
Excel/VBAでシート内の検索する場合はFindメソッドを使いますが、これだと最初の1つ目しかヒットしません。例えば以下のように「佐藤」が2か所あった場合は3行目の「佐藤」しか引っかからないです。すべて引っかかるようにするにはFindNextメソッドを併用します。
以下がソースコードです。最初にFindメソッドで1個目のセルをヒットさせ、そのセル以降をFindNextに投げれば同じ条件で検索し続けてくれます。
Dim rng As Range Set rng = Range("A:A").Find(what:="佐藤", lookat:=xlWhole) Set rng0 = rng Do While Not rng Is Nothing MsgBox rng.Row Set rng = Range("A:A").FindNext(rng) '最後に行くと元に戻って無限ループになるので If rng.Row = rng0.Row Then Exit Do Loop
欠点は最後まで検索し終わると最初に戻るので無限ループになるという点です。その処理を忘れずに。最終行を取得してFor-Nextループの方が安全かも。
スポンサーリンク