我正在尝试创建一个vba宏来重新计算活动工作簿。
我尝试使用那些功能,但没有结果:
Application.CalculateFull(它重新计算所有打开的工作簿,因此 这需要很多时间)
类似的东西:
Application.Calculation = xlCalculationManual
ActiveSheet.Calculate
Application.Calculation = xlCalculationAutomatic
这也是:
Dim sh As Worksheet
Application.Calculation = xlCalculationManual
For Each sh In ActiveWorkbook.Sheets
sh.Calculate
Next sh
Application.Calculation = xlCalculationAutomatic
答案 0 :(得分:1)
如果第一个不适用于您,则可以尝试以下其他方法。
对于有效的工作表:
ActiveSheet.Calculate
或
vbasheetname.Calculate
或
Worksheets("Sheet1").Calculate
对于有效的工作簿:
Sub CalcBook()
Dim wks As Worksheet
Application.Calculation = xlManual
For Each wks In ActiveWorkbook.Worksheets
wks.Calculate
Next
Set wks = Nothing
End Sub
或:
Application.Calculation = xlManual
ThisWorkbook.Sheets.Select
ActiveSheet.Calculate
或:
Application.CalculateBeforeSave = True
或:Application.Calculate
或:
For Each wks In ThisWorkbook.Worksheets
wks.Calculate
Next wks
注意:最好的做法是,如果可能的话,避免在代码中使用Activesheet(很少需要使用Activesheet),因此请坚持使用后两个。
如果您要按特定顺序计算工作簿,那么据我所知,没有解决方案,唯一的答案就是知道工作簿的计算顺序并手动计算工作表订购,或使用Calculate接受,它将计算所有打开的工作簿。
答案 1 :(得分:0)
您可以在ActiveWorkbook中循环浏览工作表,并根据工作表索引计算每个工作表:
Sub CalculateWorkbook()
Dim wb as Workbook
Dim i as Integer
Dim sheetCount as Integer
set wb = ActiveWorkbook
sheetCount = wb.Worksheets.Count
For i = 1 to sheetCount
wb.Sheets(i).Calculate
Next i
End Sub