ここから本文です

Timer関数を使ったループ 「一定の時間間隔で5秒毎にマクロを実行する」 ように...

ss0********さん

2014/7/2413:11:34

Timer関数を使ったループ
「一定の時間間隔で5秒毎にマクロを実行する」
ようにしてMacro1を実行したいのですが、
うまくいきません。どう改変したらいいでしょうか。

Sub Macro2()

Dim tt As Integer
Dim wt As Integer


tt = Now + TimeValue("00:00:05") '5秒後
wt = TimeValue("00:00:01") 'インターバル1秒
Application.OnTime TimeValue("00:00:05"), "Macro1", TimeValue("00:00:01")

End Sub

補足ありがとうございます。
最後これとは別に
本ループ停止をマクロ化してボタン配置
したいんですができますか??

「ループ停止ボタン」みたいな感じです。

閲覧数:
185
回答数:
2
お礼:
50枚

違反報告

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

jun********さん

2014/7/2414:59:09

時刻の設定が間違っています。どこからかサンプルを見つけたようですが、せっかく「tt」で5秒後の時刻を保存しているのに、次のOnTimeメソッドで指定されていません。

Application.OnTime tt, "Macro1"

第3引数(LatestTime)は、この時刻まで実行できなかった場合は解除する、という意味ですから、5秒より後でなければなりません。また、省略は可能です。

後、5秒間隔で実行するのであれば、自分自身を呼び出さないと成立しません。今のように、他の関数でスケジューリングして、Macro1を呼び出すと、1回きりで終了します。

Sub Macro2()

Dim tt As Integer

Call Macro1

tt = Now + TimeValue("00:00:05") '5秒後
Application.OnTime tt, "Macro2"

End Sub

このようにして、Macro2内からMacro1を呼び出し、更に、自分自身を5秒後に呼び出すようにスケジューリングします。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

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

1〜1件/1件中

prs********さん

2014/7/2414:01:42

こんなのいかがですか。・・・・・
Sub test()
Dim a, b As Integer
Do Until b = 3
For a = 1 To 10000
Cells(1, 1) = "★"
Cells(1, 1) = ""
Next
MsgBox "5秒間処理を中断しますOKして下さい"
Application.Wait Now + TimeValue("00:00:05")
MsgBox "5秒間処理が再開OKして下さい再開三回で終わりです。"
b = b + 1
Loop
End Sub

こんなのいかがですか。・・・・・
Sub test()
Dim a, b As Integer
Do...

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

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

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

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる