Vbaでsleep、timeGetTime、Timer、wait、およびnow関数を使用して、プログラムを一時停止および遅延させる

プログラムを作成するときに、プログラムが遅延または一時停止がよく発生します。

forループを使用して、空のステートメントを特定の回数で実行し、遅延す効果をもたらします。

このように

for i=0 to 10000
next

forループを使用する前提条件は、各ステートメントの実行時間を知ること、これより、時間がかかります。

では、excel vbaで遅延または一時停止がどうやって実行しますか?

上記の機能を実現するために、vbaにはどのようなツールが配置されましたか?

次には説明します。

api関数とsleep関数を呼び出す

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '必須
Sub s()
Sleep 3000 '実行を中断する時間(ミリ秒)
Cells(1, 1) = 1
End Sub

api関数とtimeGetTime関数を呼び出す

Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Sub a()
Dim t
t = timeGetTime 'システムの開始時刻をメモする(ミリ秒)
While timeGetTime < t + 3000
DoEvents '制御権を渡す
Wend
Cells(1, 1) = 1
End Sub

vbaにあるtimer関数を使用する

Sub a()
t = Timer '開始時刻をメモする(ミリ秒)
While Timer < t + 3
DoEvents '制御権を渡す
Wend
Cells(1, 1) = 1
End Sub

applicationのwaitメソッドを使用する

Sub a()
Application.Wait (Now + TimeValue("00:00:03")) '3秒後にプログラムを続行する
Cells(1, 1) = 1
End Sub

vbaにあるnow関数を使用する

Sub a()
t = Now
While Now < (t + TimeValue("00:00:03")) '3秒後にプログラムを続行する
DoEvents
Wend
Cells(1, 1) = 1
End Sub
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です