Form.Delete イベント (Access)

ユーザーが Delete キーを押してレコードを削除するなど、何らかのアクションを実行したが、レコードが実際に削除される前に発生します。

構文

削除 (キャンセル)

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

パラメーター

名前 必須 / オプション データ型 説明
Cancel 必須 Integer Delete イベントを発生させるかどうかを設定します。 引数 CancelTrue (1) に設定すると、Delete イベントが取り消されます。

注釈

これらのイベントが発生したときにマクロまたはイベント プロシージャを実行するには、 OnDeleteBeforeDelConfirm、または AfterDelConfirm プロパティをマクロの名前または [イベント プロシージャ] に設定します。

削除された直後のレコードは、一時的なバッファーに保存されます。 BeforeDelConfirm イベントは、Delete イベントの後、または複数のレコードを削除したときには、すべてのレコードを削除した後 (レコードを削除するたびに Delete イベントが発生します) で、削除を確認するダイアログ ボックスが表示される前に発生します。 BeforeDelConfirm イベントをキャンセルすると、バッファーから 1 つまたは複数のレコードが復元され、削除を確認するダイアログ ボックスは表示されません。

AfterDelConfirm イベントは、レコードが実際に削除されるか、または削除がキャンセルされた直後に発生します。 BeforeDelConfirm イベントがキャンセルされない場合は、AfterDelConfirm イベントは、削除を確認するダイアログ ボックスが表示された後で発生します。 また、 AfterDelConfirm イベントは、 BeforeDelConfirm イベントが取り消された場合にも発生します。 AfterDelConfirm イベント プロシージャでは、削除に関するステータス情報が返されます。 たとえば、AfterDelConfirm イベント マクロやイベント プロシージャを使って、レコードの削除に影響を受ける集計を再計算することができます。

Delete イベントを取り消すと、BeforeDelConfirm イベントと AfterDelConfirm イベントは発生しません。また、削除を確認するダイアログ ボックスも表示されません。

注:

BeforeDelConfirm イベントと AfterDelConfirm イベントは発生せず、[アクセス オプション] ダイアログ ボックスの [詳細設定] タブで [レコードの変更] チェック ボックスをオフにし、[Microsoft Office] ボタンを選択して [アクセス オプション] を選択しても、[変更の記録] チェック ボックスをオフにしても 、[確認の削除] ダイアログ ボックスは表示されません。

Delete イベントが発生したときに実行されるマクロやイベント プロシージャを使って、レコードが削除されないようにしたり、特定の条件を満たす場合にだけレコードが削除できるように制限したりできます。 Delete イベントを使用して、レコードが削除される前に確認を求めるダイアログ ボックスを表示することもできます。

レコードを削除するには、[編集] メニューの [レコードの削除] を選択します。 カレント レコード (レコード セレクターに現在のレコードとして示されるレコード) が削除されます。 レコード セレクターを選択するか、[編集] メニューの [レコードの選択] を選択してレコードを選択し、Delete キーを押して削除することもできます。 [レコードの削除] を選択した場合、現在のレコードのレコード セレクター、または [レコードの選択] を選択すると、フォーカスがあるコントロールの Exit イベントと LostFocus イベントが発生します。 レコードのデータを変更した場合は、 Exit イベントと LostFocus イベントが発生する前に、変更したレコードに対して BeforeUpdate イベントや AfterUpdate イベントが発生します。 別のレコードのレコード セレクターを選択すると、そのレコードの Current イベントも発生します。

レコードを削除すると、削除されたレコードの後の次のレコードにフォーカスが移動し、そのレコードの Current イベントが発生し、そのレコードの最初のコントロールの Enter イベントと GotFocus イベントが続きます。

削除を確認するダイアログ ボックスが表示される直前に、 BeforeDelConfirm イベントが発生します。 ダイアログ ボックスに応答 (削除を確定またはキャンセル) すると、 AfterDelConfirm イベントが発生します。

一度に複数のレコードを削除することもできます。 この場合、各レコードが削除されるたびに Delete イベントが発生します。 これにより、 Delete のマクロまたはイベント プロシージャで、各レコードが実際に削除される前にレコード内のデータにアクセスして、各レコードを削除するかどうか選択できます。 複数のレコードを削除すると、最後に削除されたレコードに続くレコードの Current イベントと、このレコードの最初のコントロールの Enter イベントと GotFocus イベントは、すべてのレコードが削除されるまで発生しません。 つまり、 Delete イベントは選択した各レコードに対して発生しますが、他のイベントは選択したすべてのレコードが削除されるまで発生しません。 BeforeDelConfirm イベントと AfterDelConfirm イベントも、選択したすべてのレコードが削除されるまで発生しません。

次の使用例では、テーブルからレコードを削除できないようにします。 次の使用例の実行結果を確認するには、テーブルを基に作成したフォームに対し、次のイベント プロシージャを追加します。 フォームのデータシート ビューに切り替えて削除を実行しても、レコードは削除されません。

Private Sub Form_Delete(Cancel As Integer) 
    Cancel = True 
    MsgBox "This record can't be deleted." 
End Sub

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

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