8/05/2017

Excel。マクロ011。削除と見出し行を残しての削除を確認してみよう

Excel。マクロ011。削除と見出し行を残しての削除を確認してみよう

<VBA>

事務職でも、少しExcel VBAを知っていると、
確かに作業効率は改善されるようですが、
難しいと感じている人も多いようです。

とはいえ、少しずつでいいので、慣れていくといいですね。

ということで、今回は、【削除】という基本操作を確認してみましょう。

次の表があります。

まずは、この表全部を削除するマクロVBAを作ってみましょう。

Sub del_all()
    Range("a1").CurrentRegion.Clear
End Sub

このClearメソッドを使うと、この表を削除することが出来ます。

けど、実務ではなかなか、表をバッサリ削除する事はなくて、
見出し行を残して削除するとか、
罫線はそのままでというケースのほうが多いと思います。

では、次の表を使って、見出しと罫線を残してデータだけを削除してみましょう。

使うのは、ClearContentsメソッドですね。

Sub データ削除()
    Range("a2", Range("a2").End(xlDown).End(xlToRight)).ClearContents
End Sub

今回は、表全部ではないので、
「CurrentRegion」を使うことは出来ませんね。

データはA2からなので、Endを使って最終行と最終列を範囲選択させます。

そして、ClearContentsを使います。このClearContentsは、
『数式と値のクリア』を行うことが出来ます。

さて、最終行に合計行がある場合は、どうしたらいいでしょうか?

次の表を使ってみましょう。

先ほどの、データ削除をアレンジすれば簡単に作れますので
確認しておきましょう。

Sub データ削除2()
    Range("a2", Range("a2").End(xlDown).Offset(-1).End(xlToRight).Offset(0, -1)).ClearContents
End Sub

では、実行してみましょう。

最終行と一番左の列に合計するSUM関数が設定されていますので、
削除したくないので、

.End(xlDown).Offset(-1)

とすれば、最終行からOffsetでマイナス1行のところまでを
範囲選択することが出来ます。

同じように、End(xlToRight).Offset(0, -1)としてあげれば、
一番左側の列を除いて範囲選択することが出来ます。

Excel関数では、なかなか、
Offset関数を使うことは少ないかもしれませんが、

マクロVBAの範囲選択では、Offsetを使いますので、
Offset関数の動き方を知っているといいかもしれませんね。

なお、削除するメソッドは、
ClearメソッドとClearContentsメソッドだけではありませんので、
他も合わせてご紹介しておきましょう。

Clearメソッドは、「すべてクリア」をしてくれます。
ClearContentsメソッドは、「数式と値のクリア」をしてくれます。
ClearFormatsメソッドは、「書式のクリア」をしれくれます。
この3つは、比較的使いますが、それ以外にも2つメソッドがありまして、
ClearCommentsメソッド。
これは、「コメントのクリア」をすることができるメソッドです。

ClearHyperlinksメソッド。
これは、「ハイパーリンクのクリア」をすることができるメソッドなんですが、Excel2010以降で登場したので、Excel2007では使えません。

このように、削除にも様々なメソッドがあります。