ここから本文です

解決済みのQ&A

エクセルVBA 一定時間毎に繰り返しマクロを自動実行したい

himari0822さん

エクセルVBA 一定時間毎に繰り返しマクロを自動実行したい

こんばんは。
一定時間毎(たとえば5秒毎)に繰り返しマクロを実行したいのですが、どうもうまくいきません。

5秒後にマクロを実行までは出来たのですが、繰り返しできません。

Sub ループして実行()
sum = sum + 1
Cells(sum, 1) = Now
Application.OnTime Now + TimeValue("00:00:05"), "test",
End Sub

なにか足りないでしょうか??
※Public sum As Integerを「Sub ループして実行()」の上に入れる様な事も見たんですが、別のマクロとして切り分けられてしまいます。


また、繰り返しマクロを実行できるようになったとして、繰り返しで自動実行してるマクロを停止させるVBAはございますでしょうか?

2つをフォームコントロールのボタンでON・OFFでスタート・停止の様にしたいと考えております。

お時間ございましたらご回答頂ければ助かります。
お願い致します。

  • 質問日時:
    2013/4/1 00:33:49
  • 解決日時:
    2013/4/7 16:40:40
  • 閲覧数:
    2,954
    回答数:
    2
  • お礼:
    知恵コイン
    100枚

ベストアンサーに選ばれた回答

jazzcorp2003さん

ココにいろいろサンプルありマ、、、

7) タイマーを使った制御
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv214.html#8-1
開始時刻から終了時刻まで一定間隔でマクロを実行するには?
http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9c134.html

ベストアンサー以外の回答

(1件中1〜1件)

 

kouyasan_ginpasouさん

>なにか足りないでしょうか??
今のコードは、1回スケジュールしただけですね。
testプロシジャの最後で、「ループして実行」を起動すれば上手くいくと思います。
たとえば
Sub test()
Msgbox "testが起動されました"
Call ループして実行
End Sub

>繰り返しで自動実行してるマクロを停止させるVBAはございますでしょうか?
方法は2つくらいでしょうか.....。
1)自分でスケジュールをやめる
上記の例で行くと、
Call ループして実行
を何かの条件で実行しないようにする
=> If~End Ifの中に「Call ループして実行」を書く。
=>フォームコントロールのボタンのON/OFFをどこか(たとえば空きセルなど)に書き込み、それを判定する

この場合、実際にマクロの実行が止まるまで、タイムラグが発生するのは、ご理解できると思います。

2)外部からスケジュールをキャンセルする
http://www.moug.net/tech/exvba/0130013.html
に詳しいので参照してください。
タイムラグは発生しません

  • 違反報告
  • 編集日時:2013/4/1 02:31:42
  • 回答日時:2013/4/1 02:03:06

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する