延迟除Application.Wait或Application.Sleep以外的其他macros的更好方法?

我创build了一个状态栏,从application.wait工作。 从某种意义上说,这个工作很好。 但是,我希望能够在其他工作表上工作时更新状态栏。 我无法find合适的方法。 以下是我到目前为止。

Private i As Integer Private newHour Private newMinute Private newSecond Private waitTime Private Sub UserForm_Activate() For i = 1 To 10 UserForm1.Label1.Width = UserForm1.Label1.Width + 24 Application.Calculate If Application.CalculationState = xlDone Then newHour = Hour(Now()) newMinute = Minute(Now()) newSecond = Second(Now()) + 1 waitTime = TimeSerial(newHour, newMinute, newSecond) Application.Wait waitTime End If Next UserForm1.Hide End Sub 

注意:出于一些奇怪的原因,我可以让标签不断更新的唯一方法是使用Application.Calculate。 否则,将等待整个10秒,然后状态栏将达到最大的扩展,然后隐藏用户窗体。

使用此延迟function,而不是Application.Wait

 Private Sub delay(seconds As Long) Dim endTime As Date endTime = DateAdd("s", seconds, Now()) Do While Now() < endTime DoEvents Loop End Sub