マクロ実行中に画面が表示されるまで待つには、Dispelメソッドを使用し、ウィンドウメッセージがキューからなくなるまで待ちます。
次のマクロを実行すると,コマンドボタンのキャプションに数字がカウントアップしている過程が表示されます。
■ 操作手順 ■


!! Mainマクロ
Dialogs.DoModal("Form1",,,,,,0) !! (1)
!! フォームに貼り付けたコマンドボタンのClickイベント
event Click()
end event
(1)Dialogs.DoModal("Form1",,,,,,0)
フォーム"Form1"をモーダルダイアログとしてオープンします。
(2)Application.WorkPlace.Dispel()
Dispelメソッドはウィンドウメッセージがキューからなくなるまで待つというメソッドです。Displeでマクロの実行が止まっている間にキャプションの再描画が行われるため,カウントアップしている過程が画面に表示されます。
Application.WorkPlace.Dispelを記述しないと,カウントアップしている途中は表示されず,しばらくしたあと10000だけが表示されます。
●Dispelメソッド
Dispel ( <Type> )
ウィンドウメッセージがキューからなくなるまで待ちます。
Type 処理するウィンドウメッセージの種類を数値で指定。
1 WM_PAINTメッセージだけを処理
2 すべてのウィンドウメッセージを処理
(省略時:1)
※Dispelの引数Typeに、1を指定した場合は、ウィンドウの一部の描画の処理(変更された部分の再描画)を行います。2を指定した場合は、一時的にWindowsに制御を渡します。つまりこのマクロで2を指定した場合、コマンドボタンをクリックし、カウントアップされている最中でも再度クリックを行えます。クリック後、0からカウントしなおします。(Microsoft VisualBasicのDoEvents 関数に該当します。)
※WM_PAINT メッセージに関しては、Microsoft の Win32 API についてのマニュアルを参照してください。
※Application.CaptionはDispelメソッドを実行しなくても再描画が行われますが,Application.StatusBar.CaptionはDispelメソッドを実行しないと再描画が行われません。