Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

この記事の内容

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

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

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

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

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

「GotFocus 矢印 」と入力します

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

Open (form) 矢印Activate (form) 矢印Current (form) 矢印Enter (control) 矢印GotFocus (control)

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

LostFocus 矢印 終了

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

Exit (control) 矢印LostFocus (control) 矢印Unload (form) 矢印Deactivate (form) 矢印Close (form)

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

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

BeforeUpdate 矢印 Afte rUpdate

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

BeforeUpdate 矢印 AfterUpdate 矢印 Exit 矢印 LostFocus

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

KeyDown 矢印 KeyPress 矢印 ダーティ 矢印 変更 矢印 KeyUp

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

KeyDown 矢印 KeyPress 矢印 ダーティ 矢印 変更 矢印 KeyUp 矢印 NotInList 0 エラー

ページの先頭へ

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

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

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

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

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

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

BeforeUpdate (フォーム) 矢印AfterUpdate (フォーム) 矢印Exit (control) 矢印LostFocus (control) 矢印Current (form)

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

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

    Current (form) 矢印Enter (control) 矢印GotFocus (control) 矢印BeforeUpdate (control) 矢印AfterUpdate (control)

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

    Exit (control1) 矢印LostFocus (control1) 矢印Enter (control2) 矢印GotFocus (control2)

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

    BeforeUpdate (form) 矢印AfterUpdate (form) 矢印Exit (control2) 矢印LostFocus (control2) 矢印Current (form)

レコードの削除

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

BeforeDelConfirm 矢印 AfterDelConfirm 矢印 削除する

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

新しいレコードの作成

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

現在の (フォーム) 矢印Enter (control) 矢印GotFocus (control) 矢印BeforeInsert (フォーム) 矢印AfterInsert (フォーム)

BeforeInsert (form) イベントは、コントロールの入力を開始するとすぐにトリガーされます。 AfterInsert (フォーム) イベントは、レコードを終了した後にトリガーされます。

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

ページの先頭へ

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

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

フォームを開く、閉じる

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

矢印 読み込み 矢印 サイズ変更 矢印 現在 矢印 アクティブ化 を開く

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

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

アンロード 矢印じる 矢印非アクティブ化

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

フォーム間の移動

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

非アクティブ化 (form1) 矢印アクティブ化 (form2)

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

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

フォームのデータの操作

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

Open (form) 矢印Load (form) 矢印Resize (form) 矢印Activate (form) 矢印Current (form) 矢印Enter (control)0 GotFocus (control)

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

Exit (control) 矢印LostFocus (control) 矢印Unload (form) 矢印Deactivate (form) 矢印Close (form)

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

サブフォームの操作

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

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

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

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

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

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

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

ページの先頭へ

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

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

キーボード イベント

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

KeyDown 矢印 KeyPress 矢印 KeyUp

キーを押して離すか、 ANSI 文字セットでキーストロークを送信すると、 KeyDownKeyPressKeyUp イベントがすべて発生します。 ANSI キーを長押しすると、キーを離すまで KeyDown イベントと KeyPress イベントが繰り返し (KeyDown、KeyPressKeyDownKeyPress など) 繰り返し発生します。KeyUp イベントが発生します。

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

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

KeyDown 矢印 KeyPress 矢印 KeyUp 矢印 変更

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

  • 第 1 のコントロール:

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

  • 第 2 のコントロール:

    「GotFocus 矢印 KeyPress 矢印 KeyUp」と入力 矢印

マウス イベント

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

MouseDown 矢印 MouseUp 矢印 クリック

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

  • 第 1 のコントロール:

    LostFocus 矢印 終了

  • 第 2 のコントロール:

    「GotFocus 矢印#x2 MouseDown 矢印MouseUp」と入力 矢印クリックします

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

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

MouseD own 矢印 MouseUp 矢印 クリック 矢印 DblClick 矢印 MouseUp

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

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

ページの先頭へ

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

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

レポートのイベント

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

矢印 アクティブ化 矢印 開く 矢印 非アクティブ化閉じる

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

非アクティブ化 (report1) 矢印アクティブ化 (report2)

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

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

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

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

開く (レポート) 矢印アクティブ化 (レポート) 矢印形式 (レポート セクション) 矢印印刷 (レポート セクション) 矢印閉じる (レポート) 矢印非アクティブ化 (レポート)

セキュリティ    レポート ビューを使用して、 レポートのユーザー フィルター処理を有効にすることができます。 ただし、印刷プレビューとは異なり、任意のセクションの [書式 ] イベントと [印刷 ] イベントはレポート ビューでは発生しません。 これは、これらのイベント内のコントロール (ラベル キャプション、表示状態、条件付き書式、コントロールのサイズ変更など) に表示される VBA 関数の結果とユーザー定義プロシージャにも適用されます。 そのため、このイベントのコードを使用して機密データの書式設定、非表示、または印刷を行わないでください。これは公開される可能性があります。 AllowReportView プロパティを No に設定して、データを事前にフィルター処理するか、レポート プレビューを無効にすることをお勧めします。

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

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

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

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

ページの先頭へ

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。