Excel 延迟宏的更好方法,而不是应用程序。等待或应用程序。睡眠?
我创建了一个状态栏,它在application.wait之外工作。从某种意义上说,这很有效。但是,我希望能够在处理其他工作表时更新状态栏。我找不到合适的方法。以下是我到目前为止的情况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
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())
立即执行()