Excel VBA - worksheet.calculate不会计算我的所有公式

Tho*_*ond 0 excel vba excel-vba

Private Sub Worksheet_Activate()

    If Worksheets("Input").Range("S5").Value = "Yes" Then
       MsgBox "Please make sure you've completed the historical deductible amounts for EL"
    End If

    Worksheets("Input").Calculate
    Worksheets("EL").Calculate
    Worksheets("PPL").Calculate
    Worksheets("Auto").Calculate
    Worksheets("AL").Calculate
    Worksheets("APD").Calculate
    Worksheets("Loss Layering").Calculate
    Worksheets("Sheet2").Calculate
    Worksheets("Premium").Calculate

End Sub
Run Code Online (Sandbox Code Playgroud)

为了加速一个非常大的工作簿,我已经关闭了自动计算,并创建了一个层次结构,我在工作簿中移动时计算工作表.我的问题是,对于任何重型公式,如sumifsumproduct,值不在我的活动表中计算,它们保持为零.我已经尝试过application.calculate和CalculateFull,这些都有效,但我发现它们占用了太多时间.我正试图找到一种方法来做到这一点,同时尽可能快速,简单和用户友好的模板.有什么建议?

Cha*_*ams 5

目前尚不清楚哪个工作表是活动工作表并包含此代码,但我可以想到2个可能的原因导致您的问题.

1)您尚未在活动工作表上调用worksheet.calculate.
2)由于worksheet.calculate忽略对其他工作表的依赖性,因此如果工作表上的公式始终引用已经计算过的其他工作表,则您使用的计算顺序将仅按您的要求工作.换句话说,工作表计算序列必须与工作表间参考序列完全匹配,并且必须没有任何正向工作表间参考(包括定义的名称等).

作为一般观点,我通常不会期望使用worksheet.calculate来计算整个工作簿会比使用Application.Calculate更快(虽然我确信有时它会更快)