VBAでセル・行・列・シートを削除するには Delete メソッドを使います。ただし削除するとその後のセルや行が詰まって移動するので、値だけ消したい場合は ClearContents の方が安全でパフォーマンスも良いです。
この記事では、次の内容を順番に解説します。
- セルを削除するときのShift引数の使い方
- 行・列・シートの削除方法
- DeleteとClearContentsの使い分け
セルを削除するには?
セルを削除すると、隣接するセルが詰まって移動します。どちら方向に詰めるかを Shift 引数で指定します。
' A2セルを削除して上方向に詰める
Cells(2, 1).Delete Shift:=xlShiftUp
' A2セルを削除して左方向に詰める
Cells(2, 1).Delete Shift:=xlShiftToLeft
Shift を省略すると、Excelが自動で方向を判断しますが、意図しない方向に詰まることがあります。セルの削除では必ず Shift を指定しましょう。
行・列・シートを削除するには?
行・列・シートの削除は移動方向が決まっているので、Shift の指定は不要です。
' 5行目を削除する(下の行が上に詰まる)
Rows(5).Delete
' B列を削除する(右の列が左に詰まる)
Columns("B").Delete
' Sheet1を削除する
Sheets("Sheet1").Delete
シートを削除すると「元に戻せません」という確認ダイアログが表示されます。マクロの中でダイアログを出したくない場合は、前後に Application.DisplayAlerts = False を入れてください。
' 確認ダイアログなしでシートを削除する
Application.DisplayAlerts = False
Sheets("Sheet1").Delete
Application.DisplayAlerts = True
DeleteとClearContentsはどう使い分ける?
「値だけ消したい」のか「行や列ごと消したい」のかで使い分けます。
- ClearContents:セルの値だけを消す。セルの位置は変わらない。処理が軽い。
- Delete:セルや行・列ごと削除して、後続のセルを詰める。処理が重い。
' 値だけ消す(セルは動かない)
Range("A2:A10").ClearContents
' 行ごと削除する(下の行が上に詰まる)
Rows(5).Delete
大量のデータを繰り返し削除するとExcelへの負荷が大きくなります。値を消すだけでよい場合は ClearContents を優先しましょう。
まとめ
- セルの削除:
Cells(行, 列).Delete Shift:=xlShiftUpまたはxlShiftToLeft - 行の削除:
Rows(5).Delete - 列の削除:
Columns("B").Delete - シートの削除:
Sheets("Sheet1").Delete(ダイアログを出さない場合はDisplayAlertsをFalseに) - 値だけ消すなら:
ClearContentsの方が処理が軽くて安全。
よくある質問
複数行をまとめて削除するには?
Rows("3:5").Delete のように行番号の範囲を指定します。離れた行をまとめて削除する場合は Range("3:3,5:5").Delete のようにカンマで区切って指定できます。ただし離れた行の削除は処理が重くなりやすいので、ループで1行ずつ削除するよりも、まとめて指定する方が効率的です。
条件に一致する行だけ削除したい場合は?
ループで条件をチェックしながら削除するときは、最終行から上に向かってループするのが基本です。上から削除していくと行番号がずれて、意図しない行が飛ばされることがあります。For i = lastRow To 2 Step -1 のように逆順にループしましょう。
削除した後にCtrl+Zで元に戻せる?
VBAで実行した削除はCtrl+Zで元に戻せないことがほとんどです。特に Delete メソッドはExcelの「元に戻す」履歴に残らないため、実行前にバックアップを取るか、確認ダイアログを入れておくと安心です。
行削除と行のClearの速度はどれくらい違う?
Deleteは行が詰まる分、Excelが大量のセルを移動する処理が走るため、ClearContentsよりも処理が重くなります。大量のデータを繰り返し削除するマクロでは、DeleteをClearContentsに変えるだけで大幅に速くなることがあります。
シートを削除するときに確認ダイアログを出したままにする方法は?
DisplayAlerts を変更しなければダイアログが表示されます。他の人も使うマクロで誤削除を防ぎたい場合は、あえてダイアログを表示させたままにするか、MsgBoxで独自の確認を入れてから削除する方が安全です。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



