Excel 2016 VBA 速度提示

Excel 2016 的 VBA 速度很快,但並不總是足夠快。(計算機程序永遠不夠快。)繼續閱讀以發現一些可用於加速宏的編程示例。

關閉屏幕更新

執行宏時,您可以坐下來觀看宏中發生的所有屏幕操作。儘管這樣做很有幫助,但在您使宏正常工作後,它通常很煩人,並且會顯著降低宏的性能。幸運的是,您可以禁用執行宏時通常發生的屏幕更新。要關閉屏幕更新,請使用以下語句:

Application.ScreenUpdating = False

如果您希望用戶在宏執行過程中的任何時候看到發生了什麼,請使用以下語句重新打開屏幕更新:

Application.ScreenUpdating = True

為了演示速度上的差異,請執行這個簡單的宏,它用數字填充一個範圍:

子填充範圍()
  Dim r as Long, c As Long
  Dim 數字一樣長
  數字 = 0
  對於 r = 1 到 50
    對於 c = 1 到 50
      數字 = 數字 + 1
      細胞(r,c)。選擇
      Cells(r, c).Value = Number
    下一個
  下一個
結束子

您會看到每個被選中的單元格以及在單元格中輸入的值。現在在程序的開頭插入以下語句並再次執行它:

Application.ScreenUpdating = False

範圍填充得更快,並且在宏完成運行並且屏幕更新(自動)設置為 True 之前您不會看到結果。

當您調試代碼時,程序執行有時會在您沒有重新打開屏幕更新的情況下在中間某處結束。這有時會導致 Excel 的應用程序窗口變得完全沒有響應。擺脫這種凍結狀態的方法很簡單:回到 VBE,並在立即窗口中執行以下語句:

Application.ScreenUpdating = True

關閉自動計算

如果您有一個包含許多複雜公式的工作表,您可能會發現通過在執行宏時將計算模式設置為手動,可以大大加快計算速度。宏完成後,將計算模式設置回自動。

以下語句將 Excel 計算模式設置為手動:

Application.Calculation = xlCalculationManual

執行下一條語句將計算模式設置為自動:

Application.Calculation = xlCalculationAutomatic

如果您的代碼使用帶有公式結果的單元格,關閉計算意味著不會重新計算單元格,除非您明確告訴 Excel 這樣做!

消除那些討厭的警報消息

如您所知,宏可以自動執行一系列操作。在許多情況下,您可以啟動一個宏,然後在 Excel 執行其操作時在休息室閒逛。但是,某些 Excel 操作會顯示需要人工響應的消息。這些類型的消息意味著您不能在 Excel 執行宏時無人看管 — 除非您知道秘密技巧。

Excel 2016 VBA 速度提示

您可以指示 Excel 在運行宏時不顯示這些類型的警報。

避免這些警報消息的秘訣是將以下 VBA 語句插入到您的宏中:

Application.DisplayAlerts = False

Excel 對這些類型的消息執行默認操作。在刪除工作表的情況下,默認操作是刪除。如果您不確定默認操作是什麼,請執行測試以查看會發生什麼。

當該過程結束時,Excel 會自動將 DisplayAlerts 屬性重置為 True。如果您需要在程序結束前重新打開警報,請使用以下語句:

Application.DisplayAlerts = True

簡化對象引用

您可能已經知道,對對象的引用可能會變得非常冗長。例如,對 Range 對象的完全限定引用可能如下所示:

工作簿(“MyBook.xlsx”)。工作表(“Sheet1”)_
  .Range(“利率”)

如果您的宏經常使用此範圍,您可能需要使用 Set 命令創建一個對像變量。例如,以下語句將此 Range 對象分配給名為 Rate 的對像變量:

設置費率 = 工作簿(“MyBook.xlsx”)_
  .Worksheets(“Sheet1”).Range(“InterestRate”)

定義此對像變量後,您可以使用變量 Rate 而不是冗長的引用。例如,您可以更改名為 InterestRate 的單元格的值:

比率.值 = .085

這比以下語句更容易輸入:

工作簿(“MyBook.xlsx”)。工作表(“Sheet1”)。_
  範圍(“利率”)= .085

