2014-01-18 36 views
1

我有一个MS Access窗体,其中包含一个调用一个函数的按钮,该函数通过检查日期开始并询问用户是否需要手动更改日期。如果是这种情况,则在输入和验证日期时打开另一个表单。有没有一种方法可以将选定的日期加载到变量中,并返回到第一个表单到正在运行的函数中,以便在过程中继续使用它?如何打开vba函数中的另一个窗体并返回到函数

+0

这可能会帮助你:Forms!frmBase!txtTargetBox.Value = Me.txtEntry.Value – Graffl

回答

1

下面的方法是为我工作,但我认为有一个更好的。所有的 首先我插入一个模块,并声明一个全局变量:

Global globalText As String 

然后,你需要确保其他形式(这里frmEntry)被称为“模式”,让你的代码会等到形式再次关闭。你可以做到这一点:

DoCmd.OpenForm "frmEntry", WindowMode:=acDialog 

在frmEntry你需要写选择任何值,那么全局变量,然后关闭窗体,这将是这个样子:

Private Sub btnClose_Click() 

    globalText = Me.txtEntry.Value 
    DoCmd.Close acForm, "frmEntry" 

End Sub 

然后它基本上已经完成,您的基本表单中的代码将继续运行,您可以在任何地方使用globalText中的值,或者可以将它写入某个隐藏的文本框,以便稍后在其他函数中使用它。

+0

太棒了!这是第一次!我不知道窗口模式开关。非常感谢Graffl的帮助 – Avagut

+0

作为一个人,你可能最好不要关闭窗体,只设置visible = false。您然后让调用代码从表单中获取值。这意味着你避免了全局变量。全局变量使代码难以阅读,难以维护如果您复制表单或代码,那么您有外部依赖关系,您还必须复制和设置。调用例程或表单来回传递值不应该依赖于全局变量,除非简单的替代方法已经耗尽。 –

相关问题