HOME > 即効テクニック > Excel VBA > セル操作関連のテクニック > セル/行/列を削除する(Deleteメソッド)

即効テクニック

セル操作関連のテクニック

セル/行/列を削除する(Deleteメソッド)

(Excel 2000)
対象セル範囲を削除します。削除後に移動させるセル範囲の方向を引数<Shift>で指定します。省略した場合、セル範囲が縦長の場合には左方向に、横長か正方形の場合には上方向に移動します。列が対象の場合には必ず左方向、行が対象の場合には必ず上方向に移動します。対象が行/列以外の場合には省略しない方が良いでしょう。

 構文 Object.Delete(Shift)

 設定項目  内容
 Object   Rangeオブジェクト
 Shift    削除後のセルの移動方向
       左(xlShiftToLeft) 上(xlShiftUp) [省略可能]

次の「DeleteSamp1」は使用中のセル範囲の中から空白セルを削除し、データの入力されたセルを左方向に移動します。
●サンプル1●
Sub DeleteSamp1()
   ActiveSheet.UsedRange.SpecialCells(xlCellTypeBlanks) _
      .Delete Shift:=xlShiftToLeft  '----空白セルを削除して左にシフト
End Sub
空白セルの参照にはSpecialCellsメソッドを使用しています。
次の「DeleteSamp2」でも同様の動作をするように思われるかもしれませんが、実際には失敗します。
●サンプル2●
Sub DeleteSamp2()
   Dim c As Range
   For Each c In ActiveSheet.UsedRange
      If c = "" Then c.Delete Shift:=xlShiftToLeft
   Next c
End Sub
セルの削除によって、次に処理されるべきセルのアドレスが変わったため、思ったような処理がなされなかったのが失敗の原因です。セルの削除をする際には、削除後にセルのアドレスがずれていくことを考慮する必要があります。