教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA ブック操作】ブックに新しいシートを追加した時に発生するイベントプロシージャを作成するにはどうすればいいの?教えて!

ブックに新しいシートを追加した時に発生するイベントプロシージャは「Workbook_NewSheet」を使います。

構文

構文は以下の通りです。

Private Sub Workbook_NewSheet(ByVal Sh As Object)
    ' 実行したいコードをここに記述します
End Sub

解説

Workbook_NewSheetイベントプロシージャは、新しいシートがブックに追加されるたびに自動的に実行されるプロシージャです。ByVal Sh As Objectは、イベントプロシージャに渡される引数です。Shは新しいシートを表すオブジェクトです。

使い方

Workbook_NewSheetイベントプロシージャの使い方について解説します。

手順

1.Excelを開き、VBAエディタを起動します。VBAエディタは「Alt + F11」キーでアクセスできます。
2.プロジェクトエクスプローラーウィンドウから、目的のブックを選択します。
3.ブック内のモジュールを右クリックし、「挿入」→「クラスモジュール」を選択します。
4.クラスモジュールが作成されたら、コードウィンドウを開きます。
5.コードウィンドウ内に、以下のコードを記述します。

Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_NewSheet(ByVal Sh As Object)
    ' 実行したいコードをここに記述します
End Sub

解説

・Private WithEvents App As Application:Applicationオブジェクトを宣言し、WithEventsキーワードでAppという名前の変数と関連付けます。これにより、Excelアプリケーションのイベントにアクセスできるようになります。

・Private Sub Workbook_Open():ブックが開かれたときに実行されるイベントプロシージャです。App変数にApplicationオブジェクトを設定することで、イベントを受け取るための準備をします。

・Private Sub App_NewSheet(ByVal Sh As Object):新しいシートが追加されたときに実行されるイベントプロシージャです。Sh変数は新しいシートを表すオブジェクトです。このプロシージャ内に処理したいコードを記述します。

プログラミング例

以下に、Workbook_NewSheetイベントプロシージャのプログラミング例を示します。

Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_NewSheet(ByVal Sh As Object)
    MsgBox "新しいシート「" & Sh.Name & "」が追加されました!"
End Sub

上記の例では、新しいシートが追加されるたびにメッセージボックスが表示されます。表示されるメッセージには、新しいシートの名前が含まれます。

まとめ

Workbook_NewSheetイベントプロシージャは、新しいシートがブックに追加されるときに実行されるプロシージャです。ブック内のクラスモジュールにコードを記述し、App_NewSheetイベントプロシージャを使用します。App_NewSheet内には、新しいシートに対する処理を記述します。