簡體   English   中英

如果打開任何其他應用程序,Excel VBA的運行速度將非常慢

[英]Excel VBA runs very slow if any other application opened

我有一個VBA代碼的Excel報告。 如果沒有其他應用程序打開,則通常在1分鍾內運行。 如果打開Outlook,Excel報告運行將變為2分鍾。 如果打開Outlook,Chrome和Bloomberg終端應用程序,則Excel報告運行將變為6分鍾。

Excel報告VBA代碼已優化。 但是當其他應用程序打開時,它仍然運行緩慢。 打開更多的應用程序可以使excel報告更慢。

有沒有人可以幫助我解決這個問題? 提前致謝。

1)一個簡單的解決方案可以進入任務管理器,並為Excel添加更高的CPU優先級。

2)如果您的VBA在其中包含計算的Excel工作表中寫入值,則您可能需要考慮關閉自動電子表格計算功能。

可能有許多因素導致此問題:

  1. 在這些事件中觸發的任何操作:

    Worksheet_Calculate()

    Worksheet_Change()

    Worksheet_FollowHyperlink()

    Worksheet_SelectionChange()

    Workbook_SheetCalculate()

    Workbook_SheetChange()

    Workbook_SheetFollowHyperlink()

  2. 外部鏈接,以及移動或刪除了外部文件

  3. 數據庫連接(請檢查數據選項卡->連接)(可疑)

  4. 無效的命名范圍(“公式”選項卡->“名稱管理器”;是否有引用?)

  5. 數據驗證規則(數據標簽->數據驗證->清除所有)

  6. 您是從網絡位置打開文件嗎?這會使它變慢

  7. 條件格式規則? - 移除所有

  8. 有隱藏的物體嗎? (Alt + F10-全部刪除)

  9. 隱藏的格式設置(最后一次使用數據的單元格是什么?)

  10. 損壞的文件

如果文件損壞,並且可行,請嘗試從頭開始重新創建它,然后首先運行此功能

  1. 如果它沒有損壞,我要嘗試的第一件事就是禁用所有Excel

宏之前的功能:

Sub MainSubTryMe()

    'UnlockSettingsWorksheet

    FastWB          '<--- Disables all Application and Worksheet level settings

    'YOURCODE HERE

    XlResetSettings '<--- Restores all Excel settings to defaults

    'LockSettingsWorksheet

End Sub


Public Sub FastWB(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
    FastWS , opt
End Sub

Public Sub FastWS(Optional ByVal ws As Worksheet, Optional ByVal opt As Boolean = True)
    If ws Is Nothing Then
        For Each ws In Application.ThisWorkbook.Sheets
            OptimiseWS ws, opt
        Next
    Else
        OptimiseWS ws, opt
    End If
End Sub

Public Sub OptimiseWS(ByVal ws As Worksheet, ByVal opt As Boolean)
    With ws
        .DisplayPageBreaks = False
        .EnableCalculation = Not opt
        .EnableFormatConditionsCalculation = Not opt
        .EnablePivotTable = Not opt
    End With
End Sub
Public Sub XlResetSettings()    'default Excel settings
    With Application
        .Calculation = xlCalculationAutomatic
        .DisplayAlerts = True
        .DisplayStatusBar = True
        .EnableAnimations = False
        .EnableEvents = True
        .ScreenUpdating = True
        Dim ws As Worksheet
        For Each ws In Application.ThisWorkbook.Sheets
            With ws
                .DisplayPageBreaks = False
                .EnableCalculation = True
                .EnableFormatConditionsCalculation = True
                .EnablePivotTable = True
            End With
        Next
    End With
End Sub

也許這將消除一些VBA原因

您也可以在這里看看:

提高計算性能

性能和極限改進

優化性能障礙的技巧

另一個堆棧答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM