2016-07-26 33 views
0

我有一个子实例化一个新的形式,使其可见。不过,这种新形式只能持续很短的时间。这是我的代码:为什么我的表单在瞬间消失? VBA

Private Sub txtProject_ID Click() 
     Dim frmReq as Form 
     Set frmReq = New Form_Request 
     frmReq.Visible = True 
End Sub 

我试图设置这个破发点,结果发现,当我设置它的知名度,真正的形式变得可见。然而,一旦Sub结束,它就会消失。


编辑: 如何创建弹出窗体的多个实例?

+2

'frmReq.Show' .... – cyboashu

+0

好吧我只是试过,我得到一个错误“运行时错误'2465':应用程序定义的或对象定义的错误” –

+0

您需要'初始化'用户形成。 – KyloRen

回答

1

在Access VBA使用

DoCmd.OpenForm "Request" 

如果需要打开它看不见你做

DoCmd.OpenForm "Request", WindowMode:=acHidden 
' Initialize stuff while invisible 
Forms!Request!foo = "bar" 
' show form 
Forms!Request.Visible = True 

要打开多个实例(会帮助提的是,在问题)并传递一个参数,创建一个公有初始化函数的形式如下:

Public Sub InitForm(ReqId As Long) 
    ' e.g. 
    Me.Filter = "Request_ID = " & ReqId 
    Me.FilterOn = True 
    'show me 
    Me.Visible = True 
End Sub 

并调用它是这样的(见的https://msdn.microsoft.com/en-us/library/office/ff845819.aspx底部)

Option Compare Database 
Option Explicit 
' This variable must be on *module* level! 
Dim frmReq as Form 

Private Sub txtProject_ID Click() 
    Set frmReq = New Form_Request 
    Call frmReq.InitForm(Me!txtProject_ID) 
End Sub 
+0

我想打开它作为一个弹出。因此,只要单击基础表单上的按钮,我就可以打开它的多个实例。 –

+0

另外我会传递一个参数。 –

+0

在模块级别上有一个变量意味着什么? –

1

可变/所以它需要形式的水平范围对象仅限于子过程。