Chapter3-4 フォーム/レポートのイベント

下表は、イベントの一例として、フォーム/レポートそのものにおいて、比較的使用頻度の高いイベント名とその発生タイミングをまとめたものです。

なお、その他のイベントやより詳しい内容については、プロパティシートの各イベント欄にカーソルをおいた状態でF1キーを押せば、それに関するヘルプを表示させることができます。

■フォーム
イベント名 発生タイミング
レコード移動時 テーブル等を連結したフォームでレコード移動が行なわれたとき(フォームが開かれるときにも1レコード目への移動が行なわれるため、このイベントが発生します)
挿入前処理 新規レコードに最初の文字が入力されたとき(挿入をキャンセルできます)
挿入後処理 新規レコードが追加された直後
更新前処理 レコードが更新される直前(更新をキャンセルできます)
更新後処理 レコードが更新された直後
ダーティー時 フォームのデータ内容が変更されたとき(変更をキャンセルできます)
レコード削除時 レコードが実際に削除される前(削除をキャンセルできます)
削除前確認 レコードの削除しようとして、削除確認ダイアログが表示される前(オリジナルの削除確認メッセージを表示させることができます)
削除後確認 レコードが実際に削除された直後、また削除がキャンセルされたとき(削除確認ダイアログで実際に削除されたかキャンセルされたかを判別することができます)
開く時 フォームが開かれようとしているとき(開くことをキャンセルできます)
読み込み時 フォームが読み込まれるとき(すでに開いているので、開くことをキャンセルはできません)
サイズ変更時 フォームのウィンドウサイズが変更されたとき
読み込み解除時 フォームが閉じられようとしたとき(閉じることをキャンセルできます)
閉じる時 フォームが閉じるとき(もう閉じることはキャンセルできません)
キークリック時 キーを押したとき(ファンクションキーやテンキー・矢印キーなども含めてどんなキーが押されたか、またShiftキーやCtrlキーとの併用も検出できます)
※コントロール上でのキークリックもフォームのイベントで管理するには、キーボードイベント取得プロパティを"はい"にしておく必要があります。
キー入力時 キーが押されたとき(特殊キーは検出できません)
※キーボードイベント取得プロパティは同上
タイマ時 タイマ間隔プロパティで設定された時間が経過したとき(タイマ間隔プロパティをゼロに設定しない限り何度でも発生します)


■レポート
イベント名 発生タイミング
開く時 レポートが開かれようとしているとき(開くことをキャンセルできます)
閉じる時 レポートが閉じるとき(主にプレビューウィンドウのことです)
空データ時 印刷するデータが1件もないとき(開くことをキャンセルできます)
(セクション)フォーマット時 そのセクションがフォーマットされているとき(実際に印刷したときの総ページ数や改ページ位置などの制御がここで行なわれます)
(セクション)印刷時 フォーマットされたあとでかつそのセクションが印刷される前


ここで、フォームでのイベントプロシージャの例として、下記イベントを利用したプログラムをいくつか紹介します。
  • AfterDelConfirm/削除後確認
  • BeforeDelConfirm/削除前確認
  • BeforeUpdate/更新後処理
  • Close/閉じる時
  • KeyDown/キークリック時
  • Open/開く時
  • Load/読み込み時
  • Timer/タイマ時


Private Sub Form_AfterDelConfirm(Status As Integer)
'削除後確認

  If Status = acDeleteOK Then
    MsgBox "レコードが削除されました。", vbOKOnly + vbInformation
  Else
    MsgBox "削除はキャンセルされました。", vbOKOnly + vbInformation
  End If

End Sub


Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
'削除前確認

  Beep
  If MsgBox("本当に削除してよろしいですか?", _
            vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
  End If

End Sub


Private Sub Form_BeforeUpdate(Cancel As Integer)
'更新後処理

  Beep
  If MsgBox("データが更新されようとしています!" & _
            "本当に更新してよろしいですか?", _
            vbYesNo + vbQuestion) = vbNo Then
    Cancel = True
  End If

End Sub


Private Sub Form_Close()
'閉じる時

  DoCmd.SelectObject acForm, "メインメニュー"

End Sub


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
'キークリック時

  Select Case KeyCode
    Case vbKeyF2
      MsgBox "F2キー"
    Case vbKeyF3
      MsgBox "F3キー"
    Case vbKeyF4
      MsgBox "F4キー"
    Case vbKeyF5
      MsgBox "F5キー"
    Case vbKeyF6
      If (Shift And acShiftMask) > 0 Then
        MsgBox "Shift + F6キー"
      ElseIf (Shift And acAltMask) > 0 Then
        MsgBox "Alt + F6キー"
      End If
  End Select

End Sub


Private Sub Form_Load()
'読み込み時

  Me.TimerInterval = 10000

End Sub


Private Sub Form_Open(Cancel As Integer)
'開く時

  If Format(Date, "w") = 1 Then
    MsgBox "日曜日は使えません!", vbOKOnly + vbExclamation
    Cancel = True
  End If

End Sub


Private Sub Form_Timer()
'タイマ時

  MsgBox "10秒経過しました!", vbOKOnly + vbInformation

End Sub

| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved