VBAサンプル集
連続セル範囲の選択

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2013年5月以前 最終更新日:2020-05-12

連続セル範囲の選択


エクセルのVBAでは、連続セル範囲に対しての処理は頻繁にでてきます。
連続セル範囲を選択したり、クリアしたり。
以下では、いろいろな記述方法を紹介します。


VBA マクロ 連続セル範囲

このような表で、データ部(B3~F7)を選択または消去する場合のいろいろなVBAの書き方を紹介します。
いろいろな書き方を紹介する都合で、かなり無理やりなVBAも含まれていることは承知おきください。

以下のVBAでは、.Selectで記載していますが、.Clear等に変更すれば消去になります。

End(xlToRight).End(xlDown)

Sub test1()
  Range(Cells(3, 2), Cells(2, 2).End(xlToRight).End(xlDown)).Select
End Sub

開始位置はB3に固定し、
B2の位置から、Ctrl+→、Ctrl+↓、の範囲になります。
上記のように、全てのセルが埋められている場合は良いですが、
途中に空白セルがあると、ダメですね。

CurrentRegion.Offset(1, 0)

Sub test2()
  Cells(2, 2).CurrentRegion.Offset(1, 0).Select
End Sub

非常に分かりやすい記述です。
Cells(2, 2).CurrentRegion
これで、B2~D7のセル範囲になりますので、
Offsetで、1行下にずらしています。
でも1行多いですね。
データをクリアするだけなら問題ありません。
しかし、書式クリア島の場合は、都合が悪い場合もあるかもしれません。

CurrentRegion.Offset(1, 0).Resize

Sub test3()
  Cells(2, 2).CurrentRegion.Offset(1, 0).Resize(Cells(2, 2).CurrentRegion.Rows.Count - 1).Select
End Sub

test2のセル範囲を、正しいセル範囲にResizeしています。
これは、範囲指定としては完璧ですね。
でも、VBAが長いですよね。

CurrentRegion.Item + CurrentRegion.Count

Sub test4()
  Range(Cells(3, 2), Cells(2, 2).CurrentRegion.Item(Cells(2, 2).CurrentRegion.Count)).Select
End Sub

CurrentRegionの最終セルを取得しています。
これも、完璧ですね。
ただ、Itemはあまり一般的ではないかもしれませんし、やはりVBAが長いですね。

End(xlUp).Row + End(xlToLeft)

Sub test5()
  Range(Cells(3, 2), Cells(Cells(Rows.Count, 2).End(xlUp).Row, Columns.Count).End(xlToLeft)).Select
End Sub

これは、かなり無理やりですね。
普通こんなことはしません。
この記事用にと、ちょっと無理やり書いてみました。

Rowsで行全体を対象に

Sub test6()
  Range(Rows(3), Rows(Cells(Rows.Count, 2).End(xlUp).Row)).Select
End Sub

行全体を選択しています。
クリアするだけとかなら、これでもよいですね。
シートの状態によっては都合悪くなります。
しかし、そもそもシートの使い方の基本として、1シート1表であるべきです。
場合によっては、このような指定も必要です。

UsedRange + UsedRange.Count

Sub test7()
  Range(Cells(3, 2), ActiveSheet.UsedRange.Item(ActiveSheet.UsedRange.Count)).Select
End Sub

まあ、こんな指定もできますよね、というサンプルになります。
クリア専用なら、これでも良いですね。
とにかく、見出しを残して、他を全て消去するような場合です。

SpecialCells(xlLastCell)

Sub test8()
  Range(Cells(3, 2), Cells.SpecialCells(xlLastCell)).Select
End Sub

これも、クリア専用になるでしょうか。

Intersect + CurrentRegion.Offset(1, 0)

Intersectメソッドを使う方法も、簡単で有効な方法です。

Sub test9()
  Intersect(Cells(2, 2).CurrentRegion, Cells(2, 2).CurrentRegion.Offset(1, 0)).Select
End Sub

とても簡単ですし、完璧ですね。

連続セル範囲の選択のまとめ

上記以外にも、方法はいろいろあります。
また、どれが良いということではありません、ケースバイケースです。

正確に範囲選択する必要がある場合もありますが、
単にクリアするだけとか、新規シートにコピペするだけなら、
多少範囲が大きくても問題ありません。

.END(・・・)
.CurrentRegion
.UsedRange
.SpecialCells(xlLastCell)

これらの組み合わせで、ほとんどの連続セル範囲を指定することが出来ます。



同じテーマ「マクロVBAサンプル集」の記事

連続セル範囲の選択
1行置きにする行挿入(Insert)
シートの追加・削除(Add,Delete)
シートの複数選択(Select)
複数シートの印刷(PrintOut)
重複削除してコピー(AdvancedFilter)
ブックを安全確実に開く方法(Open)
ブックを閉じる(Close)
他ブックを開いて閉じる(Open,Close)
ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application)
罫線を簡単に引く(Borders,BorderAround)


新着記事NEW ・・・新着記事一覧を見る

第5章:AI×VBAでつまづかない!トラブルシューティングとAIとの付き合い方 |生成AI活用研究(2025-05-20)
第4章:【事例で学ぶ】AIとVBAでExcel作業を劇的に効率化する! |生成AI活用研究(2025-05-20)
第3章:AIを「自分だけのVBA先生」にする!質問・相談の超実践テクニック|生成AI活用研究(2025-05-19)
第2章 VBAって怖くない!Excelを「言葉で動かす」(超入門)|生成AI活用研究(2025-05-18)
第1章:AIって一体何?あなたのExcel作業をどう変える?(AI超基本)|生成AI活用研究(2025-05-18)
AI時代のExcel革命:AI×VBAで“書かない自動化”超入門|生成AI活用研究(2025-05-17)
Geminiと100本ノック 23本目:シート構成の一致確認|生成AI活用研究(5月16日)
AIが問う出版の未来は淘汰か進化か:AIと書籍の共存の道とは|生成AI活用研究(2025-05-16)
Geminiと100本ノック 22本目:FizzBuzz発展問題|生成AI活用研究(5月15日)
すぐに使える!生成AI プロンプト作成 実践ガイド|生成AI活用研究(2025-05-15)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