0

我想要一个按钮来打开一个表单,然后在该表单上运行 VBA 代码。所以要么使用 Form_Load 要么使用中间模块。有谁知道如何做到这一点?

谢谢

4

3 回答 3

3

使用OpenArgs.

第一种形式:

DoCmd.OpenForm "SecondForm", OpenArgs:=Me.Name

第二种形式:

Private Sub Form_Load()

    If Me.OpenArgs = "FirstForm" Then
        ' Stuff
    End If

End Sub
于 2016-08-23T11:05:52.053 回答
2

以第二种形式声明一个模块级变量:

Dim Prev As Form

在第二种形式的 On Load 事件中(这设置了对第一种形式的引用):

Set Prev = Screen.ActiveForm

在关闭事件中:

Set Prev = nothing

现在您可以使用以下命令检查先前表单的名称:

If Prev.Name = "..." Then
    ... your actions
End If

此外,您可以通过这种方式检查第一个/上一个表单中的任何属性或字段。Prev 现在表现得像我一样。

于 2016-08-23T13:33:44.760 回答
0

假设从您的应用程序中的多个表单中打开新表单;

是否可以同时打开多个呼叫表格?

如果没有,请使用:

Private Sub Form_Load()
    If isLoaded("Form1") then
        Form1_InstructionSet
    ElseIf isLoaded("Form2") then
        Form2_InstructionSet
    ...
    End If
End Sub

Private Sub Form1_InstructionSet
    ...
End Sub

etc.

如果可以同时打开多个调用表单,则应按照上面@Andre 的回答对新表单进行参数化。

于 2016-08-25T05:14:32.363 回答