2016-04-03 12 views
-3

私はソースVBAを持っており、問題は他の場合にはどのようにOntimeを停止するかということです。このVBA/Excelコードをデバッグする方法は?

Sub ok2() 
    Application.OnTime Now + TimeValue("00:00:01"), "test", Schedule:=True 
End Sub 
Sub ok3() 
    Application.OnTime Now + TimeValue("00:00:01"), "test", Schedule:=False 
End Sub 

Sub test() 
    If i < 50 Then 
     UserForm2.Label1.Width = i * 2 
     i = i + 1 
     ok2 
    Else 
     ok3 
    End If 
End Sub 
+0

あなたが修正しようとしている問題は、問題の詳細はほとんどわかりませんが、あなたのスクリプトを見て、 'Sub test 'の' ok2'と 'ok3'の前に' Call'を追加しようとしましたか? ) '? –

+0

こんにちは、私のボタンをクリックするとok2が呼び出され、次に... –

+1

あなたの質問のタイトルはあなたが持っている問題や質問していることを説明するものにしてください。 * VBA exel *はタグ内にあるので、タイトルに何も意味しません。 *私を助けてください*は何も伝えません。もしあなたが助けを必要としなかったなら、あなたはここに投稿しないでしょう。あなたのタイトルは、将来の読者が検索結果でそれを見るときに役立つものでなければなりません。 –

答えて

1

OnTimeをキャンセルするには、スケジュールが設定されている正確な時刻も指定する必要があります。

あなたご参考のために、以下の

Option Explicit 

Private SetTimer As Date 

Sub ok2() 
    Application.OnTime SetTimer, "test", Schedule:=True 
End Sub 
Sub ok3() 
    Application.OnTime SetTimer, "test", Schedule:=False 
End Sub 

Sub testTimer() 
    If MsgBox("test", vbYesNo) = vbYes Then 
     SetTimer = Now + TimeValue("00:00:10") 
     ok2 
    Else 
     ok3 
    End If 
End Sub 


sub test 
    msgbox Now 
end sub 

を考えるあなたはそれがEarliestTimeのparamで実行するようにスケジュールされた正確な時間を提供する必要が

を使用してストップオン時間はできません。

など。 Nowは午前17時00分○○秒であり、あなたがok2を実行すると、

これはNow + TimeValue("00:00:01")は、その時点で17時00分01秒となりますので、testは17時00分01秒で実行することを意味します。

だから、それを停止するには、次のコード

Application.OnTime TimeValue("17:00:01"), "test", Schedule:=False 

を実行しなければならないというNowは、スケジュールのすなわち正確な時間が提供されなければならない、声明の中では存在しないことを確認します。

+0

こんにちは、私の問題は、オンタイムを停止する方法です –

+0

はい私は理解しています。私の更新された答えを見てください。 HTH – Rosetta

+0

ありがとうございます –

関連する問題