[英]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工作表中寫入值,則您可能需要考慮關閉自動電子表格計算功能。
可能有許多因素導致此問題:
在這些事件中觸發的任何操作:
Worksheet_Calculate()
Worksheet_Change()
Worksheet_FollowHyperlink()
Worksheet_SelectionChange()
Workbook_SheetCalculate()
Workbook_SheetChange()
Workbook_SheetFollowHyperlink()
外部鏈接,以及移動或刪除了外部文件
數據庫連接(請檢查數據選項卡->連接)(可疑)
無效的命名范圍(“公式”選項卡->“名稱管理器”;是否有引用?)
數據驗證規則(數據標簽->數據驗證->清除所有)
您是從網絡位置打開文件嗎?這會使它變慢
條件格式規則? - 移除所有
有隱藏的物體嗎? (Alt + F10-全部刪除)
隱藏的格式設置(最后一次使用數據的單元格是什么?)
損壞的文件
如果文件損壞,並且可行,請嘗試從頭開始重新創建它,然后首先運行此功能
宏之前的功能:
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.