我有一个带按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单。
所以我需要在全局变量中插入第一个表单名称,以便从第二个表单中访问表单名称以刷新第一个表单。
我尝试创建这个:
global formname as form
formname = activeform.name
但是我收到一条错误说:该选项是只读的。
答案 0 :(得分:3)
在按钮的Click
事件中,您可以将表单名称作为OpenArgs
的{{1}}属性传递。
DoCmd.OpenForm
在第二个表单的Private Sub Command4_Click()
DoCmd.OpenForm "frmStaff", , , , , , Me.Name
End Sub
事件中,您可以检查此(字符串)值:
Close
答案 1 :(得分:3)
为什么不直接进入后面的VBA代码并使用close sub刷新它?我不明白是否需要在表单之间传递全局变量 - 您应该能够以第二种形式执行此类操作:
Private Sub Form_Close()
Form_YourFormHere.Refresh
End Sub
答案 2 :(得分:0)
如果您必须使用此方法,请在第一个表单的模块中尝试:
Public formname as Form
Private Sub Command1_Click()
Set formname = Me
End Sub
或
Public formname as String
Private Sub Command1_Click()
formname = Me.name
End Sub
表单是对象类型,只能使用Set语句分配给变量,否则VBA会认为您正在尝试将对象的值赋给变量。
你说你想要表单 name ,但你的变量是Form类型,而不是String。第一个代码片段将实现出现要实现的结果,第二个代码片段将实现您想要实现所说的结果。
但是,不同的方法可能会更好,更可靠。