行・列全体をRangeオブジェクトとして取得する方法を解説します。
Rows/Columnsプロパティを使用する方法と、
EntireRow/EntireColumnプロパティを使用する方法があります。
Rows/Columnsプロパティ
基本構文
' 行全体 親シート.Rows(行番号) ' 列全体 親シート.Columns(列番号)
サンプルコード
Dim 対象シート As Worksheet Set 対象シート = Thisworkbook.Worksheets("○○") ' 第5行を削除する 対象シート.Rows(5).Delete ' E列(第5列)を削除する 対象シート.Columns(5).Delete ' または 対象シート.Columns("E").Delete ' C列全体の書式を変更する 対象シート.Columns("C").NumberFormatLocal = "#,##0"
解説
シート.Rows(行番号)、シート.Columns(列番号)という記述で、
行全体・列全体をRangeオブジェクトとして取得することができます。
削除(Delete)/挿入(Insert)など行列に関するメソッドや、
列全体の書式設定などを行う際に使用してください。
列の指定はアルファベット・数値どちらでも可能です。
変数を扱う場合は数値、直接ベタ打ちする場合はアルファベットが使いやすいです。
複数行・複数列を指定する
Rows/Columnsプロパティで複数行/列を指定する場合は、
以下のいずれかの記述を用います。
サンプルとして5~10行目を取得するコードがこちらです。
※ Columnsプロパティも同様の記述ができます。
対象シート.Rows("5:10") 対象シート.Range(対象シート.Rows(5), 対象シートRows(10)) 対象シート.Rows(5).Resize(6)
ベタ打ちするのであればシート関数と同様、
Rows("5:10")という「:」を使った指定ができます。
変数で指定する場合など数値を使いたい場合は、
セル範囲を取得するRange(Cells,Cells)形式の応用で、
Range(Rows,Rows)形式で指定することが可能です。
もう一つのやり方として、第1行から○行分を拡張する、
Resizeプロパティを使用する方法もあります。
最終行ではなく行数を持っている場合は、
こちらの記述を使用してください。
C:F列など複数列を取得する(Columnsを使用する)場合は、
以下のサンプルコードのように記述してください。
対象シート.Columns("C:F") 対象シート.Range(対象シート.Columns(3), 対象シートColumns(6)) 対象シート.Columns(3).Resize(, 3)
「:」を使用する場合、列ならばアルファベット限定であることに注意してください。
また、Resizeプロパティを使って列方向に拡張する場合は、
指定が第2引数になる点もご注意ください。
EntireRow/EntireColumnプロパティ
続いてEntireプロパティを使用する方法です。
こちらは「起点セル・セル範囲を含む行/列全体を取得」するプロパティで、
たとえばA3:F5から行3:5や列A:Fを取得することができます。
Range("A3:F5").EntireRow ' ← 3~5行を取得 Range("A3:F5").EntireColumn ' ← A:F列を取得
こちらはセル範囲を持っている場合にとても便利なプロパティで、
たとえば「オートフィルターの対象列全体をコピー」する場合などに、
Worksheets("○○").AutoFilter.Range.EntireColumn.Copy
このように簡潔にコードを書くことができます。
CurrentRegionやListObject.Rangeなど、
セル範囲を取得しやすい場面ではこちらを活用してください。
Range("5:10")やRange("C:F")は非推奨
上記の方法以外に、Rangeプロパティを使用する方法もあります。
' セル範囲としては同じものを取得します 対象シート.Rows("5:10") 対象シート.Range("5:10")
しかし、こちらの方法はVBAが「行全体」と明確に認識しないため、
Countが違う値を返したりPageBreak(改ページ)が動かなかったり、
行・列全体への処理がうまく動かないことが多いです。
Debug.Print Rows("5:10").count ' 6 Debug.Print Range("5:10").count ' 98304 (セル数)
行・列全体を指定する際は、Rangeプロパティは使用せず、
Rows/Columns/Entireプロパティを使用してください。