除了簡化您的編碼,使用對像變量顯著加快您的宏。

聲明變量類型

您通常不必擔心分配給變量的數據類型。Excel 在幕後為您處理所有細節。例如,如果您有一個名為 MyVar 的變量,您可以為該變量分配任何類型的數字。您甚至可以稍後在過程中為其分配一個文本字符串。

如果您希望您的過程盡可能快地執行,請告訴 Excel 將分配給您的每個變量的數據類型。這稱為聲明變量的類型。

通常,您應該使用需要最少字節數但仍可以處理分配給它的所有數據的數據類型。當 VBA 處理數據時,執行速度取決於 VBA 可以使用的字節數。換句話說,數據使用的字節越少,VBA 訪問和操作數據的速度就越快。一個例外是整數數據類型。如果速度很重要,請改用 Long 數據類型。

如果使用對像變量,則可以將該變量聲明為特定對像類型。下面是一個例子:

調暗率作為範圍
設置費率 = 工作簿(“MyBook.xlsx”)_
  .Worksheets(“Sheet1”).Range(“InterestRate”)

使用 With-End With 結構

您是否需要為一個對象設置多個屬性?如果您使用 With-End With 結構,您的代碼運行得更快。另一個好處是您的代碼可能更易於閱讀。

以下代碼不使用 With-End With:

Selection.Horizo​​ntalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.WrapText = True
選擇.方向 = 0
Selection.ShrinkToFit = False
Selection.MergeCells = False

這是相同的代碼,重寫後使用 With-End With:

有選擇
  .Horizo​​ntalAlignment = xlCenter
  .VerticalAlignment = xlCenter
  .WrapText = 真
  . 方向 = 0
  .ShrinkToFit = False
  .MergeCells = False
結束於

使用 With-End With 時,請確保每個語句都以點開頭。

Leave a Comment

HTKK 5.0.3

HTKK 5.0.3

HTKK 是稅務總局免費發布的報稅支援軟體,提供企業快速建立報稅表。了解HTKK的安裝步驟與升級功能。

有用的 Microsoft Power Query 日期函數

有用的 Microsoft Power Query 日期函數

探索 Excel 中的 Microsoft Power Query 日期函數,快速處理日期計算和操作,其中包含添加天數、提取日期部分等功能的詳細說明。

如何在 Excel 2019 中使用 3D 地圖功能

如何在 Excel 2019 中使用 3D 地圖功能

3D 地圖是 Excel 2019 中提供的令人興奮的可視化分析功能,讓你能夠在 Excel 中創建動態的 3D 地圖。探索如何利用這項技術提升數據分析的效果。

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

如何在 Excel 中使用 SKEW 和 SKEW.P 函數

了解如何在 Excel 中使用 SKEW 和 SKEW.P 函數來衡量數據分佈的偏度,這對於分析數據的對稱性至關重要。

如何為 Excel 儀表板創建時間線切片器

如何為 Excel 儀表板創建時間線切片器

時間軸切片器的工作方式與標準切片器的工作方式相同,因為它允許您使用視覺選擇機製過濾數據透視表。了解如何在 Excel 中使用時間軸切片器來高效管理日期字段。

如何在 Excel 2016 中使用 XLOOKUP 函數

如何在 Excel 2016 中使用 XLOOKUP 函數

了解如何在 Excel 2016 中使用 XLOOKUP 函數,這是一個 VLOOKUP 函數的優秀替代品,具有更強大和靈活的功能!

智能表9.1.1

智能表9.1.1

Smartsheet 是一個動態工作平台,可讓您管理專案、建立工作流程以及與團隊合作。

共享點

共享點

SharePoint 是一個基於 Web 的協作系統,它使用各種工作流程應用程式、「清單」資料庫和其他 Web 元件以及安全功能來控制業務群組的協同工作。

萬年曆1.0.38/1.0.36

萬年曆1.0.38/1.0.36

萬年日曆是一款手機上的日曆檢視應用程式,可協助您在手機上快速查看陰陽日期,從而安排您的重要工作。

微軟 Outlook 2021

微軟 Outlook 2021

Microsoft Outlook 是由 Microsoft Corporation 開發的商業和生產力應用程式。