対象セル範囲を削除します。削除後に移動させるセル範囲の方向を引数<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
セルの削除によって、次に処理されるべきセルのアドレスが変わったため、思っ
たような処理がなされなかったのが失敗の原因です。セルの削除をする際には、削
除後にセルのアドレスがずれていくことを考慮する必要があります。
|