【ExcelVBA】イベントとは
イベントとは
今回から数回に渡ってイベントとは何か、どのように使用していくかについて紹介していきます。
これまでマクロを実行するときには、次のような方法しかありませんでした。
1.Excelのリボンメニューから「マクロ」→実行したいマクロを選択して「実行」
2.VisualBasicEditor(VBE)で実行したいマクロを選択して「実行」ボタン
確かにこの方法でも目的のマクロを実行することは可能です。
しかし、自分で作成したマクロを誰かに使ってもらおうとしたときに、この「マクロ」の使い方をしっかりとレクチャーする必要がでてきます。
たとえば、
・こことここを入力したら、この「マクロ」を実行して
・Excelを開いたときに必ずこの「マクロ」を実行して
・上書き保存する前には必ずこの「マクロ」を実行して
といった具合です。
数々のマクロを駆使してシステムを構築しているときには、上のようなケースでそれぞれ実行するマクロが異なりますし、1つ間違ったマクロを実行するとExcelが壊れてしまうということにもなりかねません。
イベントとは、「マクロ」を実行するときの条件となっている、「~をしたら」や「~をする前に」といったもののことを指します。
たとえば、Excelでブックを開くと、ブックを表すWorkbookオブジェクトのOpenイベントが発生します。
そしてそのイベントをトリガーにして特定のマクロを実行することができます。
このように、イベントトリガーを使用したマクロを作成することで、よりユーザビリティがよく壊れにくいマクロシステムを作ることができます。
では、どのようなイベントがあるかみてみましょう。
ブック操作に関するイベント
まずは、ブック操作に関するイベントです。
AddinUninstall
アドインをアンインストールしたときに発生する
BeforeClose
ブックを閉じる前に発生する。ブックが変更された場合、ユーザーに変更内容の保存を要求する前に、このイベントが発生する。
BeforePrint
ブックまたはその中に含まれる内容を印刷する前に発生する。
BeforeSave
ブックを保存する前に発生する。
Deactivate
グラフまたはブックが非アクティブになったときに発生する。
NewSheet
新しいシートを作成したときに発生する。
Open
ブックを開いたときに発生する。
SheetActivate
シートがアクティブになったときに発生する。
SheetBeforeDoubleClick
ダブルクリックの操作の前に発生する。
SheetBeforeRightClick
右クリックしたときに発生する。
SheetCalculate
ワークシートを再計算したり、グラフでデータをプロットして変更した後に発生する。
SheetChange
ユーザーまたは外部リンクにより、ワークシートのセルが変更されるときに発生する。
SheetDeactivate
シートが非アクティブになったときに発生する。
SheetFollowHyperlink
ハイパーリンクをクリックすると発生する。
SheetSelectionChange
いずれかのワークシートで選択範囲を変更したときに発生する。選択範囲がグラフシート上にある場合は発生しない。
WindowActivate
ブックのウィンドウがアクティブになったときに発生する。
WindowDeactivate
ブックのウィンドウが非アクティブになったときに発生する。
WindowResize
ブックのウィンドウサイズを変更したときに発生する。
シート操作に関するイベント
次に、シート操作に関するイベントです。
Activate
ブック、ワークシート、グラフシート、または埋め込みグラフがアクティブになったときに発生する。
BeforeDoubleClick
埋め込みグラフまたはワークシートがダブルクリックされたときに発生する。
BeforeRightClick
埋め込みグラフまたはワークシートを右クリックしたときに発生する。
Calculate
Chartオブジェクトでは、グラフが新しいデータまたは変更されたデータをプロットした後に発生する。Worksheetオブジェクトでは、ワークシートを再計算した後に発生する。
Change
ワークシートのセルが変更されたときに発生する。セルが再計算時で変更されないと、このイベントは発生しない。
Deactivate
グラフまたはブックが非アクティブになったときに発生する。
FollowHyperlink
ハイパーリンクをクリックすると発生する。
SelectionChange
選択範囲を変更したときに発生する。
まとめ
イベントとは、Excel上で特定の操作を行ったときに、その操作が行われたことをExccelからVBAに通知する仕組みのこと。
そのイベントに対応する(そのイベントの発生をトリガーとした)マクロを作成することで、特定の操作によってマクロを自動実行することができる。
確認問題
以下の「○○○」に当てはまる文言を解答してください。
ExcelVBAのトリガーは大きく次の2種類に分類できる
・○○○操作に関するイベント
・○○○操作に関するイベント
このイベントをトリガーとしてマクロを作成することで、より○○○がよく○○○マクロシステムを作ることができます。
次回も引き続き、「イベントについて」です。