链接更新时需要暂停VBA脚本

时间:2018-12-14 18:22:42

标签: excel vba wait pause doevents

核心问题似乎在子过程中。为简单起见,我将其放在主过程中: 我面临的问题在以下代码中:

Sub US_Sub01()

Dim NAtotal As Integer

NAtotal = Worksheets("Dashboard").Cells(20, "C").Value

MsgBox(“NAtotal”)'这向我显示了需要更新的剩余链接数。开始于4540。

Do Until NAtotal = 0'此循环应继续进行,直到NAtotal达到零为止。

NAtotal = Worksheets("Dashboard").Cells(20, "C").Value

DoEvents

Loop

NAtotal从4540不变,从不倒数。如果我破坏了宏单元格,C20会立即更新为零。

有什么建议吗?

谢谢,史蒂夫

1 个答案:

答案 0 :(得分:1)

您将需要调用函数来计算公式并更新链接,如下所示:

更新公式:Application.Calculate

更新链接:ThisWorkbook.UpdateLink

如果您想要此过程的状态更新,则需要遍历工作簿中的每个单元格,并对每个单元格使用如下代码:

ThisWorkbook.Worksheets("Sheet1").Range("A1").Calculate

然后设置Worksheets("Dashboard").Cells(20, "C").Value = total cells - loop count,但是我认为这会使您的代码减慢太多,以至于无法使用,但是如果您需要这样做,请告诉我,我可以创建代码。

如果您想让用户知道工作表正在更新,可以执行以下操作:

Excel.Application.StatusBar = "Updating Links & Formulas"
'Changes the "Ready in the status bar to what you want it to say
Application.Calculate 'Calculate Formulas
ThisWorkbook.UpdateLink 'Update Links
Excel.Application.StatusBar = False 'Changes back to "Ready" status

只需在您的:Do Events末尾添加一个Set ActiveWKB = Workbooks.Open("Sub01.xlsm")即可。