Excel。VBA。見出し行を除いた範囲を手早く削除するにはどうしたらいい
<Excel VBA:Resizeプロパティ>
簡単な処理でも、何度も行うと、面倒になってきます。
まして、簡単になればなるほど面倒です。
例えば、次のデータ。
見出し行を残して、データだけを削除する作業など、面倒な作業の一つといえます。
しかも、データ量がその都度、異なっているとか、データ量が膨大だったりすれば、範囲選択も面倒な作業となってきます。
手早く処理をしたいので、Excel VBAでプログラム文を考えてみることにしましょう。
Sub 見出し行除き範囲()
Dim rw As Integer
Dim cl As Integer
rw = Range("a1").CurrentRegion.Rows.Count
cl = Range("a1").CurrentRegion.Columns.Count
Range("a2").Resize(rw - 1, cl).Clear
End Sub
たった、数行ですが、作業効率が改善することができます。
まずは、実行していましょう。
このように、見出し行だけを残して、データを削除することができました。
それでは、プログラム文を確認しておきましょう。
最初は、お馴染みの変数宣言です。
Dim rw As Integer
行数の変数として、rwを用意しました
Dim cl As Integer
列数の変数として、clを用意しました。
rw = Range("a1").CurrentRegion.Rows.Count
データの行数をrwに代入する作業をしています。
当たり前ですが、途中に空白があると範囲選択が表の途中になってしまうので、注意が必要です。
今回は、データベースのルールに則っているものとしています。
cl = Range("a1").CurrentRegion.Columns.Count
データの列数を代入するのがclです。
これで、rwとclの情報から表全体の大きさがわかります。
そして、見出し行を除いた範囲選択とデータの削除を行うのが、次のプログラム文です。
Range("a2").Resize(rw - 1, cl).Clear
A2を起点としています。これは、見出し行の直下の左隅セルです。
今回のポイントである、Resizeプロパティで、見出し行を除いた範囲を選択します。
Resize(rw - 1, cl)
Resizeプロパティは、
Resize(行数,列数)という引数をもっています。
行数をrwに代入しましたが、見出し行を除きたいので、「-1」しています。
最後は、削除したいので、「Clear」として、完成しました。
Resizeを使わないで、
Range("a2").CurrentRegion. Clear
とすると、A2以降の隣接する範囲ではなくて、A2も含めた隣接する範囲が対象になってしまうので、見出し行も削除することになります。
そのため、「CurrentRegion」ではなく、「Resize」をつかう必要があるわけです。
今回のように何気ない簡単な作業も、Excel VBAでプログラムをつくることで、作業効率が改善するかもしれませんね。