• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロでLoopを使うと応答なしになり…)

エクセルマクロでLoopを使うと応答なしになる理由は?

このQ&Aのポイント
  • エクセル2010でタイマーを作って作動させると、必ず応答なしになることがあります。
  • Sleeepを使用しても応答なしになる場合があります。
  • 応答なしになる理由は、無限ループが発生しているためです。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

xl2010で試しましたが、問題なく動きましたよ。 (但し、1分数十秒迄しか試しておりませんが) DoEventsを入れないと、画面の更新がなされない事がありますが、 それを応答無しと勘違いされている事はありませんか? これだけのためにPCを100%占有しても仕方が無いので、Sleepは入れた方が良いでしょう。 Sub macro() Dim EndTime As Long Dim PassTime As Long EndTime = Timer + Range("c6").Value * 60 + Range("E6").Value Do PassTime = Timer Range("c6").Value = (EndTime - PassTime) \ 60 '分 Range("e6").Value = (EndTime - PassTime) Mod 60 '秒 DoEvents: DoEvents: DoEvents Loop Until EndTime - PassTime <= 0 Beep MsgBox "時間だよ" End Sub

riifu
質問者

お礼

上記のコードで試してみたらできました!ありがとうございます

その他の回答 (1)

回答No.1

ブレイクしてる? 例えば、「Do」でブレイクするると、時空が歪んでしまって、「(EndTime - PassTime)」は最早マイナスの世界になっている、、、 が、永久ループにはならないのでは??

関連するQ&A