CancelEvent 宏操作

适用于:Access 2013、Office 2013

可以使用 CancelEvent 操作取消导致 Access 运行包含此操作的宏的事件。 宏名称是 BeforeUpdateOnOpenOnUnloadOnPrint 等事件属性的设置。

Setting

CancelEvent 操作不具有任何参数。

备注

在窗体中,通常是在验证宏中将 CancelEvent 操作与 BeforeUpdate 事件属性搭配使用。 当用户在控件或记录中输入数据时,Access 会先运行该宏,然后再将数据添加到数据库中。 如果数据不符合该宏中的验证条件, CancelEvent 操作将在更新进程开始前将其取消。

此操作通常与 MessageBox 操作搭配使用,以指示数据不符合验证条件,并提供有关应输入何种数据类型的帮助信息。

以下事件可由 CancelEvent 操作取消。

ApplyFilter

Dirty

MouseDown

BeforeDelConfirm

Exit

NoData

BeforeInsert

筛选

打开

BeforeUpdate

Format

Print

DblClick

KeyPress

Unload

删除

注意

[!注释] 对 MouseDown 事件应用 CancelEvent 操作时,只能取消右键单击对象时发生的事件。

如果控件的 OnDblClick 事件属性设置指定了一个包含 CancelEvent 操作的宏,该操作会取消 DblClick 事件。

对于可被取消的事件,在对其运行相应的宏后,将会发生该事件的默认行为(即 Access 在事件发生时的通常处理方式)。 您可以基于此机制取消默认行为。 例如,在双击插入点位于文本框中的某个单词时,Access 通常会选中该单词。 您可以在 DblClick 事件的宏中取消此默认行为并执行某种其他操作,例如打开一个包含有关文本框中的数据的信息的窗体。 对于无法取消的事件,则会在宏运行前发生默认行为。

注意

[!注释] 如果窗体的 OnUnload 事件属性指定了一个执行 CancelEvent 操作的宏,则无法关闭该窗体。 您必须更正导致执行 CancelEvent 操作的条件,或打开该宏并删除 CancelEvent 操作。 如果该窗体是一个模式窗体,则无法打开该宏。

要在 Visual Basic for Applications (VBA) 模块中执行 CancelEvent 操作,请使用 DoCmd 对象的 CancelEvent 方法。

示例

使用宏验证数据

下面的验证宏会检查在"供应商"窗体中输入的邮政编码。 它演示如何使用 StopMacroMessageBoxCancelEventGoToControl 操作。 其条件表达式检查在窗体的记录中输入的国家/地区和邮政编码。 如果邮政编码的格式与国家/地区不符,该宏将显示一个消息框并取消对该记录的保存操作。 随后将返回到"邮政编码"控件,以便您更正错误。 此宏应附加到“供应商”窗体的 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

取消事件。