0

vba で 30 秒の遅延を発生させたい。アプリケーションが翌朝まで一晩実行されるため、「タイマー」を使用できません。(タイマーは、真夜中までに経過した秒数 (小数部) を生成します)。Timer と Application.WaitNow() 以外にこれを実現する方法はありますか。
次のコードを使用してみましたが、コードの実行が中断されましたというエラーがスローされます。

Function Wait()

Dim StartSecond
Dim EndSecond

StartSecond = Second(Now)
'Sheets("SampleOutputEx").Range("M2") = StartSecond

EndSecond = (StartSecond + 30) Mod 60                             
While Second(Now) <> EndSecond
  DoEvents
Wend

End Function
4

2 に答える 2

1

これを試して

Declare Sub Sleep Lib "kernel32" Alias "Sleep" _
(ByVal dwMilliseconds As Long)

眠りたいときはいつでもこの関数を呼び出します

Function Wait(Seconds as integer)

  Sleep Seconds*1000

End Function

使用することもできます

expression.OnTime(When, Name, Tolerance)

現在の時刻に 30 秒を追加して、次の実行までの時刻を設定します。

この記事には、それについてのより良い説明があります

于 2012-12-19T14:13:12.090 に答える
0

どうぞ。答えが非常に簡単だとは思いませんでした。

Function Wait()
Dim StartSecond As Single
Dim EndSecond
StartSecond = Now

EndSecond = DateAdd("s", 30, Now)

While Now < EndSecond
DoEvents
Wend

End Function

これは私にとってはうまくいきます。これに関するコメントは大歓迎です。

于 2012-12-21T07:10:19.857 に答える