OnTime関数が1秒ごとに実行されません

Anonymous
2025-06-28T22:27:33+00:00

最初の10秒間は1秒ごとに実行しますが、10秒経過すると5秒ごとに、更に50秒(5秒×10回?)経過すると20秒間隔になります。

OnTimeの設定を2秒にすると、20秒後(2秒×10回)に5秒間隔になり、更に50秒後(5秒×10回)に20秒間隔になります。

いずれのケースもマウスを動かすと1秒毎または2秒毎に復帰します。

この原因と解決策をどなたか教えてください。

<VBA code>

Public 時計 As Date

Public ctr As Long

 ︙

Call 時計表示

 ︙

Sub 時計表示()

Application.EnableEvents = False 

ThisWorkbook.Worksheets("番号表").Range("G3").Value = Now 

Application.EnableEvents = True

ctr = ctr + 1                                 '← 検証のためだけに追加したCode

Debug.Print ctr, Now                   '← 検証のためだけに追加したCode 

時計 = Now + TimeValue("00:00:01") 

Application.OnTime 時計, "時計表示" 

End Sub

Debugの結果、1秒毎に「Sub 時間表示」が実行されていないことが判明しました。

TimeValueを2秒に設定しても同様の結果です。

Microsoft 365 と Office | Excel | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Hebikuzure aka Murachi Akira 328K 評価のポイント MVP ボランティア モデレーター
    2025-06-30T04:12:42+00:00

    vba - Application.OnTime Delays When There Is No User Interaction (Even if Excel Is Active) - Stack Overflow

    こちらですね。参考のためリンクを残しておきます。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2025-06-29T22:40:14+00:00

    2025年4月16日に、hideponさんが同じ内容の質問をされれていることに気が付きました。

    hideponさんは、StackOverflowにも質問されており、StackOverflowでは的確な回答が寄せられていました。

    私は、StackOverflowの二番目の回答者 Chris Cさんが教えて頂いた「NudgeMouse関数」を使うことで、OnTimeの異常に対処することにしました。

    今のところ、OnTimeは順調に動作しています。

    私の質問にも書きましたように、OnTimeが異常になってもマウスを動かすと1秒ピッチに復帰することは分かっていたのですが、Chris Cさんは「NudgeMouse関数」を使いマクロでマウスを動かすことで、OnTime異常に対応しておられました。

    OnTimeの異常の原因は分からないままですが、取り敢えず問題は解決しました。

    hideponさん、Chris Cさん、有難うございました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Hebikuzure aka Murachi Akira 328K 評価のポイント MVP ボランティア モデレーター
    2025-06-29T09:10:59+00:00

    とりあえず、コードをできる限り最小化して(OnTime だけ実行するようにして)現象が再現するか確認。

    それでも再現するなら製品や環境に偉人する問題か、製品バージョンや環境を変えて検証。

    最小化したら再現しないのであれば、最小化の際に省いていったコードのどこかに原因がある。

    まずはこういう基本のデバッグをちゃんと行わないと、Stack Overflow などの開発者向けサイトで質問しても相手にされない場合があります。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. simo-k 88,060 評価のポイント ボランティア モデレーター
    2025-06-29T01:43:56+00:00

    VBA(マクロ)の公式サポート場所は、海外コミュニティとなっています。

    有識者が集まっている所の方が、適切なアドバイスを受けやすいでしょう。

    Stack Overflow(VBA)

      [VBA プログラミングに関する質問]

      Stack Overflow には、説明的なタイトル、完全で簡潔な問題ステートメント、問題を再現する
      ための十分な詳細の要求などのガイドラインがあることに注意してください。
      機能要求または過度に広範な質問は、トピック外と見なされます。
      新しいユーザーの場合は、Stack Overflow ヘルプ センター にアクセスして詳細を確認して下さい。

    ※ 閲覧者・回答者が多い公式サポートサイトをお勧めします。

      英語で質問を送信してください。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません