• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAでのシートの削除について)

Excel VBAでのシート削除について

このQ&Aのポイント
  • Excel VBAでシート上のボタンをクリックしてシートを削除する方法について。Application.DisplayAlertsを設定して削除する際にオートメーションエラーが発生し、解決方法を探している。
  • シートの削除後に別のシートで処理を行う場合には、再度メッセージを表示したい。Sheet1の削除後、アクティブになるSheet2でDisplayAlertsを設定する方法を試したが、結果は思ったようにならなかった。なぜこのような結果になるのか疑問。
  • Excel VBAでシートの削除後、アクティブになったシートでDisplayAlertsを設定する方法について。ボタンをクリックすると設定が反映され、メッセージが表示されるが、なぜ最初の設定が反映されないのか不明。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

ボタンをクリックしてプログラムを書いたシートを削除しているのでしょうか? それでしたら、コードが書かれたシート自体が無くなっているので、マクロに矛盾が起きてしまうせいでしょう。 シートモジュール上ではどのようにやっても上記の制限(シート消滅後のコマンド実行の矛盾)からは逃れる事は出来ません。 標準モジュールに Sub WS_DEL() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub と記入して、ボタンにマクロを割り付ければ上記のような問題は起きません。 >なぜこのような結果になるのかわかりません。よろしくお願いいたします。 VBAのヘルプに下記の記載があります。 モジュールの実行(終了)後は自動的にTrueに戻るようです。 ------------------------------------------------------------- このプロパティを False に指定した場合、クロス プロセス コードの実行中以外は、コードの終了時に自動的に True に変更されます。

noname#224929
質問者

お礼

ありがとうございました。 とりあえず回避策を見つけたのですが、このご回答を参考にしたいと思います。 また、DisplayAlertsはOFFICEのバージョンによって仕様が違うのかもしれませんね。 参考までに、OFFICE2000での記載を下記に貼り付けておきます。 こちらの勘違いで、同じ意味でしたら申し訳ございません。 ------------------------------------------------------------ このプロパティは、False に設定してマクロの実行を終了しても、自動的に True には戻りません。マクロの実行が終了したときは、常にプロパティを True に設定するようにします。

関連するQ&A