5分ピッチで 仕事させます。
ブックオープンで
インターバル = TimeValue("00:05:00")
Application.OnTime Format(開始時刻, "hh:mm:ss"), "orgdata.必要な作業を行うマクロ", 待ち時間
Debug.Print "st" & 開始時刻
Call timer_set
反復時刻 = 開始時刻
If Format(反復時刻, "hh:mm:ss") > "23:54:00" Then
反復時刻 = Format(DateAdd("d", 1, 反復時刻), "yyyy/mm/dd") & " " & TimeValue("0:00:10")
Else
反復時刻 = Format(反復時刻, "yyyy/mm/dd") & " " & TimeValue(反復時刻) + インターバル
End If
ループで5回ほど
Application.OnTime Format(反復時刻, "hh:mm:ss"), "orgdata.必要な作業を行うマクロ", 待ち時間
Debug.Print "loopexit" & 反復時刻
で、デバッグアウトが
end 2013/08/15 3:02:00
st 2013/08/14 23:50:10
loop2013/08/14 23:55:10
loop2013/08/15 00:00:10
loop2013/08/15 00:05:10
loop2013/08/15 00:10:10
loopexit2013/08/15 00:15:10
makuro 2013/08/15 00:20:10
makuro 2013/08/15 00:25:10
makuro 2013/08/15 00:30:10
で、「必要な作業を行うマクロ」 で 仕事のあと タイマー追加します。
If Format(反復時刻, "hh:mm:ss") > "23:54:00" Then
反復時刻 = Format(DateAdd("d", 1, 反復時刻), "yyyy/mm/dd") & " " & TimeValue("0:00:10")
Else
反復時刻 = Format(反復時刻, "yyyy/mm/dd") & " " & TimeValue(反復時刻) + インターバル
' End If
Application.OnTime Format(反復時刻, "hh:mm:ss"), "必要な作業を行うマクロ", 待ち時間
(反復時刻を 時間だけの時 formatを 入れて・・・)
Debug.Print "makuro " & 反復時刻 ’これが デバッグで出力されています。
で、ダミーの作業が
clup = clup + 1
orgdata.Cells(clup, 10) = Format(Now, "yyyy/mm/dd")
orgdata.Cells(clup, 11) = Format(Now, "hh:mm:ss")
orgdata.Cells(clup, 12) = Format(反復時刻, "yyyy/mm/dd")
orgdata.Cells(clup, 13) = Format(反復時刻, "hh:mm:ss")
結果
2013/8/1423:50:102013/8/150:20:10
2013/8/1423:55:102013/8/150:25:10
2013/8/150:00:102013/8/150:30:10
これで、タイマー作業が 途切れます。
0:00:00 超える事に 問題があるなら 0:00:10 は 実行されないハズ・・・・
反復時刻は yyyy/mm/dd & ” ” & ”hh:mm:ss” です。
試しに 時刻だけでやっても 同じでした。
さて、如何でしょ?
実は これで、動いていたのですが、3日ほど前から 0:00以降 突然タイマーが動かなくなったのです
PCは 3台 同じ現象です よって WINの設定では無い・
エクセル オプションに 何か設定でもあるのか??
どうも VBAのタイマーは不可解で
エクセル終了させず、 プログラムだけ終了、再ロードだと、前のタイマー残ったまま、ダブルでタイマー動くとか・・・・
それと、WIN32とかの 別のタイマー使った方が 良いのでしょうか??
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
日付を跨ぐ際の処理
If Format(反復時刻, "hh:mm:ss") > "23:54:00" Then
反復時刻 = Format(DateAdd("d", 1, 反復時刻), "yyyy/mm/dd") & " " & TimeValue("0:00:10")
Else
反復時刻 = Format(反復時刻, "yyyy/mm/dd") & " " & TimeValue(反復時刻) + インターバル
End If
をざっくり削って
反復時刻 = 反復時刻 + インターバル
Application.OnTime 反復時刻 , "必要な作業を行うマクロ", 待ち時間
の2行にしましょう。
バグの原因は「素直に足し算すれば良いのに、Format関数で余計な事をするから」です。
「ただ足すだけ」で、日付を跨ぐ場合も問題ありません。
直したいなら「Format関数は、デバッグ表示以外では使わない」ようにしましょう。
この回答への補足
お手数です
このくだりは 反復時間に 月日を入れていないときの ドジで 時間だけだと 23:59 の次が 0:00 と思い込みで、月日を入れたものです。反復時間の 初めに 月日入れてしまえば お説の通り。
で、そのごの テストでは
Application.OnTime 反復時刻 , "必要な作業を行うマクロ", 待ち時間
の 再実行の 待ち時間 を入れると 0:00 以降 動かなくなることが分かりましたが
Public 待ち時間 As Variant
待ち時間 = TimeValue("00:01:00") 分でも 秒でも 同じ
さて、??
といった 次第
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/01/23 17:13
- Access(アクセス) エクセルのVBAについて教えてください。 4 2023/01/21 10:21
- MySQL ある時間以内の利用者の抽出について 3 2022/03/26 11:15
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで別のセルにあるふり...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
Excel2013 VBA マクロ実行中に...
-
エクセルに張り付けた写真のフ...
-
IF関数を使ってマクロを実行さ...
-
Excel 改ページのVBAうまくい...
-
エクセルのマクロについて教え...
-
ExcelVBA 図形をクリックした...
-
EXCELのVBAでRange("A1:C4")を...
-
Excelのマクロについて教えてく...
-
有効数字N桁のマクロについて
-
MSアクセスのマクロ・モジュー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報