ExcelVBAでモードレスな「お待ちください」メッセージの表示

フォームを作って vbModelessで表示
UserFormを強制表示させる効果があります。念のために書くおまじない。

【標準モジュール】

Public flag As Boolean

Sub Sample5()
    Dim TotalSize As Long, buf As String
    UserForm1.Show vbModeless
    UserForm1.Repaint
    flag = False
    ''ここから時間のかかる処理
    buf = Dir("C:\Windows\System32\*.*")
    Do While buf <> ""
        DoEvents
        If flag = True Then Exit Do
        TotalSize = TotalSize + FileLen("C:\Windows\System32\" & buf)
        buf = Dir()
    Loop
    Unload UserForm1
End Sub

【UserForm1】

Private Sub CommandButton1_Click()
    If MsgBox("中止しますか?", 292) = vbYes Then flag = True
End Sub

ネタ元