Share via


Form.Open イベント (Access)

Open イベントは、フォームが開くときに、最初のレコードが表示される前に発生します。

構文

開く (キャンセル)

expressionForm オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
Cancel 必須 整数型 (Integer) フォームまたはレポートを開くかどうかを設定します。 引数 CancelTrue (1) に設定すると、フォームまたはレポートの開きが取り消されます。

注釈

フォームの Open イベントが発生したときにマクロやイベント プロシージャを実行すると、他のウィンドウを閉じたり、フォーカスをフォームの特定のコントロールに移動することができます。 フォームやレポートを開く前または印刷する前に、マクロやイベント プロシージャを実行して、必要な情報をユーザーに入力させることもできます。

たとえば、Open イベント マクロまたは Open イベント プロシージャを使って、フォームに表示するレコードを抽出するための条件や、レポートに含める日付の範囲を入力するためのカスタム ダイアログ ボックスを表示することができます。

Open イベントは、既に開いているフォームをアクティブ化しても発生しません。たとえば、Microsoft Access の別のウィンドウからフォームに切り替えたり、マクロで OpenForm アクションを使用して開いているフォームを先頭に表示したりするとします。 ただし、このような場合も Activate イベントは発生します。

クエリを基にするフォームを開いた場合は、フォームの基になるクエリが実行されてから Open イベント マクロや Open イベント プロシージャが実行されます。

複数のフォームを同時に読み込むアプリケーションの場合、フォーカスが他のフォームに移動したときに、カスタム ツールバーの表示と非表示を切り替えるには、Open イベントの代わりに Activate イベントおよび Deactivate イベントを使います。

Open イベントは Load イベントの前に発生します。これは、フォームが開かれてレコードが表示されるときにトリガーされます。

最初にフォームを開くと、次の順序でイベントが発生します。

OpenLoadResizeActivateCurrent

Close イベントは Unload イベントの後に発生します。これはフォームが閉じられた後、画面から削除される前にトリガーされます。

フォームを閉じると、次の順序でイベントが発生します。

UnloadDeactivateClose

たとえば、Close イベントが発生したときに、他のウィンドウを開いたり、フォームやレポートを使用したユーザーの名前を入力させるダイアログ ボックスを表示することができます。

マクロまたはイベント プロシージャに Open イベントと Load イベントのどちらを使用するかを決定しようとしている場合、大きな違いの 1 つは Open イベントを 取り消すことができるが、 Load イベントでは使用できないことです。 たとえば、フォームの Open イベントのイベント プロシージャでフォームのレコード ソースを動的に作成する場合、表示するレコードがない場合はフォームの開き方を取り消すことができます。 同様に、Unload イベントは取り消すことができますが、Close イベントは取り消すことができません。

次の例は、ユーザーが [いいえ ] ボタンを選択したときにフォームの開きを取り消す方法を示しています。 注文の詳細を入力するように求めるメッセージ ボックスが表示されます。 ユーザーが [いいえ] を選択した場合、[ 注文の詳細] フォームは開かなくなります。

次の使用例の実行結果を確認するには、フォームに対し、次のイベント プロシージャを追加します。

Private Sub Form_Open(Cancel As Integer) 
 Dim intReturn As Integer 
 intReturn = MsgBox("Enter order details now?", vbYesNo) 
 Select Case intReturn 
 Case vbYes 
 ' Open Order Details form. 
 DoCmd.OpenForm "Order Details" 
 Case vbNo 
 MsgBox "Remember to enter order details by 5 P.M." 
 Cancel = True ' Cancel Open event. 
 End Select 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。