VBA セルを削除して詰めて埋める(Delete)

基本概要

  • DeleteRangeオブジェクトのメソッド。
  • 対象のセル・行・列をワークシートから削除し、削除した部分を詰める。
  • 削除後、セルの右または下にあるデータが前にシフトする。

Deleteの動作

操作対象動作例
単一セルのDeleteセルを削除し、右隣のセルが左にシフト
複数セルのDelete選択範囲内で右シフトまたは下シフト(指定可)
行のDelete行を丸ごと削除し、下の行が上にシフト
列のDelete列を丸ごと削除し、右の列が左にシフト

使い方の書式

Range("A1").Delete Shift:=xlShiftUp     ' セルA1を削除し、下のセルを上にシフト
Range("B2:D4").Delete Shift:=xlShiftToLeft ' 範囲を削除し右のセルを左にシフト
Rows(3).Delete ' 3行目を丸ごと削除(下の行が上に詰まる)
Columns("B").Delete ' B列を丸ごと削除(右の列が左に詰まる)

Shift引数

  • Shiftは削除した後にどの方向にセルを詰めるか指定するオプション引数。
  • 省略すると、セルの場合はxlShiftUp(上方向に詰める)がデフォルト。
  • 行や列を削除する場合はShiftは不要。

主な定数

定数名意味
xlShiftUp下のセルを上に詰める
xlShiftToLeft右のセルを左に詰める

実用例

1. セルを削除し下のセルを上に詰める

Range("A2").Delete Shift:=xlShiftUp

2. セル範囲を削除し右のセルを左に詰める

Range("B2:C3").Delete Shift:=xlShiftToLeft

3. 行を削除(3行目を丸ごと消す)

Rows(3).Delete

4. 列を削除(B列を丸ごと消す)

Columns("B").Delete

注意点

  • Deleteはセルの内容だけでなく、セル自体を「なくす」のでデータの構造が変わることに注意。
  • セルを削除すると、参照している数式やマクロに影響が出る場合がある。
  • 行や列を削除すると、シート全体のデータの位置が変わるため、意図しない影響が発生することがある。

まとめ

メソッド動作主な用途
ClearContentsセルの値・数式のみ消去内容だけ消したい場合
Clearセルの値・書式・コメントをすべて消去セルを初期状態に戻したい場合
Deleteセルや行・列をワークシートから削除し、詰めるセル・行・列を完全に削除したい場合
タイトルとURLをコピーしました