GoToControl 宏操作

适用于:Access 2013、Office 2013

可以使用 GoToControl 操作将焦点移动到打开的窗体、窗体数据表、表数据表或查询数据表的当前记录中的指定字段或控件。 当你希望特定字段或控件获得焦点时,可以使用此操作。 然后比较或 FindRecord 操作可以使用该字段或控件。 你可以使用此操作以根据特定的条件在表单中导航。 例如,如果用户输入婚姻控件不能在健康保险窗体,焦点可以自动跳过配偶姓名控件并移动到下一个控件。

Setting

注意

此操作不适用于数据访问页。

GoToControl 操作具有以下参数。

操作参数

说明

控件名称

希望获得焦点的字段或控件的名称。 在“宏生成器”窗格的“操作参数”部分的“控件名称”框中输入字段或控件名称。 这是必需参数。

注意:仅在 “控件名称” 参数中输入字段或控件的名称,而不输入完全限定的标识符,例如 Forms!产品![产品 ID]。

备注

不能使用 GoToControl 操作将焦点移动到隐藏窗体上的控件。

提示

可以使用 GoToControl 操作移动到子窗体,子窗体是一种控件。 然后,可以使用 GoToRecord 操作移动到子窗体中的特定记录。 还可以通过使用 GoToControl 操作移动到子窗体上的控件,然后移动到子窗体上的控件。

若要在 Visual Basic for Applications (VBA) 模块中运行 GoToControl 操作,请使用 DoCmd 对象的 GoToControl 方法。 您还可以使用 SetFocus 方法将焦点移到窗体或其任何子窗体上的控件或打开的表、 查询或窗体数据表中的字段。

示例

使用宏来设置控件值

下列宏从“供应商”表单上的按钮打开“添加产品”表单。 显示如何使用 EchoCloseWindowOpenFormSetValueGoToControl 操作。 SetValue 操作将“产品”窗体上的“供应商 ID”控件设置为“供应商”窗体上的当前供应商。 然后 ,GoToControl 操作将焦点移动到“类别 ID”字段,可在其中开始输入新产品的数据。 此宏应附加到“供应商”表单上的“添加产品”按钮。

操作

参数:设置

注释

Echo

Echo On: No

运行宏时停止屏幕更新。

CloseWindow

Object Type: FormObject Name: Product List Save: No

关闭“产品列表”窗体。

OpenForm

Form Name: Products View: FormData Mode: AddWindow Mode: Normal

打开“产品”表单。

SetValue

Item: [Forms]![Products]![SupplierID] Expression: SupplierID

在“供应商”窗体上将“供应商 ID”控件设置为当前供应商。

GoToControl

Control Name: CategoryID

转到“类别 ID”控件。

使用宏验证数据

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

条件

操作

参数:设置

注释

IsNull ([CountryRegion])

StopMacro

如果 CountryRegion 为 Null,则无法验证邮政编码。

[CountryRegion]在 (“法国”,“意大利”,“西班牙”) 和伦 ([邮政编码]) <> 5

MessageBox

邮件:邮政编码必须为 5 个字符。 BeepYesTypeInformationTitle: 邮政编码错误

如果邮政编码不是 5 个字符,则显示一条消息。

...

CancelEvent

取消事件。

GoToControl

控件名称:PostalCode

[CountryRegion]在 (“澳大利亚”,“新加坡”) 和伦 ([邮政编码]) <> 4

MessageBox

消息:邮政编码必须为 4 个字符。 BeepYesTypeInformationTitle: 邮政编码错误

如果邮政编码不是 4 个字符,则显示一条消息。

...

CancelEvent

取消事件。

GoToControl

控件名称:PostalCode

([国家/地区] = "加拿大") And ([邮政编码] Not Like"[A-Z][0-9][A-Z] [0-9][A-Z][0-9]")

MessageBox

消息:邮政编码无效。 加拿大代码示例:H1J 1C3 BeepYesTypeInformationTitle: 邮政编码错误

如果加拿大的邮政编码不正确,则显示一条消息。 (加拿大邮政编码示例:H1J 1C3)

...

CancelEvent

取消事件。