VBAエキスパート(Excelスタンダード) 試験範囲その2-イベント

公開日:2018年8月16日

このページでは、VBAエキスパート(Excelスタンダード)の 試験範囲のうち、「イベント」について概要を説明します。

VBAエキスパート(Excelスタンダード) 試験範囲その2-イベント
目次

1.イベントとは

イベントとは、Excel上で何らかの操作を行った場合にプログラムが動作するような仕組みをいいます。

例えば、Excelファイル(ブック)を開いた場合や、ワークシート上のセルに値を入力した場合に、VBAプログラムが動作するようなコーディングをいいます。。

2.イベントの使い方

例えば、ワークシート上の値を変更した場合にプログラムが起動するためのイベントを使う場合について説明します。

イベントを使用したいワークシートのVBE上に「Private Sub Worksheet_Change(ByVal Target As Range)」を冒頭に記述します。

プログラムの最後には、「End Sub」を記述します。

この2つのコードの間に動作させたい処理プログラムを記述すれば、ワークシート上の値が変更された場合に、このプログラムが自動的に動作します。

イベントを利用する際にはユーザビリティを考慮しなければなりません。なぜならばイベントプロシージャは決まったイベントが動作されれば必ず実行されるプログラムだからです。

3.ブックのイベントの種類

ブックのイベントには、ブックを閉じようとした場合に発生する「Workbook_BeforeClose」やブックを印刷する場合に発生する「Workbook_BeforePrint」、ブックを保存する際に発生する「Workbook_BeforeSave」などがあります。

これらのイベントには引数が存在しますが、記述は決まっています。

例えば、「Workbook_BeforeClose」では「Workbook_BeforeClose(Cancel As Boolean)」と記述します。引数Cancelは、ブックを閉じる動作をキャンセルするプログラムを記述することができます。キャンセルする場合には「Cancel = True」と記述します。よくある使い方としては、Ifステートメントを使用して、キャンセルする場合の条件文を記述し、その中に「Cancel = True」を記述します。

なお、ブックのイベントは、VBE上の「ThisWorkbook」にコードを記述します。

4.シートのイベントの種類

シートのイベントには、ワークシートがアクティブになった場合に発生する「Worksheet_Activate」、ワークシート上の値が変更された場合に発生する「Worksheet_Change」、右クリックをした場合に発生する「Worksheet_BeforeRightClick」などがあります。

ブックのイベントと同様にそれぞれのイベントに決まった引数を記述します。

コードの記述場所は動作させたいワークシートのVBE上ですが、すべてのワークシート上でイベントを動作させたい場合には、「Workbook_Sheet・・・」と記述します。例えば、「Worksheet_Change」をすべてのワークシートで動作させたい場合には、「Workbook_SheetChange(ByVal Sh As Object,ByVal Target As Range)」と記述します。