マクロで自動更新を止める方法はありますか?

このQ&Aのポイント
  • 自動更新するマクロがありますが、止め方が分かりません。
  • マクロを実行すると、24時間自動で更新が続きます。
  • マクロを実行した後、別の設定ボタンを押すことで停止できる方法を教えてください。
回答を見る
  • ベストアンサー

Calculate を止めたいのですが

誰かが作った自動更新のようなマクロ(ボタンを押すとスタート)があるのですが、 自動で更新するのはいいのですが止まらないので、 スマートな止め方があれば教えてください。 (できれば別に設定したのボタンを押すとストップのような感じがいいです) ↓がそのマクロです。 ------------------------- Sub Macro1() ,Macro1 Macro , Calculate End Sub Sub Macro2() ,Macro2 Macro , Application.OntimeValue("00:00:00"), "Macro1" Application.OntimeValue("00:030:00"), "Macro1" Application.OntimeValue("00:06:00"), "Macro1" Application.OntimeValue("00:09:00"), "Macro1" , ~中略~24時間分続きます Application.OntimeValue("24:00:00"), "Macro1" , End Sub ----------------------------- です。よろしくおねがいします。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#1-2のmerlionXXです。 先ほどはあまり考えずに回答してしまいました。 あのままでは、一旦「停止」を作動させたら、再度「開始」しても動きません。そのエクセルファイルを終了させれば、また「開始」は有効になりますがそれでは不便ですよね。 修正しました。これなら何度でも停止、開始が有効です。 Dim buf As Boolean '←標準モジュールの一番上にこれを忘れずに Sub 更新() If buf Then Exit Sub Calculate Application.OnTime Now + TimeValue("00:03:00"), "更新" End Sub Sub 開始() buf = False Call 更新 End Sub Sub 停止() buf = True End Sub

KashiMAX
質問者

お礼

確認とれましたありがとうございます。 更新用のコードも1行でいいんですね。 すばやい回答ありがとうございます。

KashiMAX
質問者

補足

>Application.OntimeValue?! なんか変ですね。そのマクロほんとに動いてるんですか?それとも書き間違いじゃないですか? すみません書き間違いでした。 Application.OnTime TimeValue(”00:00:00”), ”Macro1" が正しい表記でした。 回答ありがとうございます。 すぐ実機確認できないのですが、試してみます。

その他の回答 (2)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

あちゃ!まちがえた。 Sub 更新() の MsgBox bufは余計です。 Sub 更新() Calculate Application.OnTime Now + TimeValue("00:03:00"), "開始" End Sub にしてください。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Application.OntimeValue?! なんか変ですね。そのマクロほんとに動いてるんですか?それとも書き間違いじゃないですか? で、3分ごとにCalculateで計算させてるってことは。計算は手動に設定してあるということですね? ならこんなのはどうでしょう。 Dim buf As Boolean '←標準モジュールの一番上にこれを忘れずに Sub 更新() Calculate MsgBox buf Application.OnTime Now + TimeValue("00:03:00"), "開始" End Sub Sub 開始() If buf Then Exit Sub Call 更新 End Sub Sub 停止() buf = True End Sub

