• ベストアンサー

EXCEL VBAでシートを削除したい

こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • MovingWalk
  • ベストアンサー率43% (2233/5098)
回答No.1

以下のようにすればいいみたいです。 Application.DisplayAlerts = False '確認メッセージを表示しない ActiveWindow.SelectedSheets.Delete 'ワークシートを削除する Application.DisplayAlerts = True '確認メッセージを表示する 参照URLの 10)の下の方に書かれています。

参考URL:
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv251.html
noname#14563
質問者

お礼

ご返答ありがとうございました。 教えて頂いた方法で解決することが出来ました。 また何かありましたら宜しくお願い致します。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

回答は#1出ています。 ○別の面で下記心配になりました。 貴殿のプログラムの骨子は下記と思います。 Sub test01() Sheets(1).Delete End Sub Sheets()の()内の「1」の意味は、大丈夫ですか。「一番左に表示されている シートを削除する」だと記憶します。Sheets(2)なら左から2つ目にシートタブがあるシートが削除される。一応当方でテスト済み。このように表示順序に依存 するプログラムで大丈夫ですか。操作者がシートタブを入れ替えたらプログラマの意図と反しませんか。 ○面倒と言うこと、VBAは操作者の介入を極力排除することもわかりますが、警告なしには危険がないか慎重に考えるべきであるのでは。

noname#14563
質問者

補足

プログラム仕様は、プログラム自体がデータを操作する為のダミーシートを「一番最後」に追加し、それを削除するというもので、実際には下記の通りに記述しています。 Sheets(Sheets.Count).Delete > Sheets(2)なら左から2つ目にシートタブがあるシートが削除される。一応当方でテスト済み 当然当方でもテスト済み。 > 警告なしには危険がないか慎重に考えるべきであるのでは。 当然考慮済みです。