「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
- Newer:選択範囲をCSV出力するExcelマクロ
 - Older:アクティブシートの一部を削除してCSV出力するExcelマクロ
 
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » Excel VBAで条件に合致する複数行を選択する
『インストラクターのネタ帳』では、2003年10月からMicrosoft Officeの使い方などを紹介し続けています。










