日付時刻:経過時間を取得( Timer 関数 )
Timer 関数の使い方
result = Timer ()
【戻り値】
- result ・・・ 当日午前 0 時から経過した秒数を表す単精度浮動小数点数型(Single)の値。
Timer 関数は、処理中に午前0時を超えた場合、値を「1日の総秒数を反転した値(-86,400 秒)」にリセットし、そこから経過秒数を加算していきます。さらに1日が経過し翌日の午前0時になると「 0 秒」となるので、日付をまたぐ場合は注意が必要です。
【対応策】
1.経過時間の差分の値の絶対値を Abs 関数等で算出して、その値で経過秒数を判定する。
2.「【参考】サンプルVBAソース2」のように、Timar 関数を使用しない。
Timer 関数の使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Sample_Timer() Dim StartTime Dim EndTime StartTime = Timer EndTime = 20 With Sheets("Sheet1") .Cells(1, 1).Value = "" Do Until .Cells(1, 1).Value = 20 .Cells(1, 1).Value = Int(Timer - StartTime) DoEvents Loop End With End Sub |
実行結果
DoEvents 関数について
上記マクロ内には DoEvents というのがありますが、この「DoEvents関数」を使用することで、一時的に、他のアプリケーションが実行できるように Windows に制御を移すことが可能になります。
つまり、マクロを実行後、VBE 画面からマクロを停止することが可能になります。
【参考】サンプルVBAソース2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Sub Sample_Test() Dim StartTime Dim EndTime StartTime = Now EndTime = 20 Cells(1, 1).Value = "" Do Until Cells(1, 1).Value = EndTime Cells(1, 1).Value = Int(DateDiff("s", StartTime, Now)) DoEvents Loop End Sub |
関連記事
-
CPU に制御を移す(DoEvents 関数)
DoEvents 関数 DoEvents 関数を実行すると、CPU に制御を移し …
-
文字列:文字列を指定した形式に変換する(StrConv 関数)
StrConv 関数の使い方 【書式】 result = StrConv ( s …
-
式を評価し、結果(真・偽)に応じた式・値を返す(IIf 関数)
IIf 関数 の使い方 IIf(アイイフ)関数は、式を評価してその結果(真・偽) …
-
日付時刻:日付時刻データを計算( DateAdd 関数 )
DateAdd 関数(日付・時刻の値を加算・減算結果を取得) 【書式】 resu …
-
文字列:文字列の空白を削除(Trim 関数, LTrim関数, RTrim関数)
Trim 関数・LTrim 関数・RTrim 関数の使い方 【書式】 <先頭と末 …
-
文字列:指定した文字の文字コードを取得する(Asc 関数)
Asc 関数 【書式】 result = Asc ( string ) 引数・戻 …
-
VBA で正規表現を使う(RegExp オブジェクトのメソッド)
RegExp オブジェクトのメソッド RegExp オブジェクトの詳細に関しては …
-
引数が省略されたかどうかをチェックする( IsMissing 関数 )
IsMissing 関数の使い方 【書式】 result = IsMissing …
-
対象のオブジェクトをクリアする(Clear メソッド)
Clear メソッド 対象となるオブジェクト全体をクリアします。Range オブ …
-
指定した数値に対応する選択肢の値・数式を返す(Choose 関数)
Choose 関数 の使い方 Choose 関数は、指定されたインデックス値(1 …