-----------------------------------------------------------------------------------------
Sub 特定の情報を検索してマークを付ける_複数ある場合()
12 Worksheets("Sheet1").Activate 'シートをアクティブにする
13 検索範囲 = "G2:G8" '検索するセル範囲を指定する
14 検索文字 = "京都市" '検索する情報を指定する
15 置換列 = 8 'マークを付ける列番号を指定する
16 置換文字 = "●" 'マークを指定する
17 With Range(検索範囲) 'このオブジェクトに対して以下のステートメントを実行
18 Set 結果セル = .Find(検索文字, LookIn:=xlValues, SearchOrder:=xlByRows)
19 '検索して見つかった場合は最初のセルを返す
20 If Not 結果セル Is Nothing Then 'もし1つ目が見つかった場合は
21 最初アドレス = 結果セル.Address '最初のセルのアドレスを取得しておく
22 Do '以下のステートメントを繰り返す
23 Cells(結果セル.Row, 置換列).Value = 置換文字 'マークを付ける
24 Set 結果セル = .FindNext(結果セル) '見つかったセルの次から検索を続行する
25 Loop While Not 結果セル Is Nothing And 結果セル.Address <> 最初アドレス
26 '最初と違うアドレスで見つかったら繰り返す
27 End If
28 End With
End Sub
-----------------------------------------------------------------------------------------
ポイント
各コードにコメントを付けておきましたので大体は分かるかと思いますが、ポイントをまとめておきます。
・17行目の With Range(検索範囲) 質問のコードの2行目の Cells(i, 7)を修正
・18行目の Set 結果セル = .Find 検索結果を一旦、変数「結果セル」に取り出すように修正
・20行目の 結果セル Is Nothing 検索して1つも見つからなかった場合の処理を追加
・24行目の FindNext(結果セル) 見つかったセルの次から検索を続行する
・21、24、25行目 FindNextメソッドがエンドレスで検索するので、最初に見つかったセルで終わるようにする
・13行目 データの最後の行を取得する方法は、
指定条件を満たすセルを選択する
を参考にしてください。 サンプルブックの
ダウンロードは ここをクリック
Internet Explorer 4.0以上と、Excel 97以上がインストールされたパソコンでは、サンプルブックを直接、開くことも可能です。しかし、そのまま試すとエラーが出る場合があるので、一旦、ハードディスクに保存してください。