関連するQ&A

  • 「一定の時間間隔で5秒毎にMacro1を実行する」

    「一定の時間間隔で5秒毎にMacro1を実行する」 一応startマクロ、stopマクロは作成してみたのですが、 下記stopコマンド実行しても止まらなかったような気がします。 ここから改変するとしたらどうですか? Public timestop As Boolean Sub test() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "Macro1", wt If (timestop = False) Then Time = Timer Application.OnTime earliesttime:=(Now + TimeValue("00:00:01")), procedure:="test" End If End Sub ---------------------------------------- ここからstart,stopマクロ Sub t_start() timestop = False Call test End Sub Sub t_stop() timestop = True End Sub

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • セルの現在時刻表示の更新間隔をセルから入力したい

    セルの現在時刻表示の更新間隔をセルから入力したい マクロは以下を使用してますが更新間隔変更のtimevalue(c3)とするとエラー13が出ます。 どなたかお教え下さい。 ******************************************** Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim TargetTime, WaitTime Calculate TargetTime = Now + TimeValue("00:00:01") 'ココをセルにするとエラー13がでる WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro1", , False Next i End Sub **********************************************

  • マクロブックを移してもプログラムを参照したい

    マクロからマクロを呼び出すとき、 Sub Macro2() Application.Run "Book1!Macro1" End Sub というマクロを作った場合、Book1!に保存されていないと実行されませんが、 これをほかのブックに移したときも使えるようにするにはどうしたらよいのでしょうか?

  • エクセル95のマクロで自動的に全画面表示したい

    エクセル95のマクロで質問です。 エクセルのファイルを開いた時、自動的に全画面表示にするには Sub Auto_Open() Application.DisplayFullScreen = True End Sub で、立ち上げた時自動的に全画面表示になりますよね。 これを最小化したい場合、このシート上に最小化ボタンをつけて Sub Macro1() Application.WindowState = xlMinimized End Sub というマクロを登録して最小化して、下のツールバーにアイコン化しました。 この場合ですが、次に、ツールバーのエクセルのアイコンをクリックしたとき、エクセル画面は全画面ではなくノーマルなものになってしまいます。 これを自動的に全画面表示にする場合はどうすればいいのでしょうか?

  • Excelのマクロの結合方法を教えてください

    Excelのマクロを使っての処理を少しだけ使うようになりました。 「これがコンピュータなの!」と一瞬で作業が進みます。(当然ですね。) ☆・・・・・☆ マクロについて学びたいので、数冊の「基本技」などの参考書籍を購入しました。 でも、わかりません。 現在は、「マクロの記録」で始めて「記録の終了」でマクロを記録してボタンに登録して「マクロを利用」しています。 ボタンが増えてしまうのです。(泣・・・) ☆・・・・・☆ マクロの編集を開くと何にも分かりません。 (Sub Macro1)   End Sub (Sub Macro2)   End Sub (Sub Macro3)   End Sub  ----- と、作成した順にマクロが書かれていることが分かりました。   我流でそれぞれを繋ぐと止まってしまいます。  ☆・・・・・☆ このように、記録によって書かれた複数のマクロを繋げて、一個のマクロに纏める書き方のポイントを教えてください。 また、このように記録されたマクロ(テンプレートでも可)の推敲(朱筆?)から入門するような参考書名をご存じでしたら具体的に教えてください。   ☆・・・・・☆

  • On Timeメソッド?で更新されません。

    On Timeメソッド?で更新されません。 現在Web上にあった例を参考に 下記の様にホワイトボード解析シートのA1セルに 20秒ごとに現在時刻を表示させています。 これを応用して、違うシートに 17:00に天気というマクロを実行するよう 作成したのですが上手くいきませんでした。 Sub Auto_Open()とSub auto_close()のtargetTimeを targetTime = TimeValue("17:00") Macro7を天気 としたのですが、なぜ更新されなかったか分かる方がいらっしゃいましたら ご教授下さい。 Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro7", WaitTime End Sub Sub Macro7() On Error Resume Next Worksheets("ホワイトボード解析").Range("A1").Calculate Application.OnTime Now + TimeValue("00:00:20"), "Macro7", TimeValue("00:00:10") '↑TimeValueの最初の方をへんこうする事で時間が変わる End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro7", , False Next i End Sub

  • 検索はマクロで記録できないのでしょうか?

    エクセル2007です。 マクロの記録ボタンを押して、CTRL+Fで検索を立ち上げて、文字を検索して、マクロを終了したら、 Sub Macro1() ' Macro1 Macro End Sub としか記録されてませんでした。 検索はマクロで記録できないのでしょうか? ご回答よろしくお願いします。

  • マクロからマクロを呼び出す方法

    ブックの中にあるマクロを呼び出すマクロを書きたいです。 Sub Macro2()   Application.Run "Book1!Macro1" End Sub とすると、book1のmacro1しか呼び出せませんが、マクロを書いているファイル(コピーして仮にbook2) のマクロを呼び出すにはどのように書けばよいでしょうか?(マクロブックだけ他のファイルにコピーして使う用途を想定しています。

  • Excelマクロにて、タイマーで自動更新は出来るのでしょうか?

    Excelマクロにて、タイマーで自動更新は出来るのでしょうか? Excelマクロの初心者です。 最近関数にて、時間の計算を行うbookを作成しましたが、 下記の様に手動で現時刻欄を更新している状態です。 (これは1カ所ですが、実際には複数箇所を行いたいです。) Sub 残り時間を更新() ' Range("C21").Select '現時刻欄を選択 ActiveCell.FormulaR1C1 = "=NOW()" '使用開始時刻欄に現時刻を再設定 Application.CutCopyMode = False End Sub これを別のマクロにくっつけて、例えば10分おき位に自動で 更新が出来る様な事は出来ますでしょうか? 理想は、セルに自動更新時間が任意に設定でき、その数字の基で タイマーが時間が決まり、実行ボタンでタイマー開始、停止ボタン で実行キャンセルといった、VB上では出来そうな事をExcel上 でも可能でしょうか? 良きアドバイスをいただきたいと思います。 よろしくお願いいたします。

専門家に質問してみよう