「excel vba 複数行 選択」
といった検索キーワードで時折アクセスがあります。
何らかの条件に合致する複数の行を選択する、というニーズはあるように思います。
条件に合致する複数行を選択するサンプルマクロ
以下のExcelマクロを実行すると、アクティブシートでA列が空白の行がすべて選択され、最後に
「〇行を選択しました。」
とメッセージが表示されます。
Dim target As Range
Dim rng As Range, cnt As Long
For Each rng In Range("A1", Cells(Rows.Count, "A").End(xlUp))
If rng.Value = "" Then
If target Is Nothing Then
Set target = rng.EntireRow
Else
Set target = Union(target, rng.EntireRow)
End If
cnt = cnt + 1
End If
Next rng
If Not target Is Nothing Then
target.Select
MsgBox cnt & "行を選択しました。"
Else
MsgBox "A列が空白の行はありません。"
End If
サンプルマクロで行っている処理
A列のデータの入力されているセルに対してFor Each~Nextループを回して、
For Each rng In Range("A1", Cells(Rows.Count, "A").End(xlUp))
データが入力されていないときに、
If rng.Value = "" Then
変数targetがNothingであれば、targetにRange.EntireRowプロパティで取得した、行全体を表すRangeオブジェクトを代入し、
If target Is Nothing Then Set target = rng.EntireRow
変数targetがNothingでなければ、Unionメソッドで、変数targetに、targetにRange.EntireRowプロパティで取得した、行全体を表すRangeオブジェクトを追加しています。
Else Set target = Union(target, rng.EntireRow)
選択終了後に、
「〇行を選択しました。」
メッセージを表示するための変数cntをインクリメントしています。
cnt = cnt + 1 End If Next rng
最後に変数targetに応じて、表示するメッセージを切り替えています。
If Not target Is Nothing Then target.Select MsgBox cnt & "行を選択しました。" Else MsgBox "A列が空白の行はありません。" End If
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Excel VBAで条件に合致する複数行を選択する