Excel2000 VBA 指定時間毎にマクロを実行 [Excel2000 VBA独習]
Excel2000 VBA 指定時間毎にマクロを実行
動作原理
’-----ーーontimeの設定
Sub ontime()
Application.ontime Now + TimeValue("00:00:05"), "test" ', TimeValue("00:0:02") ’5秒後にtestを実行
End Sub
’-------実行するマクロ
Sub test()
Dim MB As String
MB = MsgBox("終了するには「はい」をOnTimeを実行するには「いいえ」を押して下さい", vbYesNo)
Select Case MB
Case vbYes
Exit Sub
Case vbNo
Application.Run "ontime"
End Select
End Sub
未完成 テストバージョン
Public row_b As Long
Sub 指定時間で更新()
’A2(文字列)に更新間隔時間を設定 例 00:10:00 10分毎
'B2から実行した日時を表示
Dim interval_time As String
Dim interval As Variant
Workbooks("指定時間で更新.xls").Activate
Sheets("sheet1").Select
interval_time = Range("A2").Value
interval = Now + TimeValue(interval_time)
Application.OnTime TimeValue(interval), "test",TimeValue("00:05:00") ’追記 待ち時間設定 '更新間隔時間の設定
End Sub
Sub test()
Workbooks("指定時間で更新.xls").Activate
Sheets("sheet1").Select
row_b = row_b + 1
Cells(row_b + 1, "B") = Now()
Application.Run "指定時間で更新"
Beep ’音を出す
End Sub
課題 自動更新の解除方法 (A2を空にすればエラーが出て止まる )
指定した時刻毎にマクロを実行できるが、2回3回と続けて実行される時がある
待ち時間を設定してみて様子見
このタイマーマクロと実行するマクロだけ開いている時は正常動作するが、他のマクロのあるブックを多数同時に開いていると、
たまに誤動作する
OnTime(EarliestTime, Procedure, LatestTime, Schedule)
OnTime(EarliestTime(マクロを実行する時間), Procedure(プロシージャ名), LatestTime(待ち時間), Schedule(有効無効))
- 引数EarliestTimeには、マクロを実行する時刻
- 引数Procedureには、指定した時刻に実行するプロシージャ名
- 引数LatestTimeは省略可能(指定した時刻にほかのマクロが起動していると、OnTimeメソッドで設定したマクロが実行できない)
- 引数Scheduleは省略可能(OnTimeメソッドの設定を有効/無効)
- 数Scheduleを省略するかTrueを指定すると、スケジュールが有効になる
- 引数ScheduleにFalseを指定すると、スケジュールを取り消し
- 参照サイト http://www.moug.net/tech/exvba/0130013.htm
コメント 0