如何在使用睡眠时阻止Excel变得无响应

时间:2016-07-13 19:03:19

标签: excel vba excel-vba

我正在使用excel VBA,我正在尝试制作它,以便我可以观看宏滚动细胞。当我尝试使用sleep来缓慢地遍历单元格(使用for循环)时,Excel在大约20次迭代后变得无法响应。它然后挂起直到结束,然后在sub完全执行后返回。

以下是实现这一目标的代码:

Option Explicit

Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)

Sub test()
    Dim i As Integer
    For i = 1 To 50
        Sleep 250
        Selection.Offset(1, 0).Select
    Next i
End Sub

如何阻止这种情况发生?

1 个答案:

答案 0 :(得分:5)

DoEvents添加到您的循环中。

Sub test()
    Dim i As Integer
    For i = 1 To 50
        Sleep 250
        Selection.Offset(1, 0).Select
        DoEvents '/ Add do events to return the resource to interface.
    Next i
End Sub