- 公開日:2016-7-4
- プロスタTOP / プログラミング初心者向け技術系ノウハウ・まとめ

VBAでセルを削除する方法
今回はVBAでセルを削除する方法を解説します。セルに入っているデータだけではなくセルそのものを削除すると、残ったセルが削除されたセルの部分を埋めるように上方向または左方向へシフトするという特徴があります。
単体のセルの削除
RangeまたはCellsで削除する対象のセルを指定し、続けて“.Delete”のコードを入力します。
<削除前>
<コード>
指定したセルが削除され、隣のセルが1つずつ移動して削除された部分を埋めています。
複数のセルの削除
Rangeで範囲を指定して削除することもできます。
<削除前>
<コード>
指定した範囲のセルが削除され、隣接したセルが削除したセルの分だけシフトしています。
行・列の削除
セルを縦または横方向に1行削除したいという場合下記の様にコードを記述します。
<削除前>
<コード>
コード実行後は隣の行が1行丸ごとシフトしています。シートのフォーマットが崩れることが少なく非常に実用的な使い方となります。
セルがシフトする方向の指定
前述のコードではセルの削除後に隣接しているセルがどちら側にシフトするのか曖昧なままです。
業務で使用するシートがVBAを走らせることにより崩れてしまってはその都度修正の手間がかかります。
ここは後々の作業に影響しないようにしっかりと設定しておくようにしましょう。
<シフト方向を指定した削除前の状態>
セルがシフトする方向はDeleteメソッドの後に引数で設定することができます。ちなみにセルの削除時は右側や下方向へのシフトはできません。(エラーが発生します。)
<コード>
まとめ
セルの削除は頻繁に行う操作ですが、実行後周辺のセルがシフトすることを考慮してコードを書かないと、思わぬ不具合を引き起こす原因となります。コードを見ただけでセルの動きが理解できるように極力引数は省略しないようにしましょう。