Excel 延迟宏的更好方法,而不是应用程序。等待或应用程序。睡眠?

Excel 延迟宏的更好方法,而不是应用程序。等待或应用程序。睡眠?,excel,vba,userform,Excel,Vba,Userform,我创建了一个状态栏,它在application.wait之外工作。从某种意义上说,这很有效。但是,我希望能够在处理其他工作表时更新状态栏。我找不到合适的方法。以下是我到目前为止的情况 Private i As Integer Private newHour Private newMinute Private newSecond Private waitTime Private Sub UserForm_Activate() For i = 1 To 10 UserForm1.Label

我创建了一个状态栏,它在application.wait之外工作。从某种意义上说,这很有效。但是,我希望能够在处理其他工作表时更新状态栏。我找不到合适的方法。以下是我到目前为止的情况

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秒钟,然后状态栏将达到最大扩展,然后再隐藏用户表单

使用此延迟功能而不是
应用程序。等待

Private Sub delay(seconds As Long)
    Dim endTime As Date
    endTime = DateAdd("s", seconds, Now())
    Do While Now() < endTime
        DoEvents
    Loop
End Sub
专用子延迟(秒长)
Dim endTime作为日期
endTime=DateAdd(“s”,秒,Now())
立即执行()