通过在窗体的
Open
事件发生时运行宏或事件过程,可以关闭另一个窗口或将焦点移到窗体上的特定控件。 您也可以运行宏或事件过程,询问有关信息需要在窗体之前或报表被打开或打印。
例如,
打开
的宏或事件过程可以打开一个自定义对话框,用户在其中输入条件以筛选要显示在窗体或报表中包含的日期范围的记录集。
激活已打开的窗体时,不会发生
Open
事件;例如,从 Microsoft Access 中的另一个窗口切换到窗体时,或者在宏中使用 OpenForm 操作将打开的窗体置于顶部。 但是,在这些情况下确实会发生
Activate
事件。
当打开一个基于基础查询的窗体时,Microsoft Access 先运行该窗体的基础查询,然后才运行 Open 宏或事件过程。
如果应用程序可以一次加载多个窗体,请在焦点移动到其他窗体时使用
Activate
和
Deactivate
事件而不是
Open
事件来显示和隐藏自定义工具栏。
Open
事件在
Load
事件之前发生,该事件在打开窗体并显示其记录时触发。
首次打开窗体时,下列事件将按如下顺序发生:
打开
→
负载
→
调整
→
激活
→
当前
Close
事件在
Unload
事件之后发生,该事件在窗体关闭后触发,但在从屏幕中删除窗体之前触发。
当关闭窗体时,下列事件将按如下顺序发生:
卸载
→
停用
→
关闭
当
Close
事件发生时,可以打开另一个窗口或要求输入用户名来产生日志项,以表明使用该窗体或报表的用户。
如果尝试确定是否对宏或事件过程使用
Open
或
Load
事件,一个显著区别是
Open 事件可以
取消,但
Load
事件不能。 例如,如果要在窗体 Open 事件的事件过程中动态生成窗体的记录源,如果没有要显示的记录,则可以取消打开
窗体。 同样,
Unload
事件可被取消,但不能
关闭
的事件。
以下示例演示如何在用户选择“
否
”按钮时取消窗体的打开。 消息框提示用户输入订单的详细信息。 如果用户选择
“否
”,则不会打开
“订单详细信息”
窗体。
要试用该示例,请将以下事件过程添加到窗体中。
Private Sub Form_Open(Cancel As Integer)
Dim intReturn As Integer
intReturn = MsgBox("Enter order details now?", vbYesNo)
Select Case intReturn
Case vbYes
' Open Order Details form.
DoCmd.OpenForm "Order Details"
Case vbNo
MsgBox "Remember to enter order details by 5 P.M."
Cancel = True ' Cancel Open event.
End Select
End Sub
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。