|
▼たか さん:
質問の意図を取り違えていたようです。
10:00:00に何か実行、そして、さらに 10:00:00:04 にも 何か実行。
こういうように受け取ってしまいました。
そうではなく、10:00:00:04 に何か実行ということだったんですね。
失礼しました。
微妙に狂った時計に合わせるということなら、OnTime では苦しいですね。
ichinoseさんのサンプルのように 0.1秒加えたつもりでも、実際には 0.2秒おくれたり
0.3秒遅れたりしますから。Now() そのもので実行しても、0.1秒程度は遅れることもあります。
精密さを求めるなら API の SetTimer,KillTimer でしょうね。
h tp://note.phyllo.net/?eid=1106267
ただ、これは時刻指定ではなく、指定ミリ秒後に実行ということになりますから
10:00:00:04 まで、何ミリ秒なのかを計算しなければいけません。
計算している間に、その計算結果のミリ秒の値が求めるべきものではなくなっているとか?
何よりも、この時刻はPC設定時刻ですから、これが0.4秒くるっていれば意味がないですね。
(おうおうにして、これぐらいはくるってますよね)
なやみますね。
たとえば 10:00:00 に実行予約しておく。
で、その予約されたプロシジャの先頭で 4ミリ秒停止させる。
Application.Wait は(原則)秒単位ですので、精密にやろうとすれば、API のSleep を用いる。
でも、これにも誤差はあります。平気で 10〜15ミリ秒は狂うみたいです。
h tp://dream-drive.net/archives/2011/09/excel_vba1wait.html
h tp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1467582304
結論からいえば、4ミリ秒の精度は困難では?
お役に立てずごめんなさい。
|
|