との小さな欠点は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