との小さな欠点はacDialog
、.PopUp
フォームが Access のメイン ウィンドウの外側のウィンドウとして開くことです。.Modal
そのため、可能であれば使用することを好みます。
他の開いているフォームをブロックしたいだけの場合Me.Modal = True
は、フォームの open イベントで一時的に行うこともできます。
の欠点.Modal
は、待機しないことです。DoCmd.OpenForm , , , , , acDialog
フォームが閉じられるまで戻りません。このような同期呼び出しは、非常に役立つ場合があります。
Access のメイン ウィンドウ内acDialog/PopUp
に留まる like 呼び出しを行うには、フォーム内でちょっとしたトリックを使用できます。
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