当宏连续运行时,如何阻止Excel窗口保持在顶部?应用程序屏幕更新不起作用



我正在尝试运行一个VBA宏,该宏每秒都会更新get http响应的http响应。

当宏正在运行并切换到另一个程序(例如Chrome)时,Excel窗口(有时与它一起使用的VBA编辑器)会在几秒钟后弹出并停留在上面。

我看到了其他建议使用Application.screenupdating = false的帖子,但在我的情况下它不起作用。我正在使用Mac,如果相关。

有关您的信息,我正在运行两个subs-第一个用于获取HTTP响应字符串,然后致电第二个子,第二个Sub使用Application.onTime来计算何时再次执行第一个子。

我只希望宏在背景中运行其他任务。

更新
似乎应用程序命令正在窃取焦点。我试图将以下子作为测试运行,并复制了我一直存在的问题。

Sub test()
    Application.OnTime Now + 0.01157407 / 1000, "test"
    '0.01157407/1000 = 1 second
End Sub

我不确定如何测试您的问题,因为我从未遇到过它。而且我不能简单地提出建议对您的帖子发表评论。但是,使用以下子应该禁用Excel的大多数更新,事件和警报。

确实指出,在启用启用时,用户将无法使用Excel,因此需要在计算后禁用。

Public Sub FastApplication(Optional ByVal opt As Boolean = True)
    With Application
        .Calculation = IIf(opt, xlCalculationManual, xlCalculationAutomatic)
        .DisplayAlerts = Not opt
        .DisplayStatusBar = Not opt
        .EnableAnimations = Not opt
        .EnableEvents = Not opt
        .ScreenUpdating = Not opt
    End With
End Sub

相关内容

最新更新