非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【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ループの方が安全かも。

 

スポンサーリンク

 - Excel, VBA