1

我有一个带有按钮的表单,当我按下它时,它会打开另一个表单。当我关闭第二个表单时,我需要刷新第一个表单。

所以我需要在全局变量中插入第一个表单名称,以从第二个表单访问表单名称以刷新第一个表单。

我尝试创建这个:

global formname as form

formname = activeform.name

但我收到一条错误消息:该选项是只读的。

4

3 回答 3

3

Click按钮的事件中,您可以将表单的名称作为 的OpenArgs属性传递DoCmd.OpenForm

Private Sub Command4_Click()
    DoCmd.OpenForm "frmStaff", , , , , , Me.Name

End Sub

Close第二种形式的情况下,您可以检查此(字符串)值:

Private Sub Form_Close()
    If Me.OpenArgs <> "" Then
        'MsgBox Me.OpenArgs
        Forms(Me.OpenArgs).Refresh  'or .Requery
    End If
End Sub
于 2013-07-23T21:43:09.733 回答
3

你为什么不直接进入后面的 VBA 代码并用 close sub 刷新它呢?我不明白需要在表单之间传递一个全局变量 - 你应该能够在你的第二种形式中做这样的事情:

Private Sub Form_Close()
     Form_YourFormHere.Refresh
End Sub
于 2013-07-23T21:45:42.227 回答
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 会认为你是在尝试将对象的值赋值给变量。

您说您想要表单名称,但是您的变量是表单类型,而不是字符串。第一个代码片段将实现您似乎想要实现的结果,第二个代码片段将实现您所说的想要实现的结果。

不过,另一种方法可能会更好、更可靠。

于 2013-07-23T22:56:02.717 回答