質問: VBAのFindNextを使いたいのですが、オブジェクト関数で エラー91が出て困っています。知恵をお貸し願いたく。
回答: こんばんは 考えられる原因は2点あります。 1FindNextメソッドは、Findメソッドと同じセル範囲を指定すること Set objFind = Worksheets("シート1").Cells.Find("目標") Set objFind = Cells.FindNext(objFind) ⇒Set objFind = Worksheets("シート1").Cells.FindNext(objFind) ※但し、アクティブシートが、シート1の場合は問題ありません。 ___同じ検索範囲であることを明示した方が分かりやすいと思います。 2FindメソッドもFindNextメソッドも、検索合致セルが見つからない場合 ___Nothingが戻り値に設定されます。 ___そのため、FindNextメソッド実行後、objFind.Addressと書くと ___objFindがNothingの時、エラーになります。 従って、DoLoop条件を前条件でなく後条件に設定する事で回避します。 変更後のみ記述 (略) If Not objFind Is Nothing Then strAddress = objFind.Address Do '' 処理をここに書く '' 同条件で次を検索 Set objFind = Worksheets("シート1").Cells.FindNext(objFind) '' 後条件(検索合致セルが存在し、且つ最初のアドレスと異なる間、繰り返す) Loop While (Not objFind Is Nothing) And objFind.Address <> strAddress Else MsgBox "見つかりませんでした" End If