- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBAでのシートの削除について)
Excel VBAでのシート削除について
このQ&Aのポイント
- Excel VBAでシート上のボタンをクリックしてシートを削除する方法について。Application.DisplayAlertsを設定して削除する際にオートメーションエラーが発生し、解決方法を探している。
- シートの削除後に別のシートで処理を行う場合には、再度メッセージを表示したい。Sheet1の削除後、アクティブになるSheet2でDisplayAlertsを設定する方法を試したが、結果は思ったようにならなかった。なぜこのような結果になるのか疑問。
- Excel VBAでシートの削除後、アクティブになったシートでDisplayAlertsを設定する方法について。ボタンをクリックすると設定が反映され、メッセージが表示されるが、なぜ最初の設定が反映されないのか不明。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ボタンをクリックしてプログラムを書いたシートを削除しているのでしょうか? それでしたら、コードが書かれたシート自体が無くなっているので、マクロに矛盾が起きてしまうせいでしょう。 シートモジュール上ではどのようにやっても上記の制限(シート消滅後のコマンド実行の矛盾)からは逃れる事は出来ません。 標準モジュールに Sub WS_DEL() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub と記入して、ボタンにマクロを割り付ければ上記のような問題は起きません。 >なぜこのような結果になるのかわかりません。よろしくお願いいたします。 VBAのヘルプに下記の記載があります。 モジュールの実行(終了)後は自動的にTrueに戻るようです。 ------------------------------------------------------------- このプロパティを False に指定した場合、クロス プロセス コードの実行中以外は、コードの終了時に自動的に True に変更されます。
お礼
ありがとうございました。 とりあえず回避策を見つけたのですが、このご回答を参考にしたいと思います。 また、DisplayAlertsはOFFICEのバージョンによって仕様が違うのかもしれませんね。 参考までに、OFFICE2000での記載を下記に貼り付けておきます。 こちらの勘違いで、同じ意味でしたら申し訳ございません。 ------------------------------------------------------------ このプロパティは、False に設定してマクロの実行を終了しても、自動的に True には戻りません。マクロの実行が終了したときは、常にプロパティを True に設定するようにします。