【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ワークブックが保存された後に発生します。
AfterXmlExportMicrosoft Office Excel がワークブックのデータを XML データ ファイルに保存またはエクスポートした後に発生します。
AfterXmlImport既存の XML データ接続が更新された後、または新しい XML データがワークブックにインポートされた後に発生します。
BeforeCloseワークブックが閉じる前に発生します。ワークブックが変更されていると、ユーザーに変更を保存するよう求める前にこのイベントが発生します。
BeforePrintワークブックやワークブック内の要素が印刷される前に発生します。
BeforeSaveワークブックが保存されると発生します。
BeforeXmlExportMicrosoft Office Excel がワークブックのデータを XML データ ファイルに保存またはエクスポートする前に発生します。
BeforeXmlImport既存の XML データ接続が更新される前、または新しい XML データがワークブックにインポートされる前に発生します。
Deactivateワークブックが非アクティブになると発生します。
ModelChangeExcel データ モデルが変更された後に発生します。
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イベントをご紹介しました。

 

 

速報
NordVPNが特価!2年プランが68%オフ! さらに無料プランが当たるチャンス!! 期間限定で2年プランを契約すると1ヶ月・1年・2年・3年プランのどれかが自動的に付属してきます!!
中国VPN情報
中国の利用に特化したスイカVPNが現在限定で2周間お試しサービス中。中国への旅行や留学予定の方は無料で使用感を確かめられます。

コメントを残す

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