如何打开vba函数中的另一个窗体并返回到函数
我有一个MS Access窗体,其中包含一个调用一个函数的按钮,该函数通过检查日期开始并询问用户是否需要手动更改日期。如果是这种情况,则在输入和验证日期时打开另一个表单。有没有一种方法可以将选定的日期加载到变量中,并返回到第一个表单到正在运行的函数中,以便在过程中继续使用它?如何打开vba函数中的另一个窗体并返回到函数
下面的方法是为我工作,但我认为有一个更好的。所有的 首先我插入一个模块,并声明一个全局变量:
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中的值,或者可以将它写入某个隐藏的文本框,以便稍后在其他函数中使用它。
太棒了!这是第一次!我不知道窗口模式开关。非常感谢Graffl的帮助 – Avagut
作为一个人,你可能最好不要关闭窗体,只设置visible = false。您然后让调用代码从表单中获取值。这意味着你避免了全局变量。全局变量使代码难以阅读,难以维护如果您复制表单或代码,那么您有外部依赖关系,您还必须复制和设置。调用例程或表单来回传递值不应该依赖于全局变量,除非简单的替代方法已经耗尽。 –
这可能会帮助你:Forms!frmBase!txtTargetBox.Value = Me.txtEntry.Value – Graffl