| 
    
     |  | イマイチ何をしようとしているのか分からないので、OnTimeの再帰呼び出しをする マクロを提示しておきます。このマクロの中で、変数 Lst の値は処理を繰り返す
 時間を指定し、OnTime の引数の TimeValueの値で実行間隔を指定します。
 処理を実行するのは Sub SC_Start() を一回のみで結構です。
 やってみて、ご自分のマクロにどのように組み入れたらよいか、検討してみて下さい。
 
 Declare Function sndPlaySound Lib "winmm.dll" Alias _
 "sndPlaySoundA" (ByVal lpszSoundName As String, _
 ByVal uFlags As Long) As Long
 
 Public Const SND_SYNC = &H0
 Public Const SND_ASYNC = &H1
 
 Sub SC_Start()
 Dim Lst As Date
 
 Lst = Time + TimeValue("00:00:15")
 Call MySC(Lst)
 End Sub
 
 Sub MySC(Lst As Date)
 Application.OnTime Time + TimeValue("00:00:05"), _
 "'Ck_File" & """" & Lst & "'"
 End Sub
 
 Sub Ck_File(Lst As Date)
 Dim Ret As Long
 Const Ph As String = _
 "C:\Documents and Settings\enokiz\My Documents\効果音\bubu.wav"
 
 If Time > Lst Then
 MsgBox "処理時間が経過したので終了します", 64: Exit Sub
 End If
 Ret = sndPlaySound(Ph, SND_ASYNC)
 Call MySC(Lst)
 End Sub
 
 あと、指定した秒数だけ出せる MsgBox があります。↓
 
 Dim WshShell As Object
 Set WshShell = CreateObject("WScript.Shell")
 WshShell.Popup "テストです。5秒間表示します", 5
 Set WshShell = Nothing
 
 必要なら、これもうまく組み入れたら良いと思います。
 
 |  |