Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何在vba函数中打开另一个窗体并返回该函数_Function_Vba_Ms Access - Fatal编程技术网

Function 如何在vba函数中打开另一个窗体并返回该函数

Function 如何在vba函数中打开另一个窗体并返回该函数,function,vba,ms-access,Function,Vba,Ms Access,我有一个MS Access表单,其中有一个按钮,可以调用一个函数,该函数从检查日期开始,询问用户是否需要手动更改日期。如果是这种情况,则打开另一个表单,其中输入并验证了日期。是否有可能将所选日期加载到变量中,并返回到正在运行的函数中的第一个表单,以便在过程中进一步使用它?以下方法对我有效,尽管我认为有更好的方法。 首先,我插入了一个模块并声明了一个全局变量: Global globalText As String 然后您需要确保另一个表单(这里frmEntry)被称为“modal”,这样您的代

我有一个MS Access表单,其中有一个按钮,可以调用一个函数,该函数从检查日期开始,询问用户是否需要手动更改日期。如果是这种情况,则打开另一个表单,其中输入并验证了日期。是否有可能将所选日期加载到变量中,并返回到正在运行的函数中的第一个表单,以便在过程中进一步使用它?

以下方法对我有效,尽管我认为有更好的方法。 首先,我插入了一个模块并声明了一个全局变量:

Global globalText As String
然后您需要确保另一个表单(这里frmEntry)被称为“modal”,这样您的代码将等待表单再次关闭。您可以通过以下方式实现此目的:

DoCmd.OpenForm "frmEntry", WindowMode:=acDialog
在frmEntry中,您需要将选择的任何值写入全局变量,然后关闭表单,如下所示:

Private Sub btnClose_Click()

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

End Sub 

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

这可能会对您有所帮助:表单!弗姆贝斯!txtTargetBox.Value=Me.txtEntry.ValueBrilliant!这是第一次成功!我不知道车窗模式开关的事。非常感谢Graffl的帮助作为提醒,您最好不要关闭表单,只需设置visible=false。然后让调用代码从表单中获取值。这意味着要避免全局变量。全局变量使代码难以阅读和维护如果您复制表单或代码,那么您就有一个外部依赖项,您还必须复制和设置它。调用例程或表单来回传递值不应依赖于全局变量,除非已用尽简单的替代方法。除@Albert D.Kallal外,如果声明
Me.Visible=False而不是关闭表单,则代码执行将返回调用表单。