フォームをモードレスで表示@Excel マクロ・VBA

通常、フォームを表示すると、他の処理が行えません。
Excelのワークシートなども操作できないです。

show vbModelessを指定すると、フォームを表示後でも、
他の処理を行うことができます。

show vbModalですと、フォームを閉じないと、
他の処理が行えません。

以下では、3つパターンのサンプルです。
1.フォームをモードレスで表示します。
フォームを表示させた後、そのまま処理が続いて、
3秒間Waitさせた後、にMsgBoxを表示されます。

2.フォームをモダルで表示
フォームを閉じた後に、MsgBoxが表示されます。

3.フォームをモードレスで表示
3秒間Watiさせた後に、フォームを閉じます。



Sub show1()
    Dim waitDate As Date

    'モードレスでフォームを表示
    UserForm1.Show vbModeless

    '3秒wait
    waitDate = Now + TimeValue("00:00:03")
    Application.Wait (waitDate)

    'MsgBox表示
    MsgBox ("モードレス")

End Sub

Sub show2()

    'モーダルでフォーム表示
    UserForm1.Show vbModal

    'MsgBox表示
    MsgBox ("モダル")

End Sub

Sub show3()
    Dim waitDate As Date

    'モードレスでフォームを表示
    UserForm1.Show vbModeless

    '3秒wait
    waitDate = Now + TimeValue("00:00:03")
    Application.Wait (waitDate)

    'ユーザフォームをアンロード
    Unload UserForm1
End Sub




Copyright (C) Excelマクロ・VBAのお勉強. All Rights Reserved.