0

以下のリンクを使用しています。

http://www.ozgrid.com/Excel/run-macro-on-time.htm

関数を呼び出す時間を保存してからontimeキャンセルします。ただし、最後に保存したontime()後、関数を呼び出して閉じます。問題は、保存したばかりの時間が範囲外になり、空に変わることです。したがって、上記のリンクを使用して、一度RunOnTime()終了するとdTimeの値が空になるため、呼び出しCancelOnTime()ても機能しないと言っています。例と同じように dTime を宣言しました。私がThisWorkbookにいることを除いて、すべて同じです。

誰でもアドバイスできますか?

4

2 に答える 2

2

投稿された ThisWorkbook モジュールでそのコードを実行することはできません。ThisWorkbook はクラス モジュールであり、その中のプロシージャは既定ではクラス外では使用できません。まず、クラス外からアクセスできるように、OnTime によって呼び出されるプロシージャを public にする必要があります (OnTime はクラス外に存在します)。次に、プロシージャへの参照の前にクラス名を付ける必要があります。この 2 つの変更により、コードは次のようになります。

Public dTime As Date
Dim lNum As Long

Public Sub RunOnTime()
    dTime = Now + TimeSerial(0, 0, 10)
    Application.OnTime dTime, "ThisWorkbook.RunOnTime"

    lNum = lNum + 1
    If lNum = 3 Then
       CancelOnTime
    Else
        MsgBox lNum
    End If

End Sub

Sub CancelOnTime()
    Application.OnTime dTime, "ThisWorkbook.RunOnTime", , False
End Sub
于 2013-04-02T13:15:33.510 に答える