【Excel】エクセル VBA編  イベント一覧と無効 とセルの変更の設定・使い方

 

 

 

Excel VBA マクロでイベントというものがあります。

イベントとは、何か変更があったときなど操作が行われたときに実行されるコード

ワークシートをアクティブにした時に発生するActivateイベント

セルをマウスでダブルクリックした時に発生するBeforeDoubleClickイベントなどが当たります。

少し特殊なオブジェクトの操作ができる「イベント」について解説 無効にする方法も紹介

 

 

 

 

 

イベントとは

 

クリックしたり、キーボードを操作したり、ファイルを開いたりといった、

コンピューターに対してユーザーが行う行為にイベントが発生したときに対応した処理を実行できます。

 

例えば、セルに入力して値が変更されたときに Worksheet の Change イベントが発生します。

毎回そのイベントが発生するので、ユーザーの操作に反応できるようになります。また、セルの内容を編集したときに自動で集計やエラーチェックをするなど、様々なことに応用できます。

 

 

イベントの一覧

 

ワークシート

名前 発生条件
Activate シートがアクティブになったとき
BeforeDelete シートが削除される前
BeforeDoubleClick セルをダブルクリックしたときで、既定のダブルクリックの動作が行われる前
BeforeRightClick セルを右クリックしたときで、既定の右クリックの動作が行われる前
Calculate シートで再計算が行われた後 (参照セルが変更されたなど)
Change セルに変更があったとき (文字を入力したなど)
Deactivate シートがフォーカスを失ったとき
FollowHyperlink シートのハイパーリンクをクリックしたとき
LensGalleryRenderComplete 引き出し線ギャラリーのアイコン (動的および静的) の表示が完了したとき
PivotTableAfterValueChange ピボットテーブル内のセルまたはセル範囲が編集または再計算された後
PivotTableBeforeAllocateChanges ピボットテーブルに変更が適用される前
PivotTableBeforeCommitChanges ピボットテーブルの OLAP データ ソースに対する変更が適用される前
PivotTableBeforeDiscardChanges ピボットテーブルに対する変更が破棄される前
PivotTableChangeSync ピボットテーブルが変更された後
PivotTableUpdate ピボットテーブルが更新されたとき
SelectionChange セルの選択範囲が変更されたとき
TableUpdate データ モデルに接続されているクエリ テーブルがワークシートで更新された後

ワークブック

