如何用vba重算excel公式?

在执行vba代码时,如果工作簿里面含有大量的公式,则一般需要先关闭公式的自动重算,这样代码的运行速度才快。如果不关闭自动重算,则每次涉及到公式的单元格的内容有变化时,excel都会自动重新计算一次公式的结果,这样会大大降低代码的运行速度。

在用vba控制excel公式的计算方式时,以下几个代码需要重点区分。

  1. 为了提供代码的运行速度,可以在每次代码的开头关闭公式的自动重算,在代码的结尾开启自动重算。如下所示:
    Sub QQ1722187970()
        '设置公式为手动重算
        Excel.Application.Calculation = xlCalculationManual
        
        '这里写主代码**************
        
        '设置公式为自动重算
        Excel.Application.Calculation = xlCalculationAutomatic
    End Sub
  2. 如果要在代码的运行途中重算某个工作表或者某个单元格区域的公式结果,而不重算其它单元格或者工作表的公式,可以用以下的代码:
    Sub QQ1722187970()
        '设置公式为手动重算
        Excel.Application.Calculation = xlCalculationManual
        
        '这里写主代码**************
        
        '重算工作表sheet1的所有公式
        Sheet1.Calculate
        '重算单元格区域a1:a5的所有公式
        Sheet1.Range("a1:a5").Calculate
        
        '设置公式为自动重算
        Excel.Application.Calculation = xlCalculationAutomatic
    End Sub
    
  3. 如果单元格的公式引用的是外部工作簿的单元格,用第2种方法不会重算公式的值,这时候可以用Application.Calculate 来重算所有打开工作簿的公式。
    Sub QQ1722187970()
        '设置公式为手动重算
        Excel.Application.Calculation = xlCalculationManual
        
        '这里写主代码**************
        
        '重算所有打开工作簿的单元格公式
        Excel.Application.Calculate
        
        '设置公式为自动重算
        Excel.Application.Calculation = xlCalculationAutomatic
    End Sub
    

     

       

发表评论