您可以使用 CancelEvent 巨集指令,取消導致 Access 執行包含此巨集指令之巨集的事件。 巨集名稱是事件屬性的設定,諸如 BeforeUpdate、OnOpen、OnUnload 或 OnPrint 等。
附註: Access Web 應用程式不提供 CancelEvent 巨集指令。
設定
CancelEvent 巨集指令沒有任何引數。
註解
在表單中,您通常會在驗證巨集中搭配 BeforeUpdate 事件屬性使用 CancelEvent 巨集指令。 當使用者在控制項或記錄中輸入資料,Access 會在新增資料至資料庫前先執行巨集。 如果資料未通過巨集中的驗證條件,則 CancelEvent 巨集指令會在更新程序開始前將其取消。
一般而言,您會將此巨集指令與 MsgBox 巨集指令搭配使用,以指出資料未通過驗證條件,並提供關於應該輸入之資料類型的有用資訊。
下列事件可由 CancelEvent 巨集指令取消。
|
ApplyFilter |
Dirty |
MouseDown |
|
BeforeDelConfirm |
Exit |
NoData |
|
BeforeInsert |
Filter |
Open |
|
BeforeUpdate |
Format |
|
|
DblClick |
KeyPress |
Unload |
|
Delete |
附註: 將 CancelEvent 巨集指令與 MouseDown 事件搭配使用時,只能取消以滑鼠右鍵按一下物件時所發生的事件。
如果控制項的 OnDblClick 事件屬性設定指定了包含 CancelEvent 巨集指令的巨集,則該巨集指令會取消 DblClick 事件。
如果是可以取消的事件,事件的預設行為 (也就是 Access 通常會在事件發生時執行的動作) 會在事件的巨集執行後才發生。 如此可讓您取消預設行為。 例如,在文字方塊中按兩下插入點所在的單字時,Access 通常會選取該單字。 您可以在 DblClick 事件的巨集中取消此預設行為,並執行一些其他的動作,例如,開啟含有文字方塊內資料之相關資訊的表單。 如果是無法取消的事件,則預設行為會在巨集執行前發生。
附註: 如果表單的 OnUnload 事件屬性指定了執行 CancelEvent 巨集指令的巨集,您將無法關閉該表單。 您必須更正導致執行 CancelEvent 巨集指令的條件,或是開啟巨集並刪除 CancelEvent 巨集指令。 如果表單是強制回應表單,您將無法開啟巨集。
若要在 Visual Basic for Applications (VBA) 模組中執行 CancelEvent 巨集指令,請使用 DoCmd 物件的 CancelEvent 方法。
範例
藉由使用巨集來驗證資料
下列驗證巨集會檢查在供應商表單輸入的郵遞區號。 它會顯示 StopMacro、MsgBox、CancelEvent 和 GoToControl 動作的使用。 條件條件運算式會檢查表單上記錄中所輸入的國家/地區及郵遞區號。 如果國家/地區的郵遞區號格式不正確,則巨集會顯示訊息方塊並取消儲存記錄。 然後它會帶您返回郵遞區號控制項,您可以在此更正錯誤。 此巨集應附加至 供應商表單的 BeforeUpdate 屬性。
|
條件 |
動作 |
引數:設定 |
註解 |
|
IsNull([CountryRegion]) |
StopMacro |
如果 CountryRegion 為 Null,則無法驗證郵遞區號。 |
|
|
[CountryRegion] In ("法國","義大利","西班牙") And Len([郵遞區號]) <> 5 |
MsgBox |
訊息:郵遞區號必須為 5 個字元。 嗶嗶聲:是 類型:資訊 標題:郵遞區號錯誤 |
如果郵遞區號不是 5 個字元,則會顯示一則訊息。 |
|
... |
CancelEvent |
取消事件。 |
|
|
GoToControl |
控制項名稱:PostalCode |
||
|
[CountryRegion] In ("澳洲","新加坡") And Len([郵遞區號]) <> 4 |
MsgBox |
訊息:郵遞區號必須為 4 個字元。 嗶嗶聲:是 類型:資訊 標題:郵遞區號錯誤 |
如果郵遞區號不是 4 個字元,則會顯示一則訊息。 |
|
... |
CancelEvent |
取消事件。 |
|
|
GoToControl |
控制項名稱:PostalCode |
||
|
([CountryRegion] = "加拿大") And ([郵遞區號] Not Like"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]") |
MsgBox |
訊息:郵遞區號無效。 加拿大郵遞區號範例:H1J 1C3 嗶嗶聲:是 類型:資訊 標題:郵遞區號錯誤 |
如果郵遞區號不是加拿大的正確格式,則會顯示一則訊息。 (加拿大郵遞區號範例:H1J 1C3) |
|
... |
CancelEvent |
取消事件。 |