'2行目以降を全て選択する Cells. _ Resize(Cells.Rows.Count - (Range("A2").Row - 1), Cells.Columns.Count). _ Offset(Range("A2").Row - 1, 0). _ Select
表範囲の中で、見出し(見出しを1行目だけとした場合)以外の行を取得します
見出し以外を全て新たなデータに置き換える時にデータ範囲を全て初期化する時に使用します
なお、解説の為に改行しています
画像のような表範囲の中で、1行目が見出しで2行目以降がデータ範囲である場合にコードを使用することで見出し以外の範囲を全て選択することができます
少し見づらいですが、左下のウォッチ式の中の値がA1から行範囲にアドレスが変化している部分を確認してください
また、少し応用すると空白を除いた純粋なデータ範囲のみを取得する事も可能です
コード解説
Cells. _
何よりまずは、セル全体を指定しますのでCellsオブジェクトに対して処理を行います
Cellsオブジェクトは引数を省略した場合はセル全体が取得されます
Resize(Cells.Rows.Count - (Range("A2").Row - 1), Cells.Columns.Count). _
次に、Resizeプロパティを使用して範囲サイズの変更を行います
このプロパティは引数に指定した数値のセル範囲を取得するプロパティです
この際に指定する数値は、1つ目の引数が行数になります
(Cells.Rows.Count – (Range(“A2”).Row – 1),
この部分が1つ目の引数の部分になります、ここで行数を指定します
ここでは、A2セルを起点にするので2行目ということになります
2行目から取得を行うということは、除外するのが1行目の1行だけということになりますので、セルの全行数から1を引くことで指定することができます
とはいえ、その数値は固定では2行目以降しか選択できなくなってしまいますので可変にしておいたほうが便利です
そこでRangeオブジェクトのRowプロパティを使用して指定セルの行数を取得します
その行数から、-1します
これは、除外する行数の指定なので指定セルは除外対象になりません
なので除外する行数から-1してあげることで、指定セルの1行上が指定できます
Cells.Columns.Count)
2つ目の引数は列数の指定になりますが、今回は全ての範囲を指定するのでCellsオブジェクトに含まれている列数を指定します
これで全ての列の指定になります
これで、取得するべきセル範囲に変更することが出来ました
Offset(Range("A2").Row - 1, 0). _
Reiszeプロパティは、指定セル範囲のサイズを変更しますが、左上からのサイズ変更になります
つまり、上のコードで変更した行数では範囲の下から行数が削られていきます
なので、このままでは1行目が除外されるわけでは無く、最下行が除外された状態になります
そこでOffsetプロパティを使用して範囲を移動させます
Offsetプロパティは引数に指定した数値分、セル範囲を移動させます
今回は行方向への移動を行いますので、引数の1つ目に移動数を指定します
この移動値に関しては、Resizeプロパティで使用したものと同じになります
Select
最後に、この取得したセル範囲を選択状態にします
ここのメソッドを変更すれば、他の操作も可能になります
メソッドを使用せずに変数に取得させて、これらの範囲に対して色々な操作を行うことも出来ます