2016-07-26 4 views
0

私は、新しいフォームをインスタンス化して可視にするサブを持っています。しかし、新しい形は非常に短い瞬間だけ続く。これは私のコードです:なぜ私のフォームが分割されて消えるのですか? VBA

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

これにブレークポイントを設定しようとしましたが、フォームの可視性をtrueに設定すると表示されることがわかりました。ただし、Subが終了するとすぐに消えます。


編集:ポップアップフォームの複数のインスタンスを作成する方法 ?

あなたは目に見えない、それを開くために必要がある場合は(問題のことを言及して役立っただろう)複数のインスタンスを開くには

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

を行う

DoCmd.OpenForm "Request" 

を使用するアクセスVBAで

+2

'frmReq.Show' .... – cyboashu

+0

私はそれを試したところ、エラーが発生しました"実行時エラー '2465':アプリケーション定義またはオブジェクト定義のエラー " –

+0

ユーザーを'初期化 'する必要があります形。 – KyloRen

答えて

1

パラメータを渡す場合は、次の形式で公開初期化関数を作成します。

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

変数/それがフォームレベルにする必要があるので、範囲の目的は、サブ手順に限定されます。

関連する問題