3

对此有点挣扎,我有一个数据表表格,其中列出了每条记录的 ID 和其他信息。到目前为止,我已经找到了一些 VBA 代码,它们会将每个 ID 作为超链接打开并将其传递到另一个表单中。

我遇到的问题是我希望表单在弹出窗口或模式窗口中打开,到目前为止我的代码是:

Private Sub ID_Click()
    Dim varWhereClause As String
    varWhereClause = "ID = " & Me!ID
    DoCmd.OpenForm "Copy Of test", , , varWhereClause
End Sub
4

2 回答 2

9
DoCmd.OpenForm "Copy Of test", , , varWhereClause, ,acDialog

虽然这将是弹出式和模态的。

于 2012-11-01T10:12:31.047 回答
4

acDialogand的一个小缺点.PopUp是表单作为访问主窗口之外的窗口打开。这就是为什么我更喜欢尽可能使用.Modal

如果您只想阻止其他打开的表单,您可以Me.Modal = True在表单的打开事件中临时做一个。

缺点.Modal是不会等待。DoCmd.OpenForm , , , , , acDialog在表单关闭之前不会返回。这种同步调用有时会非常有用。

要在访问主窗口中进行类似acDialog/PopUp调用,您可以在表单中使用一个小技巧:

Private bFormOpen As Boolean

Public Sub ShowModal()
    SetFocus ' Make the form visible

    On Error GoTo ForcedClose
    bFormOpen = True
    Do While bFormOpen ' Wait until the form is closed
        Sleep 50
        DoEvents
    Loop

ForcedClose:
    Exit Sub
End Sub

Private Sub Form_Unload(Cancel As Integer)

    bFormOpen = False

End Sub

您可以像这样实例化您的表单:

Dim f As New Form_Name

f.Modal = True
Call f.ShowModal

Set f = Nothing
于 2015-04-15T18:31:15.770 回答