VBAでは操作をきっかけとして自動的に実行されるプロシージャの事を「イベントプロシージャ」と言います。自動実行のきっかけとなる操作の事を「イベント」と呼び、「イベント」はブックやワークシート、ユーザーフォーム等のオブジェクトに対して発生します。このイベントを利用して「ブックに新しいシートを追加した時に発生するイベントプロシージャの作り方」について紹介します。
構文
イベントプロシージャの記述方法は以下の通りです。
Private Sub Workbook_NewSheet(ByVal Sh As Object)
[実行する処理内容]
End Sub
[説明]:
ブックに新しいシートを追加した時に実行されるイベントプロシージャです。
[実行する処理内容] | イベントが実行された時に処理する内容を記述します。 |
このイベントプロシージャにはオプションが設定されています。
オプションの内容は以下の通りとなります。
オプション | 内容 |
sh | 新しく追加されるシートの情報が渡されます。 |
[記述例]:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "新しいシートが追加されました。"
End Sub
作り方
(1)VBE(VBA記述画面)を開きます。
※画面の開き方はこちらの手順を参考にして下さい。
(2)ブックオブジェクトをダブルクリックします。
(3)オブジェクトボックスの▼ボタンをクリックします。
(4)プルダウン一覧の中から「WorkBook」を選択します。
(5)この時点で「Workbook_Open」イベントプロシージャが表示されます。(これは自動的に作成される仕組みとなっている様です。)
(6)プロシージャボックスの▼ボタンをクリックします。
(7)プルダウン一覧の中から「NewSheet」を選択します。
(8)「Workbook_NewSheet」イベントプロシージャが表示されます。
(9)(8)で作成したイベントプロシージャに実行させる内容を記述します。以下で記述例を2つ紹介します。
(例①)新しいシートを追加した際にメッセージを表示する方法
ブックに新しいシートを追加した際にメッセージを表示する方法について紹介します。
[プログラミング例①]:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
MsgBox "新しいシートが追加されました。"
End Sub
内容は、「ブックに新しいシートを追加した際に”新しいシートが追加されました。”をMsgBoxで表示して下さい。」との意味になります。
[実行例①]:
今回の例としては、Book1.xlsmブックが開かれており、Book1.xlsmブックには上記で説明したプログラミング例①が記述されています。
(実行前)
Book1.xlsmブックの<(+)>ボタンをクリックします。(※(+)はシート追加ボタンとなります。)
(実行後)
Book1.xlsmブックに新しいシート(Sheet4)が追加されると同時に「新しいシートが追加されました。」が表示されます。(※Book1.xlsmブックにシートを追加した事で、プロシージャが実行されてメッセージが表示されました。)
[サンプル①]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
(例②)追加したシートの名前を変更して表示する方法
ブックに新しいシートを追加した際に追加したシート名を変更して表示する方法について紹介します。
[プログラミング例②]:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Name = Format(Now, "yyyymmdd")
MsgBox "シート名:" & Sh.Name & "を追加しました。"
End Sub
内容は、「ブックに新しいシートを追加した際にシート名を日付に変更し”シート名:日付を追加しました。”をMsgBoxで表示して下さい。」との意味になります。
[実行例②]:
今回の例としては、Book1.xlsmブックが開かれており、Book1.xlsmブックには上記で説明したプログラミング例②が記述されています。
(実行前)
Book1.xlsmブックの<(+)>ボタンをクリックします。(※(+)はシート追加ボタンとなります。)
(実行後)
Book1.xlsmブックに新しいシート(20210605)が追加されると同時に「シート名:20210605を追加しました。」が表示されます。(※Book1.xlsmブックにシートを追加すると同時に追加したシート名が日付に変更されて表示されました。)
[サンプル②]:
上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。
ブックに新しいシートを追加した時に発生するイベントプロシージャの作成方法についての説明は以上です。
おわりに
今回はブックに新しいシートを追加した時に発生するイベントプロシージャの作成方法について説明しました。オブジェクトボックスでオブジェクトを選択すると、そのオブジェクト既定の「Workbook_Open」イントプロシージャが自動的に作成(上記(5)の内容)されます。不要な場合は削除して下さい。