「マクロ 検索した文字の行を選択する」
「vba 検索にヒットした行を選択」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
どのアプリケーションの話かわかりませんけれどVBAで、文字列を検索してみつかった行全体を選択するにはどのようなコードを書けばいいのかを探している方による検索です。
文字列を検索して行全体を選択するサンプルマクロ
参考になりそうな簡単なExcelマクロをご紹介しておきます。
Dim rng As Range
Set rng = Range("A:A").Find("北海道")
If rng Is Nothing ThenMsgBox "みつかりませんでした。"
Else
rng.EntireRow.Select
End If
End Sub
上記のマクロを実行すると、A列で「北海道」という文字列を検索して、みつからなかったときには「みつかりませんでした。」というメッセージボックスが表示され、みつかった場合はその行全体を選択します。
サンプルマクロの解説
A列に必ず「北海道」という文字列が入力されているという保証があるのなら、
Range("A:A").Find("北海道").EntireRow.Select
というコードだけでOKです。
ですが、実務で使われるマクロの検索を考えると、文字列がみつからないケースは想定しておかざるを得ないでしょう。
オブジェクトブラウザー等で確認するとわかるとおり、RangeオブジェクトのFindメソッドは、検索を行ってみつかった場合は、みつかったセルを表すRangeオブジェクトを返してきますが、
みつからなかった場合はNothingを返してきます。
このことを利用して、Range.Findメソッドの戻りをオブジェクト変数・rngにセットして、
Dim rng As Range
Set rng = Range("A:A").Find("北海道")
その変数・rngがNothingかどうかで、処理を分岐して、
If rng Is Nothing Then
みつからなかったときにはメッセージを表示して、
MsgBox "みつかりませんでした。"
Nothingではなかったとき(みつかったとき)に、RangeオブジェクトのEntireRowプロパティで行全体を取得して、RangeオブジェクトのSelectメソッドで選択を行っています。
Else
rng.EntireRow.Select
Home » Excel VBA Rangeオブジェクト » セル検索 » Findメソッドで検索して行を選択する