Excel VBA(マクロ)で列、行を選択、取得する方法/Rows、Columns、EntireRow、EntireColumnプロパティの使い方

IT

Rowsプロパティ、Columnsプロパティでは、オブジェクトの中の列、行を指定して参照することができます。
行番号、列番号を取得するRow・Columnプロパティとは別物です。

スポンサーリンク

Rows、Columnsプロパティの使い方

行を取得する
Range.Rows(範囲)

列を取得する
Range.Columns(範囲)

※Rangeを省略した場合、ActiveSheetのRange全体が対象となる
※引数を省略した場合、全行と全列が選択される。
※引数は数字で指定、単列は数字またはアルファベット、複数列はアルファベットのみ。

Rowsプロパティ

rowsselect1
ActiveSheetの単一の行だけを取得・選択したいなら、Rows(2).Selectのように書くだけでOKです。
' vba
' 2行目を選択
Range("2:2").Select
行列指定は書き方が多く、
' vba
' 2行目を選択
Range(Rows(2), Rows(2)).Select
これらの書き方は、
' vba
' 2行目を選択
Range("A2").EntireRow.Select
全部同じ結果、単一行選択になります。
別に全部知ってる必要もないですが、コードによって使い分けられるとスマートです。

全体選択

rowsselect4
Rowsしか書かないと、ActiveSheetの全RangeのRowsコレクション=全部の行という意味になります。よってRows.Selectとすると、シート全選択と同じ意味になります。
単一行選択の場合、Rowsコレクションの後に()をつけることで、コレクションの中の特定のオブジェクトを指定しているわけです。

範囲選択

rowsselect2
範囲を指定する場合は、""で閉じてRows("2:3").Selectのように指定します。
rows10
または、Range("2:4").Selectのように書いても行を選択できます。
Rangeの後に数字で範囲を指定すると、行のことを指すという例外ルールがあるためです。Range("2").Selectはダメ。
rows select
最初と最後の行を指定して、Range(Rows(1), Rows(3)).Selectのようにするやりかたもあります。
Range("1, 3").Selectなどの書き方はできず、一回Rowsを挟む必要があります。
Rangeオブジェクトの所属する行をすべて取得する
Range.EntireRow
rows11
あとは、EntireRowプロパティでRangeオブジェクトの属する行全体を選択することもできます。
Range("B2:D4").EntireRow.Selectで、2~4行が選択されます。

Range内の行を指定

rows1
Range("B2:D4").SelectでB2~B4を選択した状態から、
rows2
Rangeオブジェクトの後にRows(1)を挟むと、
rows3
対象(B2~B4)の中の1行目を参照という意味になり、B2:D2が選択されます。
rows4v
Range("B2:D4").Rows(2).Selectなら二行目が選択され、
rows5
Range("B2:D4").Rows("2:3").Selectなら2~3行目が選択されます。
範囲指定の場合は""で閉じる必要があります。

Columnsプロパティ

columns select1
列の場合も要領は同じです。Columns(2).Selectで2列目が選択できます。
Range("B:B").Selectとか、Range(Columns(2), Columns(2)).Selectのように書いても単一列選択になります。
columns select3
列の場合は、Columns("B").Selectのようにアルファベットで指定することもできます。

全体選択

columns select2
Columns.Selectとすれば、ActiveSheetの列が全て選択されます。

範囲選択

columns select4
列の範囲指定はアルファベットでColumns("B:C").Selectのように選択するか、
rows9
Range("B:D").Selectのように書いてもOKです。
Rangeの後にアルファベットで範囲を指定すると、列を選択するという意味になります。
columns select
最初と最後の列を指定して、Range(Columns(1), Columns(3)).Selectのようにするやりかたもあります。
Rangeオブジェクトの所属する列をすべて取得する
Range.EntireColumn
rows12
EntireColumnプロパティでRangeの属する列全体を指定することもできます。たとえばRange("B2:D4").EntireColumn.Selectで、B~D列がすべて選択されます。

Range内の列を指定

rows6
Range("B2:D4").Columns(1).Selectで「B2~D4の1列目」を選択できます。
rows8
範囲の場合、A=範囲内の1列目、B=範囲内の2列目となるので注意が必要です。Range("B2:D4").Columns("B:C").SelectでC~D列(範囲内の2~3列目が選択されます。)

別のシートの行・列を選択

vba select error
シートの指定についてですが、既にそのシートにいる場合以外はエラーになります。
' vba
ActiveSheet.Columns(3).Select
従って、ActiveSheet(今アクティブなシート)はそのまま前につければOKですが、
' vba
' シート名で指定
Worksheets("Sheet2").Select
Rows(2).Select

' インデックス番号で指定
Sheets(1).Select
Columns(2).Select
特定のシートの行・列を取得するには、先にSheetsまたはWorksheetsでシートをSelectした後、改行して改めて行列を取得するようにします。
Excel(エクセル):行、列
Excelの行、列関係操作、関数、VBAです。他のまとめとかぶる部分が多い場合はリンク貼ります。 行・列の選択 行・列の選択方法です。 テーブル内の行・列一括選択方法です。 VBA(マクロ)で列・...
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。

コメント