Windows API:時間を計測(GetTickCount、timeGetTime)
ミリ秒単位の時間を計測
Windows API の GetTickCount や timeGetTime を使うとミリ秒単位で経過時間を計測することができます。VBA で、経過時間の計測を行うには、Now 関数 を利用したり、Timer 関数 を使用します。
GetTickCount
【書式】
<宣言>
Declare Function GetTickCount Lib “kernel32” () As Long
GetTickCount
引数・戻り値
- 戻り値 ・・・ システムを起動した後の経過時間(ミリ秒(ms)単位で取得)を表す DWORD 型の値(VBA では、Long 型 に該当)。
timeGetTime
【書式】
<宣言>
Declare Function timeGetTime Lib “winmm.dll” () As Long
timeGetTime
引数・戻り値
- 戻り値 ・・・ Windows が起動してから経過した時間(ミリ秒(ms)単位で取得)を表す DWORD 型の値(VBA では、Long 型 に該当)。
Windows API を使用するための宣言については、Windows API を使う(Declare ステートメント) を参照してください。
GetTickCount・timeGetTime で、時間を計測する例
サンプルVBAソース 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
'WindowsAPI の GetTickCount 関数を宣言 Declare Function GetTickCount Lib "kernel32" () As Long Sub Sample_WindowsAPI_GetTickCount() Dim StartTime Dim EndTime '開始時間の取得 StartTime = GetTickCount '終了時間の設定 EndTime = 20 '経過時間を「A1」セルに表示 With Sheets("Sheet1") .Cells(1, 1).Value = "" Do Until .Cells(1, 1).Value > 20 .Cells(1, 1).Value = (GetTickCount - StartTime) / 1000 DoEvents Loop End With End Sub |
実行結果 1
サンプルVBAソース 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
'WindowsAPI の timeGetTime 関数(システム時刻をミリ秒単位で取得)を宣言 Declare Function timeGetTime Lib "winmm.dll" () As Long Sub Sample_WindowsAPI_timeGetTime() Dim TStart As Long Dim TEnd As Long Dim i As Long, j As Long, cnt As Long '処理開始時間の取得 TStart = timeGetTime For i = 1 To 30 For j = 1 To 15 cnt = cnt + 1 Cells(i, j) = cnt Next j Next i '処理開終了間の取得 TEnd = timeGetTime '処理経過時間を表示 MsgBox "処理時間:" & (TEnd - TStart) / 1000 & " 秒" End Sub |
実行結果 2
関連記事
-
Windows API を使う(Declare ステートメント)
Windows API を使う VBA から Windows API(Appli …