データベース オブジェクトのイベントの順序

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

あるオブジェクトの 1 つのコントロールから別のコントロールへの移動といった 1 つのアクションにより、複数の異なるイベントが、特定の順序でトリガーされる場合があります。マクロまたはイベント プロシージャが実行される方法とタイミングに影響する可能性があるため、イベントが、いつ、どのような順序で発生するかを理解しておくことが重要です。たとえば、特定の順序で実行する必要のある 2 つのイベント プロシージャがある場合、イベント プロシージャが関連付けられているイベントも同じ順序で発生する必要があります。

この記事の内容

フォーム上のコントロールのイベントの順序

フォーム上のレコードのイベントの順序

フォームとサブフォームのイベントの順序

キーストロークとマウス クリックのイベントの順序

レポートとレポート セクションのイベントの順序

フォーム上のコントロールのイベントの順序

フォーカスをコントロールに移動して、コントロールのデータを変更したり更新したりすると、フォームのコントロールに対するイベントが発生します。

注: Microsoft Office Access で Visual Basic エディターに表示されるイベント名は、プロパティ シートおよびマクロ ビルダーに表示されるイベント名と少し違います。たとえば、フォームのプロパティ シートおよびマクロ ビルダーに [フォーカス取得後] という名前で表示されるイベントは、Visual Basic エディターでは GotFocus と表示されます。この記事の例では、Visual Basic for Applications (VBA) の形式のイベント名を使います。

コントロールへのフォーカスの移動

フォームのコントロールにフォーカスを移動すると (たとえば、アクティブなコントロールが 1 つ以上含まれるフォームを開いたり、フォーカスを同じフォームの別のコントロールに移動したりして)、Enter イベントと GotFocus イベントがこの順序で発生します。

Enter 矢印 GotFocus

フォームを開くと、フォームを開くアクションに関連付けられているイベント (OpenActivateCurrent など) の後で、次のように、Enter イベントと GotFocus イベントが発生します。

Open (フォーム) 矢印 Activate (フォーム) 矢印 Current (フォーム) 矢印 Enter (コントロール) 矢印 GotFocus (コントロール)

フォームのコントロールがフォーカスを失うと (たとえば、アクティブなコントロールが 1 つ以上含まれるフォームを閉じたり、同じフォームの別のコントロールに移動したりして)、Exit イベントと LostFocus イベントが次の順序で発生します。

Exit 矢印 LostFocus

フォームを閉じると、フォームを閉じるアクションに関連付けられているイベント (UnloadDeactivateClose など) の前に、次のように、Exit イベントと LostFocus イベントが発生します。

Exit (コントロール) 矢印 LostFocus (コントロール) 矢印 Unload (フォーム) 矢印 Deactivate (フォーム) 矢印 Close (フォーム)

コントロール内のデータの変更と更新

フォームのコントロールのデータを入力または変更した後、別のコントロールにフォーカスを移動すると、BeforeUpdate イベントと AfterUpdate イベントが発生します。

BeforeUpdate 矢印 AfterUpdate

BeforeUpdate および AfterUpdate イベントの後で、値が変化したコントロールに対する Exit イベントと LostFocus イベントが発生します。

BeforeUpdate 矢印 AfterUpdate 矢印 Exit 矢印 LostFocus

テキスト ボックスのテキストまたはコンボ ボックスのテキスト ボックス セクションのテキストを変更すると、Change イベントが発生します。このイベントはコントロールの内容が変化すると常に、別のコントロールまたはレコードにフォーカスが移動する前に発生します (したがって、BeforeUpdate および AfterUpdate イベントが発生する前になります)。テキスト ボックスまたはコンボ ボックスのテキスト ボックス セクションでキーが押されるたびに、次のイベント シーケンスが発生します。

KeyDown 矢印 KeyPress 矢印 Dirty 矢印 Change 矢印 KeyUp

コンボ ボックスに入力された値がコンボ ボックスの一覧にない場合、別のコントロールまたはレコードへのフォーカスの移動が試行された後に、NotInList イベントが発生します。NotInList イベントは、コンボ ボックスのキーボード イベントと Change イベントの後、他のコントロールまたはフォームに対するイベントの前に、発生します。コンボ ボックスの LimitToList プロパティが Yes に設定されている場合、NotInList イベントの直後にフォームの Error イベントが発生します。

