- 締切済み
前の命令の実行が完了してから次を実行させたい
エクセルシートに挿入-図形から長方形を挿入し、下記のマクロを設定しました。 図形をクリックしたところ、アクション1→2→3の順には実行されず、まず2と3が同時に実行され、1のコメントは3のメッセージボックスのOKを押した後に表示されました。 1の表示が3よりも後になるのは、1の処理に時間がかかるためかと思います。 まず1が表示され、2のサウンド再生が完了するまで待ってから3のメッセージ表示という形にしたいです。 よろしくお願いいたします。 Sub Macro1() ’アクション1 ActiveSheet.Shapes(1).TextFrame.Characters.Text = "サウンドが鳴ります" ’アクション2 Shell "C:\Program Files\Windows Media Player\wmplayer.exe C:\windows\Media\Alarm06.wav", vbHide ’アクション3 MsgBox "サウンド終了です" End Sub
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- nan93850673
- ベストアンサー率32% (179/553)
>アクション1→2→3の順には実行されず その様に見えているだけです。 先ず、「ActiveSheet.Shapes(1).TextFrame.Characters.Text = "サウンドが鳴ります"」の後に「DoEvents」を入れてください。これで「1の表示が3よりも後になる」は、治るでしょう。 アクション2のShellは「プログラムを起動するだけで、完了を待たない」関数なので、確実に1→2→3の順位実行している様に見せたいなら http://hanatyan.sakura.ne.jp/vbhlp/tap_PrgEnd.htm 等を参考にしてください。
補足
nan93850673さん、ありがとうございます。 「DoEvents」を試してみましたが、残念ながら機能しませんでした。