Form.Dirty イベント (Access)

Dirtyイベントが発生する、指定したコントロールの内容が変更されたとき。

構文

ダーティ (キャンセル)

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

パラメーター

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

注釈

たとえば、テキスト ボックスやコンボ ボックスに文字を直接入力したときや、マクロまたは Visual Basic を使ってテキスト ボックスやコンボ ボックスの Text プロパティの設定値を変更したときに発生します。

マクロや Visual Basic でフォームのレコードを変更しても、Dirty イベントは発生しません。 レコードに直接データを入力するか、コントロールの Text プロパティを設定する必要があります。

Dirty イベントは連結フォームにのみ適用され、非連結フォームまたはレポートには適用されません。

このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、 OnDirty プロパティをマクロ名または "[Event Procedure]"/"[イベント プロシージャ]" に設定します。

Dirty イベントが発生したときにマクロまたはイベント プロシージャを実行することで、レコードを変更できるかどうかを判断できます。 また、編集の権限があるかどうかを確認するメッセージを表示させることもできます。

キーボードを使用してレコード内のデータを変更すると、 Dirty イベントなどのコントロール イベントに加えてキーボード イベントが発生します。 For example, if you move to a new record and type an ANSI character in a text box in the record, the following events occur in this order:

KeyDownKeyPressBeforeInsertDirtyKeyUp

レコードの BeforeUpdate イベントと AfterUpdate イベントは、レコードに新しいデータまたは変更されたデータを入力し、別のレコードに移動した後 (または [レコード] メニューの [レコードの保存] を選択)、したがってレコードの Dirty イベントの後に発生します。

Dirty イベントをキャンセルすると、カレント レコードに対する変更がロールバックされます。 Esc キーを押すのと同じです。

次の例では、データが変更されたときに btnUndo ボタンを有効にします。 UndoEdits( ) サブルーチンは、テキスト ボックス コントロールの Dirty イベントから呼び出されます。 有効な btnUndo ボタンをクリックすると、 OldValue プロパティを使用してコントロールの元の値が復元されます。

Private Sub Form_Dirty() 
 If Me.Dirty Then 
 Me!btnUndo.Enabled = True ' Enable button. 
 Else 
 Me!btnUndo.Enabled = False ' Disable button. 
 End If 
End Sub 
 
Sub btnUndo_Click() 
 Dim ctlC As Control 
 ' For each control. 
 For Each ctlC in Me.Controls 
 If ctlC.ControlType = acTextBox Then 
 ' Restore Old Value. 
 ctlC.Value = ctlC.OldValue 
 End If 
 Next ctlC 
End Sub

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

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