适用于:Access 2013、Office 2013
可以使用 CancelEvent 操作取消导致 Access 运行包含此操作的宏的事件。 宏名称是 BeforeUpdate、OnOpen、OnUnload 或 OnPrint 等事件属性的设置。
Setting
CancelEvent 操作不具有任何参数。
备注
在窗体中,通常是在验证宏中将 CancelEvent 操作与 BeforeUpdate 事件属性搭配使用。 当用户在控件或记录中输入数据时,Access 会先运行该宏,然后再将数据添加到数据库中。 如果数据不符合该宏中的验证条件, CancelEvent 操作将在更新进程开始前将其取消。
此操作通常与 MessageBox 操作搭配使用,以指示数据不符合验证条件,并提供有关应输入何种数据类型的帮助信息。
以下事件可由 CancelEvent 操作取消。
ApplyFilter |
Dirty |
MouseDown |
BeforeDelConfirm |
Exit |
NoData |
BeforeInsert |
筛选 |
“打开” |
BeforeUpdate |
Format |
|
DblClick |
KeyPress |
Unload |
删除 |
注意
[!注释] 对 MouseDown 事件应用 CancelEvent 操作时,只能取消右键单击对象时发生的事件。
如果控件的 OnDblClick 事件属性设置指定了一个包含 CancelEvent 操作的宏,该操作会取消 DblClick 事件。
对于可被取消的事件,在对其运行相应的宏后,将会发生该事件的默认行为(即 Access 在事件发生时的通常处理方式)。 您可以基于此机制取消默认行为。 例如,在双击插入点位于文本框中的某个单词时,Access 通常会选中该单词。 您可以在 DblClick 事件的宏中取消此默认行为并执行某种其他操作,例如打开一个包含有关文本框中的数据的信息的窗体。 对于无法取消的事件,则会在宏运行前发生默认行为。
注意
[!注释] 如果窗体的 OnUnload 事件属性指定了一个执行 CancelEvent 操作的宏,则无法关闭该窗体。 您必须更正导致执行 CancelEvent 操作的条件,或打开该宏并删除 CancelEvent 操作。 如果该窗体是一个模式窗体,则无法打开该宏。
要在 Visual Basic for Applications (VBA) 模块中执行 CancelEvent 操作,请使用 DoCmd 对象的 CancelEvent 方法。
示例
使用宏验证数据
下面的验证宏会检查在"供应商"窗体中输入的邮政编码。 它演示如何使用 StopMacro 、 MessageBox 、 CancelEvent 和 GoToControl 操作。 其条件表达式检查在窗体的记录中输入的国家/地区和邮政编码。 如果邮政编码的格式与国家/地区不符,该宏将显示一个消息框并取消对该记录的保存操作。 随后将返回到"邮政编码"控件,以便您更正错误。 此宏应附加到“供应商”窗体的 BeforeUpdate 属性。
条件 |
操作 |
参数:设置 |
注释 |
---|---|---|---|
IsNull ([CountryRegion]) |
StopMacro |
如果“国家/地区”为“Null”,则无法验证邮政编码。 |
|
[CountryRegion]在 (“法国”,“意大利”,“西班牙”) 和伦 ([邮政编码]) <> 5 |
MessageBox |
消息:邮政编码必须为 5 个字符。 蜂鸣声: 是 类型: 信息 标题: 邮政编码错误 |
如果邮政编码不是 5 个字符,则显示一条消息。 |
... |
CancelEvent |
取消事件。 |
|
GoToControl |
控件名称:邮政编码 |
||
[CountryRegion]在 (“澳大利亚”,“新加坡”) 和伦 ([邮政编码]) <> 4 |
MessageBox |
消息:邮政编码必须为 4 个字符。 蜂鸣声: 是 类型: 信息 标题: 邮政编码错误 |
如果邮政编码不是 4 个字符,则显示一条消息。 |
... |
CancelEvent |
取消事件。 |
|
GoToControl |
控件名称:邮政编码 |
||
([国家/地区] = "加拿大") And ([邮政编码] Not Like"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]") |
MessageBox |
消息:邮政编码无效。 加拿大代码示例:H1J 1C3 蜂鸣声: 是 类型: 信息 标题:邮政编码错误 |
如果邮政编码不符合加拿大格式,则显示一条消息。 (加拿大邮政编码示例:H1J 1C3) |
... |
CancelEvent |
取消事件。 |