マクロ内のワークシートの削除(Microsoft Excel)
手元のタスクを実行するための適切なVBAコマンドを知っている場合、ほとんどのExcelコマンドをマクロ内で使用できます。次のマクロコマンドを使用して、アクティブなワークシートを削除できます。
ActiveSheet.Delete
マクロでコマンドを発行すると、Excelがマクロを一時停止し、ワークシートを削除してもよいかどうかを確認するメッセージが表示されます。
[はい]をクリックすると、ワークシートが削除され、マクロが再開されます。
もちろん、マクロの背後にある全体的な考え方は、定期的に実行するタスクの多くを自動化することです。停止して確認を求めるのが安全な方法かもしれませんが、自動化の原因を助けることはあまりありません。ワークシートを一時停止せずに削除したい場合は、いくつかの方法があります。まず、SendKeysメソッドを使用して、Enterキーを押すことをシミュレートできます。これは、確認ダイアログボックスで[はい]をクリックするのと同じです。ワークシートを削除する行の前に1行追加するだけです:
Application.SendKeys ("{ENTER}") ActiveSheet.Delete
SendKeysは、キーボードから入力した場合と同じように、キー押下をキーボードバッファに詰め込むだけです。したがって、SendKeys行はDelete行の前にある必要があります。これにより、Enterキーを押すと、必要になる前にバッファーに入れられます。
長年のマクロ開発者は、SendKeysの使用に関するいくつかの潜在的な問題を指摘できます。主な問題は、確認ダイアログボックスで、そのダイアログボックスでのみ[はい]オプションを受け入れることを指定できないことです。ただし、可能性は低いですが、他のダイアログボックス(おそらく別のプログラムによって生成されたもの)が適切なタイミングでポップアップした場合、Enterキーがそのダイアログボックスに適用され、期待したものではありません。
より良い解決策は、Excelのアラート機能を短時間オフにすることです。次のマクロコードについて考えてみます。
Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True
このコードは、アラートをオフにし、ワークシートを削除してから、アラートをオンに戻します。オフになっている間、Excelは確認ダイアログボックスを表示しませんが、表示され、デフォルトオプション(はい)が選択されているかのように動作します。
ここに示されているコードの最後の行を覚えておくことが重要です。 DisplayAlertsプロパティをTrueに戻さない場合、マクロが終了した後でも、Excelはそれ以上アラートメッセージを表示しません。ご想像のとおり、これは問題を引き起こす可能性があります。アラートをオフにする必要がある場合は、短時間だけFalseに設定することをお勧めします。
DisplayAlertsがFalseに設定されていても、エラーメッセージが生成された場合は、エラーメッセージが表示されます。たとえば、上記のコードを実行し、ワークブックにワークシートが1つしかない場合でも、エラーメッセージが表示されます。 (これは、ブックの最後のワークシートを削除できないために発生します。)
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(2293)は、Microsoft Excel 97、2000、2002、および2003に適用されます。