VBAのapplication.ontime メソッドでの日付を超えた設定方法について
VBAのapplication.ontime メソッドでの日付を超えた設定方法について
EXCEL VBAを使って、2×10^n, 5×10^n, 10×10^n (n=2~6)秒ごとに
測定器からデータを取得する下のようなプログラムを作りました。
測定開始時刻から起算した時刻を表に書き込み、それを読み込んで
application.ontimeで測定マクロを起動しようとするものです。
Dim clk, clk2, clk5, clk10 As Variant
Dim i, j, n As Integer
Sheet1.Range("A1") = Date
Sheet1.Range("B1") = Time
Sheet1.Range("C1") = Now
Sheet1.Range("D1") = 6 '時刻表の読取り開始位置指定
n = 6 '時刻表の書込み開始位置指定
clk = Now '開始時刻設定
For i = 3 To 5
c2 = 2 * 10 ^ i
Sheet1.Range("A" & LTrim(Str(n))) = c2 * 1000 '繰返し回数 2×10^i(k回)
clk2 = DateAdd("s", c2, clk) '2×10^i(k回)の時刻計算
Sheet1.Range("B" & LTrim(Str(n))) = clk2 '時刻表への書込み
mdate = CStr(Format(clk2, "yyyy/mm/dd")) '日付の抽出
mtime = Format(clk2, "h:m:s") '時刻の抽出
Sheet1.Range("C" & LTrim(Str(n))) = mdate '日付の書込み
Sheet1.Range("D" & LTrim(Str(n))) = mtime '時刻の書込み
n = n + 1 '時刻表書込み位置を1進める
c5 = 5 * 10 ^ i
Sheet1.Range("A" & LTrim(Str(n))) = c5 * 1000
clk5 = DateAdd("s", c5, clk)
Sheet1.Range("B" & LTrim(Str(n))) = clk5
mdate = CStr(Format(clk5, "yyyy/mm/dd"))
mtime = Format(clk5, "h:m:s")
Sheet1.Range("C" & LTrim(Str(n))) = mdate
Sheet1.Range("D" & LTrim(Str(n))) = mtime
n = n + 1
c10 = 10 * 10 ^ i
Sheet1.Range("A" & LTrim(Str(n))) = c10 * 1000
clk10 = DateAdd("s", c10, clk)
Sheet1.Range("B" & LTrim(Str(n))) = clk10
mdate = CStr(Format(clk10, "yyyy/mm/dd"))
mtime = Format(clk10, "h:m:s")
Sheet1.Range("C" & LTrim(Str(n))) = mdate
Sheet1.Range("D" & LTrim(Str(n))) = mtime
n = n + 1
Next i
For j = 6 To 14
mdate = Str(Sheet1.Range("C" & LTrim(Str(j)))) '測定日付読込み
mtime = Sheet1.Range("D" & LTrim(Str(j))) '測定時刻読込み
待ち時間 = TimeValue("0時00分30秒")
Application.OnTime (mtime) + DateValue(mdate), "measure", TimeValue(待ち時間)
Next j
End Sub
同日付の間は動くのですが、日付が変わると止まってしまいます。
Ontimeメソッドでは日付を指定すれば日付超え時刻指定ができると
聞き、日付、時刻を別の変数として指定する方法も試しましたが、型が一致しないエラーが出て困っています。
Application.OnTime TimeValue(mtime) + DateValue(mdate), ・・・
上手い設定方法はないものでしょうか
お礼
ありがとうございました。 文献のバグのようですね。 初心者なので基本的な項目にまちがいがあると きついです(^-^;