Digital_Neko

フリーランスプログラマー

Excel-VBA メソッドとは ワークシートの連続削除

メソッドとプロパティをしっかり区別できるようになると、自分がオブジェクトに対して何をしたいのかを明確にわかるようになります。マイクロソフトのリファレンスを見ながら、自分でプログラムを作成できるのを目標にしましょう。

オブジェクトに対して命令する操作をメソッドと言います。人間に動きを指示する場合を考えるとわかりやすいかもしれません。人間(オブジェクト)に、走れ、隠れろ、逃げろとか命令する場合です。

具体的には、Worksheetオブジェクトに「Worksheetを追加」と命令する、もしくは「Worksheetを削除」と命令すること等があります。

Worksheetsを加える時は、Addメソッドを用いて、「Worksheets.Add」と書きます。 削除する時はDeleteメソッドを用いて、「Worksheets.Delete」と書きます。

ためしにワークシートの「Sheet1」 以外を残して全てのシートを削除するサンプルプログラムを記載します。

プログラム手順は、シート削除確認メッセージ(アラート)を非表示にします。「Worksheets.Count」でワークシート数を取得します。ワークシートの数だけ、削除動作を実行します。ワークシートの名前が「Sheet1」でなければ、ワークシートを削除します。ループ終了後にアラートの表示を元に戻します。サンプルプログラムを下記に示します。

Application.DisplayAlerts = False

For  i= WorkSheets.Count to 1 step -1

 If WorkSheets(i).Name<>”Sheet1” then

 WorkSheets(i).Delete

 End if

Next i

Application.DisplayAlerts = True

ループ処理でワークシートを削除する時には注意事項があります。1番目のワークシートから削除していくと、エラーが起きてプログラムが終了します。1番目のワークシートを削除した後、次のワークシートが、1番目にくるのでループ処理でエラーを起こします。その為ワークシートを後ろから削除します。

ワークシートを削除する時は、確認メッセージが削除するたびに表示されます。動作が途切れるので、非表示に切り替える必要があります。

Application.DisplayAlertsにFalseもしくは、Trueを設定すると、確認メッセージの表示・非表示を切り替えることができます。False(非表示)に設定したら、必ずTrue(表示)に戻しておきましょう。

またワークシートを全て削除することは出来ないので、サンプルプログラムでは、「Sheet1」を残すようにしています。

今回用いたCountプロパティは、コレクションに含まれるオブジェクトの数を数えたい時に利用します。Worksheetオブジェクトの集合体がWorksheetsコレクションです。