Windows API の GetTickCountは、Windowsが起動してからの時間をミリ秒で取得できます。それを利用しタイマーとし利用することもできます。

Windows API GetTickCountとは

■ GetTickCountの宣言
Declare Function GetTickCount Lib "kernel32.dll" () As Long

■ GetTickCountの構文
長整数型変数 = GetTickCount( )

GetTickCount使用例画面


入力したVBAコードです。
MyGetTickCountプロシージャは、Windowsが起動してからの時間を取得し、ミリ秒と秒で表示します。
MyGetTickCountTimerプロシージャはミリ秒単位で時間待ちを指定できるタイマーです。

Declare Function GetTickCount Lib "kernel32.dll" () As Long

Sub MyGetTickCount()
    Dim tim As Long
    
    tim = GetTickCount()
    MsgBox "パソコン起動からの時間:" & tim & "ミリ秒 (" & tim / 1000 & "秒)"
End Sub

Sub MyGetTickCountTimer()
    Dim tim As Long
    Dim sttim As Long
    
    Range("E3") = "開始"
    tim = Range("C3")
    sttim = GetTickCount()
    Do
        If GetTickCount - sttim >= tim Then
            Exit Do
        End If
        DoEvents
    Loop
    Beep
    Range("E3") = "停止"
End Sub

VBAプログラムの説明


Windows API GetTickCountを宣言
Declare Function GetTickCount Lib "kernel32.dll" () As Long
Subプロシージャの宣言
Sub MyGetTickCount()
長整数型の変数を宣言
Dim tim As Long
Windows API GetTickCountを実行
tim = GetTickCount()
パソコン起動からの時間をミリ秒と秒で表示
MsgBox "パソコン起動からの時間:" & tim & "ミリ秒 (" & tim / 1000 & "秒)"
プロシージャの終了
End Sub
Subプロシージャの宣言
Sub MyGetTickCountTimer()
長整数型の変数を宣言
Dim tim As Long
長整数型の変数を宣言
Dim sttim As Long
E3セルに入力
Range("E3") = "開始"
指定時間をC3セルから取得
tim = Range("C3")
Windows API GetTickCountで開始時間を取得
sttim = GetTickCount()
Doループの開始
Do
Windows API GetTickCount - 開始時間と指定時間を比較
If GetTickCount - sttim >= tim Then
Doループの中止
Exit Do
If関数の終了
End If
Windowsに制御を一時戻す
DoEvents
Doループここまで
Loop
ブザー
Beep
E3セルに入力
Range("E3") = "停止"
プロシージャの終了
End Sub

Windows API GetTickCountの使用例マクロの実行画面

マクロ一覧から「MyGetTickCount」か「MyGetTickCountTimer」マクロを実行します。


MyGetTickCountマクロを実行すると、WIndows起動からの時間をミリ秒と秒で表示します。


事前にC3セルに待ち時間をミリ秒単位で入力しておいてください。
MyGetTickCountTimerマクロを開始すると、「開始」と表示されます。


待ち時間が経過すると、「停止」と表示されます。


Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.