オーロラさんの勉強帳

33歳、未経験からIT業界へ。SESのロースキル客先常駐勤務。データベース、Excel、Excel VBA、ネットワーク、LinuxなどIT関連のことを主に書いていきます。

VBA 再入門16 メソッドpart3 (Delete)

 

Deleteメソッド

Deleteメソッドはセル、行、列、ワークシートを削除するメソッドです。セルの値を削除するのではなく、セル、行、列、ワークシートそのものを削除します。

 

  • RangeオブジェクトのDeleteメソッドは、セル、行、列を削除します。
  • WorksheetオブジェクトのDeleteメソッドはワークシートを削除します。

 

RangeオブジェクトのDeleteメソッド

Deleteメソッドで削除した後に周囲のセルをどちら方向にシフトするか引数の「Shift」で指定することができます。

 

構文:Rangeオブジェクト.Delete 
※引数を指定する場合は、Rangeオブジェクト.Delete Shift:=引数

 

引数について

  • xlToLeft  左方向にシフト
  • xlUp 上方向にシフト
  • 引数省略 セル範囲の形に応じて自動的にシフト

 

 

セルの削除のサンプル

以下のコードでは、セルA2:B3の範囲を削除し、上方向にシフトしています。

f:id:auroralights:20201207003435p:plain

f:id:auroralights:20201207003537p:plain

 

以下のコードでは、セルB2;C5のセルを削除し、左方向にシフトしています。

f:id:auroralights:20201207003455p:plain

f:id:auroralights:20201207003615p:plain

行の削除のサンプル

以下のコードでは、Rowsプロパティを使って2行目を削除後に5行目~6行目を削除します。

※こんな処理は普通しないと思いますが、2行目を消した後の5行目、6行目(マクロを実行する前は6行目、7行目)に対して削除しています。

f:id:auroralights:20201207003648p:plain

 

列の削除のサンプル

以下のコードでは、Columnsプロパティを使って、1列目を削除後にC列~D列を削除します。

※C列~D列の削除は、1列目を削除した状態でのC列~D列の削除になります。

f:id:auroralights:20201207003747p:plain

 

ワークシートの削除のサンプル

Sheet1、Sheet2がある状態で、Sheet2を削除してみましょう。

f:id:auroralights:20201207004717p:plain

以下のコードを実行すると、「このシートは完全に削除されます。続けますか?」と表示され「削除」を選択するとSheet2を削除することができます。

f:id:auroralights:20201207004706p:plain

f:id:auroralights:20201207004812p:plain

 

シートの削除の確認メッセージを表示させない方法 DisplayAlertsプロパティ

上記の「このシートは完全に削除されます。続けますか?」が表示されると、処理が中断されるので、ApplicationオブジェクトのDisplayAlertsプロパティをFalseに設定して削除可否の確認メッセージを表示させない方法もあります。

 

以下がDelete前にDisplayAlertsプロパティをFalseにして、確認メッセージを表示させないコードです。削除後はDisplayAlertsプロパティをTrueに戻します。

f:id:auroralights:20201207005041p:plain

 

なお、存在しないワークシートにDeleteメソッドを実行すると実行時エラーになります。