GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−ワークシートを使いこなそう
  イベントプロシージャを活用しよう!
 
■ イベントプロシージャを活用しよう!

Excelではユーザーフォーム以外でも、ブックやワークシートなどでイベントプロシージャを利用することができます。イベントプロシージャとは、ブックやワークシートなど、Excelのオブジェクトに対して特定の動作を行ったとき、OSがそれを検知して実行させることができるプロシージャのことを指します。

イベントプロシージャは標準モジュールではなく、ブックやワークシートなど、イベントの対象となるオブジェクトモジュール(ブックモジュール、シートモジュール)に記述する必要があります。オブジェクトモジュールは、VBEのプロジェクトエクスプローラから、対象となるオブジェクトを選択することで、そのコードウィンドウを表示させることができます。



イベントプロシージャの名前は、標準モジュールに記述する標準プロシージャとは異なり、自由に命名することはできません。イベントプロシージャ名の構文は次の通りです。

[構文]
Private Sub オブジェクト名_イベント名(引数)


イベントプロシージャは、必ずPrivateプロシージャになります。またプロシージャ名や引数を、ユーザーが勝手に変更してはいけません。これはユーザーフォームに記述するイベントプロシージャも同様です。

※ コードウィンドウ上部にあるオブジェクトボックス、プロシージャボックスを利用することでイベントプロシージャを正確かつ簡単に記述することが可能です。オブジェクトボックス、プロシージャボックスについては、
VBE(Visual Basic Editor)を使いこなそう!
にて解説しています。

■オブジェクトに対するイベントの種類

イベントの種類は、対象となるオブジェクトによって異なります。主なイベントの種類について解説していきます。

・ブックの主なイベント
イベントの種類 発生するタイミング
Activate ブックがアクティブになったとき
AddinInstall ブックがアドインとして組み込まれたとき
AddinUninstall ブックがアドインから削除されたとき
BeforeClose ブックを閉じるとき
BeforePrint ブックを印刷するとき
BeforeSave ブックを保存するとき
Deactivate ブックがアクティブでなくなったとき
NewSheet ブックに新しいシートを作成したとき
Open ブックを開いたとき
SheetActivate ブック内のシートがアクティブになったとき
SheetBeforeDoubleClick ブック内のシートがダブルクリックされたとき
SheetBeforeRightClick ブック内のシートが右クリックされたとき
SheetCalculate ブック内のシートが再計算されたとき
SheetChange ブック内のシートが変更されたとき
SheetDeactivate ブック内のシートがアクティブでなくなったとき
SheetFollowHyperlink ブック内のハイパーリンクをクリックしたとき
SheetSelectionChange ブック内のシートの選択範囲を変更したとき
WindowActivate ブックウィンドウがアクティブになったとき
WindowDeactivate ブックウィンドウがアクティブでなくなったとき
WindowResize ブックウィンドウの大きさを変更したとき

・ワークシートの主なイベント
イベントの種類 発生するタイミング
Activate ワークシートがアクティブになったとき
BeforeDoubleClick ワークシートをダブルクリックしたとき
BeforeRightClick ワークシートを右クリックしたとき
Calculate ワークシートが再計算されたとき
Change ワークシートのセルが変更されたとき
Deactivate ワークシートがアクティブでなくなったとき
FollowHyperlink ワークシートのハイパーリンクをクリックしたとき
SelectionChange ワークシートの選択範囲を変更したとき

※ ブックとワークシートで共通のイベントは、ブックの場合はブック内の全シートを対象に、ワークシートの場合は個々のワークシートを対象としています。

■イベントプロシージャの引数

イベントプロシージャの種類によっては、引数を持つものがあります。これらの引数はイベントプロシージャ内で利用することができます。主なイベントプロシージャの引数について解説していきます。

・イベントプロシージャの引数
引数 内容
Sh SheetActivateイベントなどで対象となるシートオブジェクトが格納されます
Source SheetChangeイベントなどで対象となるセル範囲が格納されます
Wb WindowActivateイベントなどで対象となるブックオブジェクトが格納されます
Wn WindowActivateイベントなどで対象となるウィンドウオブジェクトが格納されます
Target SelectionChangeイベントなどで対象となるセル範囲が格納されます
Cancel イベントで操作をCancelするときはTrueを指定します。既定値はFalseです

■イベントプロシージャの応用

イベントプロシージャを利用することで、ワークシートなどをより効率的に活用できるようになります。

(例)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Debug.Print Target.Row & ":" & Target.Column
End Sub

この例では、ワークシートのセルを選択するたびにイミディエイトウィンドウに選択されたセルの行番号と列番号が出力されます。例えば「A1」「B5」「D2」とセルを選択した場合、
1:1
5:2
2:4
とイミディエイトウィンドウに出力されます。

(例)
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 Then
    Cells(Target.Row, 5) = Time
  End If
End Sub

この例では、ワークシートのA列のセルの値を変更したとき、同じ行のE列に変更した時間が記録されます。

(例)
'### Sheet1のシートモジュールに記述
Private Sub Worksheet_Calculate()
  Application.EnableEvents = False
    Me.Name = "Sheet1"
  Application.EnableEvents = True
End Sub

'### 標準モジュールに記述
Function Worksheet_NameChange()
  Application.Volatile
End Function

次のユーザー定義関数をSheet1のA1セルに記述
=Worksheet_NameChange()

この例では、「Sheet1」ワークシートの名前を変更しても、自動的に"Sheet1"に戻されます。

※ [ツール]>[オプション]>[計算方法]を[自動]に設定します。
※ ユーザー定義関数を記述するセルは、A1セルでなくてもかまいません。

■自動実行マクロ

「Workbook_Open」と「Workbook_BeforeClose」イベントプロシージャには、ブックを開くときと閉じるときに実行したいプロシージャを記述します。これと似た働きをするマクロに「Auto_Open」と「Auto_Close」マクロがあります。どちらを使用してもブックを開くときと閉じるときに、プロシージャを自動実行することができますが、以下の違いがあります。

マクロの種類 手動でブックを開く VBAからブックを開く
Workbook_Open 実行される 実行される
Auto_Open 実行される 実行されない
マクロの種類 手動でブックを開く VBAからブックを開く
Workbook_BeforeClose 実行される 実行される
Auto_Close 実行される 実行されない

VBAのコードからブックを開いたり閉じたりするときに、自動実行させたくないプロシージャは「Auto_Open」と「Auto_Close」マクロを使用して記述します。この場合、手動でブックを開いたり閉じたりしたときに自動実行されます。

■イベントを発生させないようにする

次のコードを実行することで、イベントの発生を抑制することができます。

[構文]
Application.EnableEvents = True または False

Trueを指定した場合、イベントが発生します。Falseを指定するとイベントの発生が抑制されます。

※ コードの中で、一時的にイベントの発生を停止した場合、あとのコードでTrueを指定して元に戻すのを忘れないようにしてください。イベントの発生停止を解除しない限り、そのあとのイベントがすべて停止されるので注意が必要です。

※ 「Workbook_Open」イベントを無効にするには、[Shift]キーを押しながらブックを開きます。




以上、ブックやワークシートに関するイベントプロシージャを解説してきました。これらのテクニックを効率的に活用することで、使用しているブックやワークシートがさらに便利に活用できるようになります。ぜひ、マスターしてほしいテクニックです。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,