您可以使用 CancelEvent 巨集指令,取消導致 Access 執行包含此巨集指令之巨集的事件。 巨集名稱是事件屬性的設定,諸如 BeforeUpdateOnOpenOnUnloadOnPrint 等。

附註: Access Web 應用程式不提供 CancelEvent 巨集指令。

設定

CancelEvent 巨集指令沒有任何引數。

註解

在表單中,您通常會在驗證巨集中搭配 BeforeUpdate 事件屬性使用 CancelEvent 巨集指令。 當使用者在控制項或記錄中輸入資料,Access 會在新增資料至資料庫前先執行巨集。 如果資料未通過巨集中的驗證條件,則 CancelEvent 巨集指令會在更新程序開始前將其取消。

一般而言,您會將此巨集指令與 MsgBox 巨集指令搭配使用,以指出資料未通過驗證條件,並提供關於應該輸入之資料類型的有用資訊。

下列事件可由 CancelEvent 巨集指令取消。

ApplyFilter

Dirty

MouseDown

BeforeDelConfirm

Exit

NoData

BeforeInsert

Filter

Open

BeforeUpdate

Format

Print

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動作的使用。 條件運算式會檢查在表單記錄中輸入的國家/地區與郵遞區號。 如果郵遞區號不是國家/地區的正確格式,宏會顯示訊息方塊,並取消記錄。 然後,它會將您返回郵遞區號控制項,您可以在此修正錯誤。 此宏應附加至 Suppliers 表單的 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

取消事件。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Office Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×