激凹みから立ち直る方法

エクセル2000、Win2000です。
VBAで音を出そうと、下記のマクロを記述しました。
ところが、「MsgBox i & "回実行しました。」の部分を、コメントブロックしたら一回しか鳴りません。ビー、ビー、ビーと三回鳴ると思ったのですが、どうしてでしょうか?

Sub sound()
Dim i As Integer
For i = 1 To 3
Beep
'MsgBox i & "回実行しました。"
Next i
End Sub

A 回答 (2件)

こんにちは。

maruru01です。

間隔が短すぎるからでは?

適当にWaitをかけてはどうですか?
以下では1秒間を空けて鳴らします。


Sub sound()

  Dim i As Integer
  Dim StartTime As Single

  For i = 1 To 3
    StartTime = Timer
    Do While Timer < StartTime + 1
      DoEvents
    Loop
    Beep
    'MsgBox i & "回実行しました。"
  Next i

End Sub
    • good
    • 0
この回答へのお礼

なあるほど!
ありがとうございました。

お礼日時:2004/06/02 17:18

処理が早いので一瞬で終わるからでしょう。


MsgBoxで一旦止めないと切れ目が分からないと。

対策としてはウェイトをかければよいので、Sleep処理を入れればいいのですが、VBAには直接そういう便利なメゾットがないので。
・WSHを使う
・APIを使う(参考URL)
・自作する(ループ処理の間に数秒待たせる)
など。

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/api/sub08_ …
    • good
    • 0
この回答へのお礼

ありがとうございました。
大変勉強になります。

お礼日時:2004/06/02 17:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報