Excelマクロで「削除」にあたる命令は、Deleteメソッドと呼ばれます。範囲を指定してメソッドを実行することで、セルを削除することが可能です。
もし間を詰めずに内容だけを削除したい場合は、ClearContentsメソッドなどを使用します。
Deleteメソッドの使い方
オブジェクト(セル・範囲など)を削除する
対象.delete
対象.delete
Deleteメソッドでは、セル・横(行)一列・範囲を削除した場合は下のセルが上に、縦(列)一列を削除した場合には右のセルが左に移動し、空いた場所を補完します。
![dlt1](https://sunagitsune.com/wp-content/uploads/2019/12/dlt1.jpg)
まずはこの表から、A1セルを削除してみましょう。
![dlt2](https://sunagitsune.com/wp-content/uploads/2019/12/dlt2.jpg)
マクロを開き、Range(“A1”).Delete(A1を削除)と入力します。
![dlt3](https://sunagitsune.com/wp-content/uploads/2019/12/dlt3.jpg)
A1が削除され、その下のA列がひとつずつ上にズレて空いた箇所を埋めました。
![dlt4](https://sunagitsune.com/wp-content/uploads/2019/12/dlt4.jpg)
同様に見ていきましょう。ふたたびマクロを開き、今度はRange(“A1:A4”).Deleteに修正します。
![dlt1_2](https://sunagitsune.com/wp-content/uploads/2019/12/dlt1_2.jpg)
範囲で言うと縦(列)一列になります。これを実行すると……。
![dlt5](https://sunagitsune.com/wp-content/uploads/2019/12/dlt5.jpg)
空いた列を埋めるように右のセルがひとつずつズレました。
![dlt6](https://sunagitsune.com/wp-content/uploads/2019/12/dlt6.jpg)
Range(“A1:C1”).Deleteに修正します。
![dlt1_3](https://sunagitsune.com/wp-content/uploads/2019/12/dlt1_3.jpg)
範囲で言うと横(行)一列になります。これを実行すると……。
![dlt7](https://sunagitsune.com/wp-content/uploads/2019/12/dlt7.jpg)
空いた箇所を埋めるように下のセルがひとつずつズレました。
![dlt1_4](https://sunagitsune.com/wp-content/uploads/2019/12/dlt1_4.jpg)
最後に範囲を削除してみます。
![dlt8](https://sunagitsune.com/wp-content/uploads/2019/12/dlt8.jpg)
Range(“A1:B2”).Deleteに修正します。
![dlt9](https://sunagitsune.com/wp-content/uploads/2019/12/dlt9.jpg)
実行すると、空いた箇所を埋めるように下のセルがひとつずつズレました。
範囲を詰める方向を指定したい場合
Deleteメソッドの後ろに、引数を指定することで詰める方向を指定することが可能です。
セルを削除し、左方向に詰める
対象.delete xlshifttoleft
(または対象.delete -4159)
対象.delete xlshifttoleft
(または対象.delete -4159)
セルを削除し、上方向に詰める
対象.delete xlshiftup
(または対象.delete -4162)
4159とか4162とかはモールス信号みたいなもので、数字自体に意味はありません。これだと覚えにくいので作られたのがxl~の定数で、こういう変更できない予め用意された定数を「組み込まれた」「定められた数」=組み込み定数と呼びます。
![xlshifttoleft1](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft1.jpg)
範囲を削除し、D列を左に詰めてA列まで持ってきたいと思います。
![xlshifttoleft2](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft2.jpg)
この場合はrange(“A1:C4”).delete xlshifttoleftと記述するか、
![xlshifttoleft3](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft3.jpg)
またはrange(“A1:C4”).delete -4159と記述します。
![xlshifttoleft4](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft4.jpg)
A~C列の範囲が削除され、右にある列が左に詰められました。
![xlshifttoleft5](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft5.jpg)
上に詰める場合も同様です。
![xlshifttoleft6](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft6.jpg)
range(“A1:A4”).delete xlshiftupと記述するか、
![xlshifttoleft7](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft7.jpg)
またはrange(“A1:A4”).delete -4162と記述します。
![xlshifttoleft8](https://sunagitsune.com/wp-content/uploads/2019/12/xlshifttoleft8.jpg)
A1~A4が削除され、下にあるセルが上に詰められました。
Deleteメソッドはセルの他にもオブジェクト全般削除に用いますが、ワークシートの削除の場合には警告メッセージが表示されて結局手動になるので、一手間かける必要があります。
マクロでオブジェクトを削除する方法については以上です。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント