エクセルバージョン
マイクロソフト365
本日はセルの選択範囲のいろいろな方法があるのでご紹介したいと思います(*^^)v
それではいってみましょう!
Menu
Select
Selectで範囲選択がいろいろできます。
この機会にパワフルな選択範囲の指定方法をおぼえちゃいましょうヾ ^_^♪
単一セル選択
A1セルを選択する場合
3パターンご紹介します。
①Range(”セル”)
1 2 3 | Sub testRange() Range("A1").Select 'A1セルを選択 End Sub |
②Cells(行番号、”列名英語”)
1 2 3 | Sub testCells1() Cells(1, "A").Select 'A1セルを選択 End Sub |
➂Cells(行番号、列番号)
1 2 3 | Sub testCells2() Cells(1, 1).Select 'A1セルを選択 End Sub |
行の選択
2行目を選択する場合
1 2 3 4 | '2行目を選択 Sub rangeTest3() Range("2:2").Select End Sub |
1 2 3 4 | '2行目を選択 Sub rowsTest() Rows(2).Select End Sub |
1 2 3 4 | '2行目を選択 Sub TestEntireRow() Range("A2").EntireRow.Select End Sub |
2行目から5行目を範囲選択する場合
1 2 3 4 | '2行目~5行目を範囲選択 Sub rangeTest4() Range("2:5").Select End Sub |
1 2 3 4 | '2行目~5行目を範囲選択 Sub rowsTest2() Rows("2:5").Select End Sub |
1行目、3行目、6行目を選択する場合
1 2 3 4 | '1行目、3行目、6行目を選択 Sub rangeTest5() Range("1:1,3:3,6:6").Select End Sub |
列を選択
B列を選択する場合
1 2 3 4 | 'B列を選択 Sub rangeTest6() Range("B:B").Select End Sub |
1 2 3 4 | 'B列を選択 Sub columnsTest() Columns(2).Select End Sub |
B~D列を範囲選択する場合
1 2 3 4 | 'B~D列を範囲選択 Sub rangeTest7() Range("B:D").Select End Sub |
1 2 3 4 | 'B~D列を範囲選択 Sub columnsTest2() Columns("B:D").Select End Sub |
A列、C列、E列を選択する場合
1 2 3 4 | 'A列、C列、E列を範囲選択 Sub rangeTest8() Range("A:A,C:C,E:E").Select End Sub |
範囲選択
A1~C3を範囲選択する場合
3パターンご紹介します。
➀Range( “左上のセル : 右下のセル”).Select
1 2 3 4 | 'A1~C3を範囲選択 Sub rangeTest() Range("A1:C3").Select End Sub |
➁Range(Cells(左上のセル),Cells(右下のセル)).Select
cellsの列を英語指定
1 2 3 4 | 'A1~C3を選択 Sub cellsTest() Range(Cells(1, "A"), Cells(3, "C")).Select End Sub |
➂Range(Cells(左上のセル),Cells(右下のセル)).Select
cellsの列を数字指定
1 2 3 4 | 'A1~C3を選択 Sub cellsTest2() Range(Cells(1, 1), Cells(3, 3)).Select End Sub |
複数の範囲選択
A1~B2とC3~D4を複数範囲を選択する場合
1 2 3 4 | 'A1~B2とC3~D4の複数範囲を選択 Sub rangeTest2() Range("A1:B2,C3:D4").Select End Sub |
データ範囲可変式
【行の場合】
A列のデータが下に増える場合に可変自動選択する場合
1 2 3 4 5 | Sub testRow() Dim lastRow As Integer lastRow = Range("A" & Rows.Count).End(xlUp).Row '最終行番号取得 Range(Cells(1, 1), Cells(lastRow, 1)).Select End Sub |
【列の場合】
1行目のデータが右に増える場合に可変自動選択する場合
1 2 3 4 5 | Sub testCol() Dim lastCol As Integer lastCol = Cells(1, Columns.Count).End(xlToLeft).Column '最終列番号取得 Range(Cells(1, 1), Cells(1, lastCol)).Select End Sub |
CurrentRegionプロパティ
RengeオブジェクトのメンバーのCurrentRegionプロパティの範囲選択。
規則正しい表や規則正しい範囲選択をする場合は有効に機能します。
ショートカットキー : Ctrl + Shift + *でマクロの記録をすると下記のように記録されます。
Selection.CurrentRegion.Select
ですのでCurrentRegionを実行する場合はショートカットキーで選択範囲を確かめてから使用した方がいい気がします。
【サンプル】
1 2 3 | Sub crTest() ActiveCell.CurrentRegion.Select End Sub |
CurrentRegion例1
下記のような文字が詰まっていて、表から文字がはみ出てない表などには有効に使用できます。
CurrentRegion例2
下記のように文字が表から1文字でもはみ出ると選択範囲が意図しない範囲になります。
CurrentRegion例3
罫線が引いてあり表だからきちんと選択されるだろうと思うかもしれませんが下記の場合は全く機能しません。
CurrentRegionを使用する場合は、必ずショートカットキー : Ctrl + Shift + *で範囲を確認してから使用するようにしましょう(*゚▽゚)ノ
UsedRangeプロパティ
WorksheetオブジェクトのメンバーのUsedRangeプロパティで範囲選択。
ワークシートの使用されている範囲を選択します。
1 2 3 | Sub urTest() ActiveSheet.UsedRange.Select End Sub |
UsedRange例1
シート上や左に空白があっても、使用されているデータ範囲だけ選択します。
UsedRange例2
CurrentRegionは罫線の空白は選択されませんでしたが、UsedRangeは罫線があれば空白でも選択されます。
※もし意図しない動きになり、余計な空白範囲も選択された場合は空白行、空白列を一旦削除しないと上手く機能しないので注意が必要です。
まとめ
CurrentRegionやUsedRangeは形式をきちんと把握しないと意図しない動きになる場合があるのでご使用時は細心の注意をしてご使用ください(⊙ꇴ⊙)
それ以外の最初の方に解説した取得は、ほぼほぼ意図した範囲を取得できるので、少々手間ですが自由自在に操れる基本となるRangeなどを使用したほうがあとあと面倒なことはおきずらいし、おきたとしても簡単に修正ができるかと思います。
以上です。
一番下の(最終行)行番号取得
一番下の行(最終行)の値を取得
行番号と行数や列番号と列数の取得
【VBA】列番号と列数(ColumnとColumns.Count)
関連記事
【PowerAutomate】エクセルの最終行番号を自動取得