- ベストアンサー
EXCEL VBAでシートを削除したい
こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下のようにすればいいみたいです。 Application.DisplayAlerts = False '確認メッセージを表示しない ActiveWindow.SelectedSheets.Delete 'ワークシートを削除する Application.DisplayAlerts = True '確認メッセージを表示する 参照URLの 10)の下の方に書かれています。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
回答は#1出ています。 ○別の面で下記心配になりました。 貴殿のプログラムの骨子は下記と思います。 Sub test01() Sheets(1).Delete End Sub Sheets()の()内の「1」の意味は、大丈夫ですか。「一番左に表示されている シートを削除する」だと記憶します。Sheets(2)なら左から2つ目にシートタブがあるシートが削除される。一応当方でテスト済み。このように表示順序に依存 するプログラムで大丈夫ですか。操作者がシートタブを入れ替えたらプログラマの意図と反しませんか。 ○面倒と言うこと、VBAは操作者の介入を極力排除することもわかりますが、警告なしには危険がないか慎重に考えるべきであるのでは。
補足
プログラム仕様は、プログラム自体がデータを操作する為のダミーシートを「一番最後」に追加し、それを削除するというもので、実際には下記の通りに記述しています。 Sheets(Sheets.Count).Delete > Sheets(2)なら左から2つ目にシートタブがあるシートが削除される。一応当方でテスト済み 当然当方でもテスト済み。 > 警告なしには危険がないか慎重に考えるべきであるのでは。 当然考慮済みです。
お礼
ご返答ありがとうございました。 教えて頂いた方法で解決することが出来ました。 また何かありましたら宜しくお願い致します。