Ms access 表单转换和数据刷新
我有一个带按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单 所以我需要在一个全局变量中插入第一个表单名,以便从第二个表单访问表单名以刷新第一个表单 我尝试创建以下内容:Ms access 表单转换和数据刷新,ms-access,vba,Ms Access,Vba,我有一个带按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单 所以我需要在一个全局变量中插入第一个表单名,以便从第二个表单访问表单名以刷新第一个表单 我尝试创建以下内容: global formname as form formname = activeform.name 但是我收到一个错误,上面写着:选项是只读的。在按钮的单击事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递 在第二个表单的关闭事件中,您可以检查以下字
global formname as form
formname = activeform.name
但是我收到一个错误,上面写着:选项是只读的。在按钮的单击事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递
在第二个表单的关闭事件中,您可以检查以下字符串值:
Private Sub Form_Close()
If Me.OpenArgs <> "" Then
'MsgBox Me.OpenArgs
Forms(Me.OpenArgs).Refresh 'or .Requery
End If
End Sub
在按钮的Click事件中,您可以将表单的名称作为DoCmd.OpenForm的OpenArgs属性传递
在第二个表单的关闭事件中,您可以检查以下字符串值:
Private Sub Form_Close()
If Me.OpenArgs <> "" Then
'MsgBox Me.OpenArgs
Forms(Me.OpenArgs).Refresh 'or .Requery
End If
End Sub
为什么不直接进入VBA代码,用close子命令刷新它呢?我不理解在表单之间传递全局变量的必要性-您应该能够在第二个表单中执行类似的操作:
Private Sub Form_Close()
Form_YourFormHere.Refresh
End Sub
为什么不直接进入VBA代码,用close子命令刷新它呢?我不理解在表单之间传递全局变量的必要性-您应该能够在第二个表单中执行类似的操作:
Private Sub Form_Close()
Form_YourFormHere.Refresh
End Sub
如果必须使用此方法,请在第一个表单的模块中尝试此方法:
Public formname as Form
Private Sub Command1_Click()
Set formname = Me
End Sub
或
表单是一种对象类型,只能使用Set语句将其指定给变量,否则VBA会认为您试图将对象的值指定给变量
您说过需要表单名称,但是您的变量是表单类型,而不是字符串。第一个代码片段将实现您似乎想要实现的结果,第二个代码片段将实现您说过的想要实现的结果
不过,另一种方法可能更好、更可靠。如果必须使用这种方法,请在第一个表单模块中尝试:
Public formname as Form
Private Sub Command1_Click()
Set formname = Me
End Sub
或
表单是一种对象类型,只能使用Set语句将其指定给变量,否则VBA会认为您试图将对象的值指定给变量
您说过需要表单名称,但是您的变量是表单类型,而不是字符串。第一个代码片段将实现您似乎想要实现的结果,第二个代码片段将实现您说过的想要实现的结果
另一种方法可能更好、更可靠,尽管如此。这是什么语言?原始标题是“access”,因此除非OP更正,否则我将使用它。这是MS access VBA。“Global”已被“Public”取代。如果出现未处理的错误或停止执行,全局声明的变量可能会失去其状态。最好采用不依赖全局变量的方法。这是什么语言?最初的标题是“access”,因此除非OP纠正它,否则我将使用它。这是MS access VBA。“global”已被“Public”取代。如果出现未处理的错误或停止执行,全局声明的变量可能会丢失其状态。最好采用不依赖全局变量的方法。