和風スパゲティのレシピ

日本語でコーディングするExcelVBA

シートを削除する - Worksheet.Delete

ワークシートを削除する「Deleteメソッド」の使い方を解説します。


ワークシートを削除する場合は、

[削除するシート].Delete

を実行します。


サンプルコードは以下の通りです。

' アクティブシートを削除
ActiveSheet.Delete

' 指定番目のシートを削除
Worksheets(3).Delete

' 指定名称のシートを削除
Worksheets("売上データ").Delete

' 他ブックのシートを削除
Workbooks("○○.xlsx").Worksheets("△△").Delete

 

削除時に表示されるメッセージをOFFにする

上記のコードを実行すると、

シートを削除すると元に戻せません。また、一部のデータが削除される可能性があります。それでも問題がない場合は、[削除] をクリックしてください。

このようなメッセージが表示されます。


せっかくのマクロなのに、ボタンを押すまで次に進まなくなるのは困る場面が多いでしょう。

このメッセージを表示せずにシートを削除する場合は、以下のように記載します。

Application.DisplayAlerts = False
Worksheets("売上データ").Delete
Application.DisplayAlerts = True

Application.DisplayAlertsにTrue/Falseを渡すことで、警告メッセージのONOFFを切り替えることができます。

これをOFFにしてからシートを削除をすれば、メッセージで止まらないマクロできます。


警告メッセージがOFFのままではその他の危険を検知できなくなりますので、
削除後はすみやかにONに戻してください。


この「警告メッセージのONOFFでコードを囲む」手法は、
「ブックを保存せずに閉じる」など、いろいろな場面で出てきますので覚えておきましょう。


いちいち書くのが面倒な場合は、

だf Application.DisplayAlerts = False
だt Application.DisplayAlerts = True

などのように、ユーザー辞書に変換を登録しておくと便利です。

Worksheet クラスの Delete メソッドが失敗しました。

このメッセージが表示され、削除が失敗することがあります。

  1. ブックの保護が有効になっている
  2. ブックの共有が有効になっている

この2つが主な要因と思われますので、確認してみてください。


保護を解除してから削除するには、

Application.DisplayAlerts = False
Worksheets("売上データ").Unprotect
Worksheets("売上データ").Delete
Application.DisplayAlerts = True

このコードを実行すればよいです。


PW付きの保護である場合は、

Worksheets("売上データ").Unprotect Password:="設定したPW"

でOKです。