2017-01-09 9 views
1

私のExcelワークシートで2台のタイマーを起動して停止したい。これは私が持っているものです。vba start stop timer?

Sub SetOpenTimer() 

OpenTimer = Now + TimeValue("00:00:10") 
Application.OnTime OpenTimer, "StartTimerShutdownForm" 

End Sub 

10秒(この例では)した後、サブstartimershutdownformがトリガされています:

Sub StartTimerShutdownForm() 

UserForm1.Show 

End Sub 

これをワークシートは、このモジュールがトリガされ、開かれ

メッセージが表示されるユーザーフォームを表示します。ユーザーフォームでの初期化サブでサブsetformtimerがトリガされます。

Sub setFormTimer() 

FormTimer = Now + TimeValue("00:00:10") 
Application.OnTime FormTimer, "Shutdown" 

End Sub 

setformtimer両端でこのタイマー場合は、サブshutdownがtriggerd あるこのサブは、ブックを閉じますが、ユーザーフォームにユーザーのためのボタンがありますキャンセルするsetformtimer

Sub stopFormTimer() 

Application.OnTime EarliestTime:=FormTimer, _ 
Procedure:="setOpenTimer", Schedule:=False 

End Sub 

これはsetformtimer停止すると仮定し、それは動作しません。 このタイマーが停止すると、ドキュメントが開かれているときにトリガーされるタイマーを再起動し、すべてが再開しますが、タイマーの停止コードは機能しません。 stopFormTimersetFormTimerStartTimerShutdownFormが配置されているモジュールでは

、上部に私はこれらの

Dim OpenTimer As Date 
Dim FormTimer As Date 

を宣言私はここで何をしないのですか?なぜ私はタイマーを停止し、最初のタイマーを再開できませんか?

+0

フォームが表示されているので、Excelが「レディモード」にないためかもしれませんか? 'Application.OnTime、LatestTimeパラメータ'の詳細。 – dee

+0

レディモードを理解していません。これに基づいて、私はどのように私の問題を解決するだろうか?私は準備モードに設定する方法を説明する "レディモード"について何も見つけることができません...他のタイマーを止めることができるようです..なぜ私のエクセルが "レディモード"にならないのか分かりません。 – Behedwin

答えて

0

私は、問題は2つのサブシステムに異なるproc名があることだと思います。一致する必要があります。私は試してみよう:

Sub setFormTimer() 
    FormTimer = Now + TimeValue("00:00:10") 
    Application.OnTime EarliestTime:=FormTimer, Procedure:="Shutdown", Schedule:=True 
End Sub 

Sub stopFormTimer() 
    Application.OnTime EarliestTime:=FormTimer, Procedure:="Shutdown", Schedule:=False 
End Sub 
+0

悲しいことに、これは役に立たなかった。私はあなたのコードを試しました。私はまだ同じエラーが発生します。タイマーを停止できません。 – Behedwin

+0

エラーメッセージは実際に何を言いますか? –

関連する問題