KeyDown 矢印 KeyPress 矢印 Dirty 矢印 Change 矢印 KeyUp 矢印 NotInList 矢印 Error

ページの先頭へ

フォーム上のレコードのイベントの順序

フォーカスを別のレコードに移動した場合、レコードのデータを更新した場合、既存のレコードを削除した場合、または新しいレコードを作成した場合に、フォームのレコードに対するイベントが発生します。

レコードへのフォーカスの移動と、レコードのデータの更新

フォームの既存のレコードにフォーカスを移動し、レコードのデータを入力または変更した後、フォーカスを別のレコードに移動すると、フォームに対して次のイベント シーケンスが発生します。

Current (フォーム) 矢印 BeforeUpdate (フォーム) 矢印 AfterUpdate (フォーム) 矢印 Current (フォーム)

データが変化したレコードから別のレコードに移動すると、次のレコードに入る前に、フォーカスがあるコントロールに対して Exit および LostFocus イベントが発生します。これらのイベントは、次のように、フォームの BeforeUpdate および AfterUpdate イベントの後で発生します。

BeforeUpdate (フォーム) 矢印 AfterUpdate (フォーム) 矢印 Exit (コントロール) 矢印 LostFocus (コントロール) 矢印 RecordExit (フォーム) 矢印 Current (フォーム)

フォームのコントロールの間でフォーカスを移動すると、コントロールごとにイベントが発生します。たとえば、以下の操作を行うと、それに対応するイベント シーケンスが発生します。

  • フォームを開き、コントロール内のデータを変更します。

    Current (フォーム) 矢印 Enter (コントロール) 矢印 GotFocus (コントロール) 矢印 BeforeUpdate (コントロール) 矢印 AfterUpdate (コントロール)

  • フォーカスを別のコントロールに移動します。

    Exit (コントロール 1) 矢印 LostFocus (コントロール 1) 矢印 Enter (コントロール 2) 矢印 GotFocus (コントロール 2)

  • フォーカスを別のレコードに移動します。

    BeforeUpdate (フォーム) 矢印 AfterUpdate (フォーム) 矢印 Exit (コントロール 2) 矢印 LostFocus (コントロール 2) 矢印 RecordExit (フォーム) 矢印 Current (フォーム)

レコードの削除

レコードを削除すると、フォームに対して次のイベントが発生し、Microsoft Office Access には削除の確認を求めるダイアログ ボックスが表示されます。

Delete 矢印 BeforeDelConfirm 矢印 AfterDelConfirm

Delete イベントをキャンセルした場合、BeforeDelConfirm および AfterDelConfirm イベントは発生せず、ダイアログ ボックスは表示されません。

新しいレコードの作成

フォームの新しい (空の) レコードにフォーカスを移動し、コントロールにデータを入力して新しいレコードを作成すると、次のイベント シーケンスが発生します。

Current (フォーム) 矢印 Enter (コントロール) 矢印 GotFocus (コントロール) 矢印 BeforeInsert (フォーム) 矢印 AfterInsert (フォーム)

フォームのコントロールおよび新しいレコードに対する BeforeUpdate イベントと AfterUpdate イベントは、BeforeInsert イベントの前、かつ AfterInsert イベントの後に発生します。

ページの先頭へ

フォームとサブフォームのイベントの順序

フォームを開いたり閉じたりしたとき、フォーム間を移動したとき、フォームまたはサブフォームのデータを操作したときに、フォームに対するイベントが発生します。

フォームを開く、閉じる

フォームを開くと、フォームに対して次のイベント シーケンスが発生します。

Open 矢印 Load 矢印 Resize 矢印 Activate 矢印 Current

フォームにアクティブなコントロールがない場合、Activate イベントの後、かつ Current イベントの前に、フォームに対して GotFocus イベントが発生します。

フォームを閉じると、フォームに対して次のイベント シーケンスが発生します。

Unload 矢印 Deactivate 矢印 Close

フォームにアクティブなコントロールがない場合、Unload イベントの後、かつ Deactivate イベントの前に、フォームに対して LostFocus イベントが発生します。

フォーム間の移動

開いている 2 つのフォームの間で切り替えを行うと、第 1 のフォームに対しては Deactivate イベントが発生し、第 2 のフォームに対しては Activate イベントが発生します。

Deactivate (フォーム 1) 矢印 Activate (フォーム 2)

