セル/行/列を削除する(Deleteメソッド)
 対象セル範囲を削除します。削除後に移動させるセル範囲の方向を引数<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

 セルの削除によって、次に処理されるべきセルのアドレスが変わったため、思っ
たような処理がなされなかったのが失敗の原因です。セルの削除をする際には、削
除後にセルのアドレスがずれていくことを考慮する必要があります。

Excel2000



戻る


Excel Word Access VBA! モーグ