Rowsプロパティ、Columnsプロパティでは、オブジェクトの中の列、行を指定して参照することができます。
行番号、列番号を取得するRow・Columnプロパティとは別物です。
Rows、Columnsプロパティの使い方
行を取得する
Range.Rows(範囲)
Range.Rows(範囲)
列を取得する
Range.Columns(範囲)
※Rangeを省略した場合、ActiveSheetのRange全体が対象となる
※引数を省略した場合、全行と全列が選択される。
※引数は数字で指定、単列は数字またはアルファベット、複数列はアルファベットのみ。
Rowsプロパティ
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
全部同じ結果、単一行選択になります。
別に全部知ってる必要もないですが、コードによって使い分けられるとスマートです。
別に全部知ってる必要もないですが、コードによって使い分けられるとスマートです。
全体選択
Rowsしか書かないと、ActiveSheetの全RangeのRowsコレクション=全部の行という意味になります。よってRows.Selectとすると、シート全選択と同じ意味になります。
単一行選択の場合、Rowsコレクションの後に()をつけることで、コレクションの中の特定のオブジェクトを指定しているわけです。
単一行選択の場合、Rowsコレクションの後に()をつけることで、コレクションの中の特定のオブジェクトを指定しているわけです。
範囲選択
範囲を指定する場合は、
""
で閉じてRows("
2:3"
).Selectのように指定します。または、Range(
Rangeの後に数字で範囲を指定すると、行のことを指すという例外ルールがあるためです。Range(
"
2:4"
).Selectのように書いても行を選択できます。Rangeの後に数字で範囲を指定すると、行のことを指すという例外ルールがあるためです。Range(
"
2"
).Selectはダメ。最初と最後の行を指定して、Range(Rows(1), Rows(3)).Selectのようにするやりかたもあります。
Range(
Range(
"
1, 3"
).Selectなどの書き方はできず、一回Rowsを挟む必要があります。Rangeオブジェクトの所属する行をすべて取得する
Range.EntireRow
Range.EntireRow
あとは、EntireRowプロパティでRangeオブジェクトの属する行全体を選択することもできます。
Range(
Range(
"
B2:D4"
).EntireRow.Selectで、2~4行が選択されます。Range内の行を指定
Range(
"
B2:D4"
).SelectでB2~B4を選択した状態から、Rangeオブジェクトの後にRows(1)を挟むと、
対象(B2~B4)の中の1行目を参照という意味になり、B2:D2が選択されます。
Range(
"
B2:D4"
).Rows(2).Selectなら二行目が選択され、Range(
範囲指定の場合は
"
B2:D4"
).Rows("
2:3"
).Selectなら2~3行目が選択されます。範囲指定の場合は
""
で閉じる必要があります。Columnsプロパティ
列の場合も要領は同じです。Columns(2).Selectで2列目が選択できます。
Range(
Range(
"
B:B"
).Selectとか、Range(Columns(2), Columns(2)).Selectのように書いても単一列選択になります。列の場合は、Columns(
"
B"
).Selectのようにアルファベットで指定することもできます。全体選択
Columns.Selectとすれば、ActiveSheetの列が全て選択されます。
範囲選択
列の範囲指定はアルファベットでColumns(
"
B:C"
).Selectのように選択するか、Range(
Rangeの後にアルファベットで範囲を指定すると、列を選択するという意味になります。
"
B:D"
).Selectのように書いてもOKです。Rangeの後にアルファベットで範囲を指定すると、列を選択するという意味になります。
最初と最後の列を指定して、Range(Columns(1), Columns(3)).Selectのようにするやりかたもあります。
Rangeオブジェクトの所属する列をすべて取得する
Range.EntireColumn
Range.EntireColumn
EntireColumnプロパティでRangeの属する列全体を指定することもできます。たとえばRange(
"
B2:D4"
).EntireColumn.Selectで、B~D列がすべて選択されます。Range内の列を指定
Range(
"
B2:D4"
).Columns(1).Selectで「B2~D4の1列目」を選択できます。範囲の場合、A=範囲内の1列目、B=範囲内の2列目となるので注意が必要です。Range(
"
B2:D4"
).Columns("
B:C"
).SelectでC~D列(範囲内の2~3列目が選択されます。)別のシートの行・列を選択
シートの指定についてですが、既にそのシートにいる場合以外はエラーになります。
' 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やメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント