EXCEL VBA を使て行と列を削除する

2021年12月25日

Excel VBA を使って処理の自動化を行う場合、行と列を削除するケースが出てきます。
VBAでExcel の行と列を削除する場合、以下のRange.Deleteメソッドを使って行と列の削除範囲と削除後のセルの移動方向を指定することにより実行できます。サンプルアプリを使って利用方法について解説します。

 ・ Range(“[挿入範囲]").Delete shift:=[挿入後のセルの移動方向]

行と列を削除するサンプルアプリの説明

「行の削除」ボタンをクリックすると7行目から8行目が削除されます。

「列の削除」ボタンをクリックするとC列~D列が削除されます。

Deleteメソッドの説明

Deleteメソッドの書式
 Rangeオブジェクト.Delete Shift:={下記の値}
  Shift:=xlShiftToLeft セルを左方向にシフト
  Shift:=xlShiftUp セルを上方向にシフト

さらに、Excel VBAでは Range.EntireRow.Delete を使って指定した範囲を含む行全体を削除できます。  
  Range(“7:8").EntireRow.Delete
また、Range.EntireColumn.Delete を使って指定した範囲を含む列全体を削除できます。
  Range(“C:D").EntireColumn.Delete

サンプルアプリのソースコード  コードの作成手順はこちら

「行の削除」ボタンのソースコード

Sub ボタン1_Click()

  'シート名を入れる変数の定義
   Dim wS As Worksheet
  '変数 wS に シート名「Sheet1」をセット
   Set wS = Worksheets("Sheet1")

   'B7~D8の2行を削除
    Range("B7:D8").Delete shift:=xlShiftUp
    
  'E17のセルを選択して終了
   Range("A1").Select
        
End Sub

「列の削除」ボタンのソースコード

Sub ボタン2_Click()

  'シート名を入れる変数の定義
   Dim wS As Worksheet
  '変数 wS に シート名「Sheet1」をセット
   Set wS = Worksheets("Sheet1")

   Dim myLast As Long
  'データ最終行を取得
   myLast = wS.Cells(Rows.Count, 2).End(xlUp).Row

   'C5~D16の2列を削除
    Range(Cells(5, 3), Cells(myLast, 4)).Delete shift:=xlShiftToLeft
     
  'E17のセルを選択して終了
   Range("A1").Select
        
End Sub