• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのapplication.ontime メソッドでの日付を超えた設定方法について)

VBAのapplication.ontime メソッドでの日付を超えた設定方法について

このQ&Aのポイント
  • VBAのapplication.ontime メソッドを使用して、日付を超えた設定をする方法について説明します。
  • 測定器からデータを取得するためのEXCEL VBAのプログラムで、application.ontime メソッドを使用して、指定の時間に測定マクロを起動する方法を探しています。
  • プログラムでは、測定開始時刻からの経過時間を表に書き込み、それを読み込んで application.ontime メソッドで起動しようとしていますが、日付が変わると動作が止まってしまいます。日付を指定して日付超えの時刻を設定する方法について、上手な設定方法を知りたいです。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

コードはよく見てませんが… 充分に先の時間(数秒後?)であることがわかっているのですから、  expression.OnTime(EarliestTime, Procedure) の構文を利用すればいいのでは? 今からd日(d:整数) と hh:mm:ss 時間後にスタートであれば  Application.OnTime Now + n + TimeValue("hh:mm:ss") , "measure" でいけると思います。 >型が一致しないエラーが出て困っています。 TimeValueは24時間を越える数値だと、このエラーになるようですが、それが原因ではないでしょうか?

keramos
質問者

お礼

ありがとうございました。 測定日時、測定時刻の指定方法を見直して見ました。 VBAは初心者なのでマニュアルやヘルプ画面と首っ引きで マクロを作成していますが、なかなか進展しません。

keramos
質問者

補足

ご指摘ありがとうございました。 試しに単純化した下のマクロを実行しPCの時計を一時的に進めてテストしたところ、所望の動作を確認することができました。 Sub test() Dim mtime, mdate, clk, c, d As Variant Sheet1.Range("A1") = Date Sheet1.Range("B1") = Time Sheet1.Range("C1") = 3 For i = 3 To 6 d = Sheet1.Range("A" & LTrim(Str(i)))  '日差指定 c = Sheet1.Range("B" & LTrim(Str(i)))  '時差指定 mdate = DateAdd("d", d, Date)      '動作日付計算 mtime = DateAdd("s", c, Time)      '動作時刻計算 Sheet1.Range("C" & LTrim(Str(i))) = mdate Sheet1.Range("D" & LTrim(Str(i))) = mtime Application.OnTime TimeValue(mtime) + DateValue(mdate), "print_txt" Next i End Sub 結局、他のジョブと競合した場合の待ち時間指定に付けていたLatestTimeを削除したところ、問題なく動くことがわかりました。 本番のマクロに組み込んで、テストしてみようと思います。

関連するQ&A