フォームに対する Deactivate イベントは、フォームから Access の別のオブジェクト タブに切り替えた場合にも発生します。ただし、ダイアログ ボックス、PopUp プロパティが Yes に設定されているフォーム、または別のプログラムのウィンドウに切り替えた場合は、Deactivate イベントは発生しません。

注: OpenForm アクションを実行してフォームにフォーカスを移動したとしても、そのフォームが既に開いていた場合は、Open イベントは発生しません。

フォームのデータの操作

フォームのレコード間を移動してデータを変更すると、フォームおよびコントロールのイベントが発生します。たとえば、最初にフォームを開くと、次のイベント シーケンスが発生します。

Open (フォーム) 矢印 Load (フォーム) 矢印 Resize (フォーム) 矢印 Activate (フォーム) 矢印 Current (フォーム) 矢印 Enter (コントロール) 矢印 GotFocus (コントロール)

同様に、フォームを閉じると、次のイベント シーケンスが発生します。

Exit (コントロール) 矢印 LostFocus (コントロール) 矢印 Unload (フォーム) 矢印 Deactivate (フォーム) 矢印 Close (フォーム)

コントロールのデータを変更した場合は、コントロールに対する Exit イベントの前に、コントロールとフォームの両方に対して BeforeUpdate および AfterUpdate イベントが発生します。

サブフォームの操作

サブフォームを含むフォームを開くと、メイン フォームの前に、サブフォームとそのレコードが読み込まれます。つまり、サブフォームとそのコントロールに対するイベント (OpenCurrentEnterGotFocus など) は、フォームに対するイベントの前に発生します。ただし、Activate イベントはサブフォームに対しては発生しません。したがって、メイン フォームを開くと、メイン フォームに対する Activate イベントだけがトリガーされます。

同様に、サブフォームを含むフォームを閉じると、フォームの後でサブフォームとそのレコードがアンロードされます。Deactivate イベントは、サブフォームに対しては発生しません。したがって、メイン フォームを閉じると、メイン フォームに対する Deactivate イベントだけがトリガーされます。コントロール、フォーム、サブフォームのイベントは、次の順序で発生します。

  1. サブフォームのコントロールのイベント (ExitLostFocus など)

  2. フォームのコントロールのイベント (サブフォームのコントロールを含む)

  3. フォームのイベント (DeactivateClose など)

  4. サブフォームのイベント

注:  サブフォームのイベントはメイン フォームが閉じられた後で発生するので、特定のイベント (サブフォームのイベントからの、メイン フォームを閉じる操作のキャンセルなど) は発生しません。この種の検証テストは、メイン フォームのイベントに移動することが必要になる場合があります。

ページの先頭へ

キーストロークとマウス クリックのイベントの順序

フォームまたはコントロールにフォーカスがある間に、キーが押されるか、キーストロークが送信されると、フォームおよびコントロールに対するキーボード イベントが発生します。マウス ポインターでフォーム、セクション、またはコントロールをポイントして、マウス ボタンをクリックすると、フォーム、フォーム セクション、およびフォーム上のコントロールに対するマウス イベントが発生します。フォーム、セクション、またはコントロール上にマウス ポインターを移動した場合も、マウス イベントが発生します。

キーボード イベント

フォームのコントロールにフォーカスがあるときにキーを押して離すと (または、SendKeys アクションまたはステートメントを使用してキーストロークを送信すると)、以下のイベント シーケンスが発生します。

KeyDown 矢印 KeyPress 矢印 KeyUp

ANSI 文字セットのキーを押して離すか、キーストロークを送信すると、KeyDownKeyPressKeyUp イベントがすべて発生します。ANSI キーを押し続けると、キーを離すまで、KeyDown イベントと KeyPress イベントが交互に繰り返し発生します (KeyDownKeyPressKeyDownKeyPress のように)。離すと、KeyUp イベントが発生します。

ANSI 以外のキーを押して離すと、KeyDown および KeyUp イベントが発生します。ANSI 以外のキーを押す続けると、キーを離すまで、KeyDown イベントが繰り返し発生します。離すと、KeyUp イベントが発生します。

キーを押すことによってコントロールに対して別のイベントがトリガーされる場合、そのイベントは KeyPress イベントの後、KeyUp イベントの前に発生します。たとえば、キーストロークによってテキスト ボックス内のテキストが変化すると、Change イベントがトリガーされ、次のイベント シーケンスが発生します。

KeyDown 矢印 KeyPress 矢印 Change 矢印 KeyUp

