[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『Timer関数についての疑問』(外部コーチ)
お世話になります。
前回[20170424163511]の質問で私の未熟さから少し問題が生じた為、今回の質問の仕方に何か不手際が御座いましたら、ご指摘をお願いします。
前回の質問に関係する事なのですが、プログラムの意味の理解に悩んでいます。
現在ランダムに文字を表示する所までは出来たのですが、プログラムのなかで
If (Timer - ts) >= intervalSec Then
ts = Timer
となるコードが出てきます。私が解釈している意味は
もし(Timer - ts)が intervalSec(指定時間 1秒) 以上ならば・・・ と、
ts = Timer は ts に Timer を代入
です。
ここで出てくる2つの Timer ですが
If の後の Timer は現在の経過時間で
ts = Timer の Timer は代入された時の経過時間
これが If の条件を満たしたとき次の処理に向かう
という解釈で宜しいのでしょうか?
大変くだらない質問で申し訳ありませんが、ご教授宜しくお願いします。
はじめは
ts = Timer は ts に Timer を代入 だから If (Timer - ts) >= intervalSec Then だと If (Timer - Timer) >= intervalSec Then になり (Timer - Timer) は常に 0 になってしまうのでは・・・ と考えていました。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
Option Explicit
Sub test() Dim ts As Single
MsgBox ts ts = Timer MsgBox ts & vbLf & Timer MsgBox ts & vbLf & Timer MsgBox ts & vbLf & Timer MsgBox ts & vbLf & Timer
ts = Timer MsgBox ts & vbLf & Timer MsgBox ts & vbLf & Timer
End Sub
(マナ) 2017/05/13(土) 10:39
また、前回この関数ではなく、1秒単位のOnTimeを教えたのは、時間経過を待つ間にCPUをなるべく使わない(無駄な資源を使わない)ようにするためです。OnTimeだと、時間がきたらコードが動いてCPUを使いますが、Timer関数やAPIのSleep関数では、めいっぱいCPUを使ってしまいます。タスクマネージャでパフォーマンスを見ながらマクロを動かしてみると、違いが判る事でしょう。
(???) 2017/05/13(土) 11:08
MsgBoxで、0 から始まり OK クリックで起動時の Timer時間 表示。さらに OK クリックで起動時と現在の Timer時間 を表示。5回目クリックで ts = Timer の上書きと Timer時間 表示。最後に上書き時と現在の Timer時間 を表示。 vbLf はセル内改行。
という事ですね。
とても丁寧なご解説有難う御座いました。
(???)さん
前回の質問に引き続きご回答有難う御座います。
前回のご教授にもありましたので初めは OnTime で調べていたのですが調べている工程の中で Timer関数 に自然とシフトしてしまいこの形でのプログラムになってしまいました。また、「CPUをなるべく使わない」というご指摘には大賛成なのですが、表示時間等に使いたいので1秒未満の表示にも対応しておいた方が都合が良さそうでした。ある程度プログラムが出来ましたら一度お目通し頂きたいと思いますので宜しくお願いします。まだまだ先は長そうです。
(外部コーチ) 2017/05/13(土) 14:47
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.