名前 発生条件
Activate ワークブックがアクティブになると発生します。
AddinInstall ワークブックがアドインとしてインストールされたときに発生します。
AddinUninstall ワークブックがアドインとしてアンインストールされたときに発生します。
AfterSave ワークブックが保存された後に発生します。
AfterXmlExport Microsoft Office Excel がワークブックのデータを XML データ ファイルに保存またはエクスポートした後に発生します。
AfterXmlImport 既存の XML データ接続が更新された後、または新しい XML データがワークブックにインポートされた後に発生します。
BeforeClose ワークブックが閉じる前に発生します。ワークブックが変更されていると、ユーザーに変更を保存するよう求める前にこのイベントが発生します。
BeforePrint ワークブックやワークブック内の要素が印刷される前に発生します。
BeforeSave ワークブックが保存されると発生します。
BeforeXmlExport Microsoft Office Excel がワークブックのデータを XML データ ファイルに保存またはエクスポートする前に発生します。
BeforeXmlImport 既存の XML データ接続が更新される前、または新しい XML データがワークブックにインポートされる前に発生します。
Deactivate ワークブックが非アクティブになると発生します。
ModelChange Excel データ モデルが変更された後に発生します。
NewChart 新しいグラフをブックに作成したときに発生します。
NewSheet ワークブックに新しいシートが作成されると発生します。
Open ワークブックが開かれると発生します。
PivotTableCloseConnection ピボットテーブル レポートが、そのデータ ソースへの接続を終了した後に発生します。
PivotTableOpenConnection ピボットテーブル レポートが、そのデータ ソースへの接続を確立した後に発生します。
RowsetComplete ユーザーが OLAP ピボットテーブルで行セット アクションを起動するか、レコードセットを詳細表示するとイベントが発生します。
SheetActivate シートがアクティブになると発生します。
SheetBeforeDelete シートが削除される前に発生します。
SheetBeforeDoubleClick ワークシートがダブルクリックされたとき、既定のダブルクリック処理が行われる前に発生します。
SheetBeforeRightClick ワークシートが右クリックされたとき、既定の右クリック処理が行われる前に発生します。
SheetCalculate ワークシートが再計算された後、または変更されたデータがグラフにプロットされた後で発生します。
SheetChange ユーザー、または外部リンクによって、ワークシートのセルが変更されると発生します。
SheetDeactivate シートが非アクティブになると発生します。
SheetFollowHyperlink ワークブック内のハイパーリンクがクリックされると発生します。
SheetLensGalleryRenderComplete ワークシートの引き出し線ギャラリーのアイコン (動的および静的) の表示が完了した後に発生します。
SheetPivotTableAfterValueChange ピボットテーブル内のセルまたはセル範囲が編集または再計算された後に発生します。
SheetPivotTableBeforeAllocateChanges ピボットテーブルに変更が適用される前に発生します。
SheetPivotTableBeforeCommitChanges ピボットテーブルの OLAP データ ソースに対する変更が適用される前に発生します。
SheetPivotTableBeforeDiscardChanges ピボットテーブルに対する変更が破棄される前に発生します。
SheetPivotTableChangeSync ピボットテーブルが変更された後に発生します。
SheetPivotTableUpdate ピボットテーブル レポートのシートが更新された後で発生します。
SheetSelectionChange ワークシートで選択範囲が変更されると発生します。選択範囲がグラフ シート状にある場合は発生しません。
SheetTableUpdate シート テーブルが更新された後に発生します。
Sync ドキュメント ワークスペースに含まれるワークシートのローカル コピーが、サーバー上のコピーと同期されるときに発生します。
WindowActivate ワークブック ウィンドウがアクティブになると発生します。
WindowDeactivate ワークブック ウィンドウが非アクティブになると発生します。
WindowResize ワークブック ウィンドウのサイズが変更されると発生します。

 

 

 

 

イベントを無効にする

イベントを無効にするには Application.EnableEvents = False のように指定します。すべてのイベントが発生しなくなります。

Application.EnableEvents = False

' この処理の間はイベントが発生しない

Application.EnableEvents = True

 

処理の最後に Application.EnableEvents = True にしてイベントを有効にするのを忘れないようにします。

一部のイベントだけ発生しないようにはできません。そのときはフラグを作成するなどして対応します。

 

 

ワークブックオープンイベント

 

ブックを開くと、ブックを開くイベントに追加されたコードがExcel VBAによって実行されます。

1. Visual Basic Editorを開きます。

2.プロジェクトエクスプローラのThis Workbookをダブルクリックします。

3.左側のドロップダウンリストから[ワークブック]を選択します。右側のドロップダウンリストから[開く]を選択します。

Excel VBAでブックを開くイベント

4. Workbook Openイベントに次のコード行を追加します。

メッセージボックス “Good Morning”

5. Excelファイルを保存して閉じ、再度開きます。

結果:

ワークブックオープンイベントの結果

 

 

 

ワークシート変更イベント

ワークシート変更イベントに追加されたコードは、ワークシートのセルを変更したときにExcel VBAによって実行されます。

1. Visual Basic Editorを開きます。

2.プロジェクトエクスプローラでシート(Sheet1など)をダブルクリックします。

3.左側のドロップダウンリストから[ワークシート]を選択します。右側のドロップダウンリストから[変更]を選択します。

Excel VBAのワークシート変更イベント

 

ワークシート変更イベントに次のコード行を追加します。

4.ワークシート変更イベントは、Sheet1のすべての変更を監視します。セルB2で何かが変わった場合にのみ、Excel VBAに何かをさせたいと思います。これを実現するには、次のコード行を追加します。

場合 Target.Address = “$ B $ 2″はその後、

終了 した場合

5.ユーザーが80を超える値を入力した場合にのみExcel VBAにMsgBoxを表示させます。これを実現するには、IfとEnd Ifの間に次のコード行を追加します。

場合 Target.Value> 80 次に MsgBoxには、「目標完了します」

6. Sheet1にセルB2に80を超える数を入力します。

80より大きい数値を入力してください

結果:

ワークブック変更イベントの結果

まとめ

今回は、WorksheetオブジェクトのChangeイベントをご紹介しました。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です