キーストロークによってフォーカスがあるコントロールから別のコントロールに移動する場合、第 1 のコントロールに対しては KeyDown イベントが発生し、第 2 のコントロールに対しては KeyPress および KeyUp イベントが発生します。たとえば、コントロールのデータを変更してから TAB キーを押して次のコントロールに移動した場合は、次のイベント シーケンスが発生します。

  • 第 1 のコントロール:

    KeyDown 矢印 BeforeUpdate 矢印 AfterUpdate 矢印 Exit 矢印 LostFocus

  • 第 2 のコントロール:

    Enter 矢印 GotFocus 矢印 KeyPress 矢印 KeyUp

マウス イベント

マウス ポインターがフォーム上のコントロールをポイントしている状態で、マウス ボタンをクリックして離すと、コントロールに対して次のイベント シーケンスが発生します。

MouseDown 矢印 MouseUp 矢印 Click

あるコントロールにフォーカスがある場合に、別のコントロールをクリックしてこの第 2 のコントロールにフォーカスを移動すると、次のイベント シーケンスが発生します。

  • 第 1 のコントロール:

    Exit 矢印 LostFocus

  • 第 2 のコントロール:

    Enter 矢印 GotFocus 矢印 MouseDown 矢印 MouseUp 矢印 Click

別のレコードに移動してからコントロールをクリックすると、コントロールに対する Enter イベントの前に、フォームに対する Current イベントも発生します。

コントロールをダブルクリックすると、Click イベントと DblClick イベントの両方が発生します。たとえば、コマンド ボタン以外のコントロールをダブルクリックすると、コントロールに対して次のイベント シーケンスが発生します。

MouseD own 矢印 MouseUp 矢印 Click 矢印 DblClick 矢印 MouseUp

コマンド ボタンをダブルクリックすると、前記のイベント シーケンスが発生した後で、2 番目の Click イベントが発生します。

フォーム、セクション、またはコントロールの上にマウス ポインターを移動すると、フォーム、セクション、またはコントロールに対する MouseMove イベントが発生します。このイベントは、他のマウス イベントには依存していません。

ページの先頭へ

レポートとレポート セクションのイベントの順序

レポートを開いてレポートを印刷またはプレビューすると、またはレポートを閉じると、レポートおよびレポート セクションに対するイベントが発生します。

レポートのイベント

レポートを開いてレポートを印刷またはプレビューした後、レポートを閉じるか、Access の別のオブジェクト タブに移動すると、レポートに対して以下のイベント シーケンスが発生します。

Open 矢印 Activate 矢印 Close 矢印 Deactivate

開いている 2 つのレポートの間で切り替えを行うと、第 1 のレポートに対しては Deactivate イベントが発生し、第 2 のレポートに対しては Activate イベントが発生します。

Deactivate (レポート 1) 矢印 Activate (レポート 2)

レポートに対する Deactivate イベントは、レポートから Access の別のオブジェクト タブに切り替えたときも発生します。ただし、ダイアログ ボックス、PopUp プロパティが Yes に設定されているフォーム、または別のプログラムのウィンドウに切り替えた場合は、Deactivate イベントは発生しません。

クエリに基づくレポートを開くと、Access は、基になっているクエリを実行する前に、レポートに対する Open イベントをトリガーします。これを利用すると、Open イベントに応答するマクロまたはイベント プロシージャを使用して、レポートの条件を設定できます。たとえば、マクロまたはイベント プロシージャで、レポートの条件を入力するカスタム ダイアログ ボックスを開くことができます。

レポート セクションのイベント

レポートを印刷またはプレビューすると、レポートに対する Open および Activate イベントの後、レポートの Close または Deactivate イベントの前に、レポート セクションに対する Format および Print イベントが発生します。

Open (レポート) 矢印 Activate (レポート) 矢印 Format (レポート セクション) 矢印 Print (レポート セクション) 矢印 Close (レポート) 矢印 Deactivate (レポート)

さらに、書式設定の間またはその後、ただし Print イベントの前に、以下のイベントが発生する場合があります。

  • レポートの書式設定の間に Access が前のセクションに戻ると、Retreat イベントが発生します。

  • レポートによって表示されるレコードがない場合は、NoData イベントが発生します。

  • 書式設定の後、印刷の前に、Page イベントが発生します。このイベントを使って、印刷されるレポートの外観をカスタマイズできます。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×