
- Excel宏教程
- Excel宏 - 首頁
- Excel宏 - 概述
- Excel宏 - 建立
- 單個工作簿中的宏
- Excel宏 - 安全性
- Excel宏 - 絕對引用
- Excel宏 - 相對引用
- Excel宏 - VBA
- Excel宏 - 理解程式碼
- 將宏分配給物件
- Excel宏 - 執行宏
- 使用VBA編輯器建立宏
- Excel宏 - 編輯
- Excel宏 - 使用者窗體
- Excel宏 - 除錯程式碼
- Excel宏 - 配置宏
- Excel宏有用資源
- Excel宏 - 快速指南
- Excel宏 - 有用資源
- Excel宏 - 討論
Excel宏 - 快速指南
Excel宏 - 概述
Excel宏是一個或一組操作,您可以錄製、命名、儲存並根據需要多次執行。建立宏時,您正在錄製滑鼠點選和鍵盤輸入。執行儲存的宏時,錄製的滑鼠點選和鍵盤輸入將按錄製時的相同順序執行。
宏可以幫助您節省在資料處理和資料報告中重複性任務的時間,這些任務需要頻繁完成。
宏和VBA
您可以使用Excel命令或Excel VBA錄製和執行宏。
VBA代表Visual Basic for Applications,它是一種簡單的程式語言,可透過Excel Visual Basic編輯器(VBE)使用,VBE可在功能區的“開發工具”選項卡中找到。錄製宏時,Excel會生成VBA程式碼。如果您只想錄製宏並執行它,則無需學習Excel VBA。但是,如果您想修改宏,則只能透過修改Excel VBA編輯器中的VBA程式碼來完成。
您將在“建立簡單的宏”章節中學習如何使用Excel命令錄製簡單的宏並執行它。您將在後面的章節中學習更多關於宏以及從Excel VBA編輯器建立和/或修改宏的內容。
個人宏工作簿
宏可以儲存在您錄製宏的同一工作簿中。在這種情況下,您只能從該工作簿執行宏,因此您應該保持該工作簿開啟。Excel為您提供了一種儲存所有宏的替代方法。它是個人宏工作簿,您可以在其中儲存宏,這使您可以從任何工作簿執行這些宏。
您將在“在一個工作簿中儲存所有宏”章節中學習有關個人宏工作簿的更多資訊。
宏安全性
宏將作為VBA程式碼儲存在Excel中。與任何其他程式碼一樣,宏程式碼也容易受到惡意程式碼的攻擊,這些惡意程式碼在您開啟工作簿時可能會執行。這對您的計算機構成威脅。Microsoft提供了宏安全功能,可幫助您保護計算機免受此類宏病毒的侵害。
您將在“宏安全性”章節中瞭解更多資訊。
絕對引用和相對引用
錄製宏時,您可以對單擊的單元格使用絕對引用或相對引用。絕對引用使您的宏在您錄製宏的相同單元格中執行。另一方面,相對引用使您的宏在活動單元格中執行。
您將在“為宏使用絕對引用”和“為宏使用相對引用”章節中學習這些內容。
VBA中的宏程式碼
即使您不瞭解Excel VBA,您也可以從Excel錄製和執行宏。但是,如果您必須修改錄製的宏或透過編寫VBA程式碼建立宏,則應該學習Excel VBA。您可以參考本教程庫中的Excel VBA教程。
但是,您應該知道如何檢視宏程式碼。您可以在“Excel VBA”章節中學習如何在Excel中訪問VBA編輯器以及VBA編輯器的不同部分。
您可以在“理解宏程式碼”章節中學習如何在Excel VBA編輯器中檢視宏程式碼以及理解宏程式碼。
將宏分配給物件
您可以將宏分配給物件,例如形狀、圖形或控制元件。然後,您可以透過單擊該物件來執行宏。您將在“將宏分配給物件”章節中學習這方面的內容。
執行宏
Excel提供了幾種執行宏的方法。您可以選擇您想要執行宏的方式。您將在“執行宏”章節中瞭解這些不同的執行宏的可能方法。
使用VBA編輯器建立宏
如果您決定編寫宏程式碼,您可以在“使用VBA編輯器建立宏”章節中學習。但是,前提是您應該具備Excel VBA知識。
編輯宏
您可以在Excel VBA編輯器中修改宏程式碼。如果您想進行廣泛的更改,則應該具備Excel VBA知識。但是,如果您只想對程式碼進行小的更改,或者如果要將VBA程式碼從錄製的宏複製到另一個宏,您可以參考“編輯宏”章節。
您可以重新命名宏,甚至刪除它。您也將在同一章節中學習這方面的內容。
使用者窗體
窗體通常用於收集所需資訊。它將不言自明,使任務變得簡單。從Excel VBA編輯器建立的Excel使用者窗體具有相同的用途,提供熟悉的選項,例如文字框、複選框、單選按鈕、列表框、組合框、捲軸等作為控制元件。
您將在“使用者窗體”章節中學習如何建立使用者窗體以及如何使用不同的控制元件。
除錯宏程式碼
有時,宏可能無法按預期執行。您可能已經建立了宏,或者您可能正在使用其他人提供的宏。您可以像除錯任何其他程式碼一樣除錯宏程式碼,以發現缺陷並糾正它們。您將在“除錯宏程式碼”章節中學習這方面的內容。
配置宏以在開啟工作簿時執行
您可以使宏在開啟工作簿時自動執行。您可以透過建立Auto_Run宏或編寫工作簿開啟事件的VBA程式碼來實現此目的。您將在“配置宏以在開啟工作簿時執行”章節中學習這方面的內容。
Excel宏 - 建立
您可以通過錄制擊鍵和滑鼠點選、為宏命名以及指定如何儲存宏來使用Excel命令建立宏。這樣錄製的宏可以使用Excel命令執行。
假設您必須重複收集以下格式的某些結果:

無需每次都建立表格,您可以使用宏來完成此操作。
錄製宏
要錄製宏,請執行以下操作:
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”組中的“宏”。
- 從下拉列表中選擇“錄製宏”。

將出現“錄製宏”對話方塊。
在“宏名稱”框中鍵入“MyFirstMacro”。
在“說明”框中鍵入“一個簡單的宏”,然後單擊“確定”。

請記住,您現在執行的任何擊鍵和滑鼠點選都將被記錄。
單擊單元格B2。
建立表格。
單擊工作表中的不同單元格。
單擊功能區上的“檢視”選項卡。
單擊“宏”。
從下拉列表中選擇“停止錄製”。

您的宏錄製已完成。
第一步單擊特定單元格非常重要,因為它指示宏必須在何處開始放置錄製的步驟。完成錄製後,您必須單擊“停止錄製”以避免錄製不必要的步驟。
執行宏
您可以根據需要多次執行錄製的宏。要執行宏,請執行以下操作:
- 單擊新的工作表。
記下活動單元格。在我們的例子中,它是A1。
單擊功能區上的“檢視”選項卡。
單擊“宏”。
從下拉列表中選擇“檢視宏”。

將出現“宏”對話方塊。

宏列表中只顯示您錄製的宏。
單擊“宏”對話方塊中的宏名稱“MyFirstMacro”。您在錄製宏時鍵入的說明將顯示出來。宏說明允許您識別您錄製宏的用途。
單擊“執行”按鈕。您在錄製宏時建立的相同表格將在短短一秒鐘內出現。

您已經發現了Excel為您提供的節省在平凡任務上花費時間的魔法棒。您將觀察到以下內容:
儘管執行宏之前的活動單元格是A1,但表格放置在單元格B2中,因為您已將其錄製。
此外,活動單元格變為E2,因為您在停止錄製之前單擊了該單元格。
您可以在多個工作表中執行宏,在執行宏之前使用不同的活動單元格,並觀察與上述相同的條件。只需記下這一點,您稍後將在本教程中瞭解為什麼會發生這種情況。
您還可以進行宏錄製,該錄製將錄製的步驟放置在活動單元格中。隨著您在教程中的學習進度,您將學習如何執行此操作。
儲存宏
您可能想知道如何儲存建立的宏。在此上下文中,您需要了解:
- 儲存宏
- 儲存啟用宏的檔案
建立宏時,您可以選擇儲存該特定宏的位置。您可以在“錄製宏”對話方塊中執行此操作。
單擊“將宏儲存在”框。以下三個選項可用:
- 此工作簿。
- 新工作簿。
- 個人宏工作簿

此工作簿
這是預設選項。宏將儲存在您建立宏的當前工作簿中。
新工作簿
雖然此選項可用,但不推薦使用。您將要求Excel將宏儲存在不同的新工作簿中,這大多是不必要的。
個人宏工作簿
如果您建立了在工作簿中使用的多個宏,“個人宏工作簿”為您提供了一個將所有宏儲存在一個位置的功能。您將在下一章中瞭解有關此選項的更多資訊。
儲存啟用宏的檔案
如果您選擇“此工作簿”作為儲存宏的選項,則需要將工作簿與宏一起儲存。
嘗試儲存工作簿。預設情況下,您將要求Excel將工作簿儲存為.xls檔案。Excel顯示一條訊息,指出Excel功能VB專案無法儲存在無宏的工作簿中,如下所示。

注意 − 如果您點選“是”,Excel 將把您的工作簿儲存為無宏的 .xls 檔案,並且您使用“此工作簿”選項儲存的宏將不會被儲存。為避免這種情況,Excel 提供了一個選項,可以將您的工作簿儲存為啟用宏的工作簿,該工作簿將具有 .xlsm 副檔名。
- 點選警告訊息框中的“否”。
- 在“儲存型別”中選擇“Excel 啟用宏的工作簿 (*.xlsm)”。
- 點選“儲存”。

您將在本教程後面的章節中瞭解更多相關內容。
Excel 宏 - 單個工作簿中的宏
Excel 提供了一個功能,可以將所有宏儲存在一個工作簿中。該工作簿稱為“個人宏工作簿 - Personal.xlsb”。它是一個隱藏的工作簿,儲存在您的計算機上,每次開啟 Excel 時都會開啟。這使您可以從任何工作簿執行您的宏。每臺計算機只有一個個人宏工作簿,您不能在計算機之間共享它。您可以從計算機上的任何工作簿檢視和執行個人宏工作簿中的宏。
在個人宏工作簿中儲存宏
您可以透過在錄製宏時將其選擇為儲存選項,將宏儲存到個人宏工作簿中。
在“將宏儲存在”類別下的下拉列表中選擇“個人宏工作簿”。

- 錄製您的第二個宏。
- 在“錄製宏”對話方塊中提供宏詳細資訊,如下所示。
- 點選“確定”。

您的錄製開始。建立一個如下所示的表格。

停止錄製。
單擊功能區上的“檢視”選項卡。
單擊“宏”。
從下拉列表中選擇“檢視宏”。將出現“宏”對話方塊。

宏名稱字首為 PERSONAL.XLSB!,表示宏位於個人宏工作簿中。
儲存您的工作簿。由於宏不在您的工作簿中,它將儲存為 .xls 檔案,然後關閉 Excel。
您將收到以下有關儲存對個人宏工作簿更改的訊息:

點選“儲存”按鈕。您的宏將儲存在計算機上的 Personal.xlsb 檔案中。
隱藏/顯示個人宏工作簿
個人宏工作簿預設情況下是隱藏的。當您啟動 Excel 時,個人宏工作簿會被載入,但您看不到它,因為它已隱藏。您可以按照以下步驟取消隱藏它:
單擊功能區上的“檢視”選項卡。
點選“視窗”組中的“取消隱藏”。

將出現“取消隱藏”對話方塊。

在“取消隱藏工作簿”框中出現 PERSONAL.XLSB,然後點選“確定”。

現在您可以檢視儲存在個人宏工作簿中的宏了。
要隱藏個人宏工作簿,請執行以下操作:
- 點選個人宏工作簿。
- 單擊功能區上的“檢視”選項卡。
- 點選功能區上的“隱藏”。
執行儲存在個人宏工作簿中的宏
您可以從任何工作簿執行儲存在個人宏工作簿中的宏。要執行宏,個人宏工作簿是隱藏還是顯示都沒有區別。
- 點選“檢視宏”。
- 從宏列表中選擇宏名稱。
- 點選“執行”按鈕。宏將執行。
在個人宏工作簿中新增/刪除宏
您可以透過在錄製宏時為“將宏儲存在”選項選擇它來在個人宏工作簿中新增更多宏,正如您前面所看到的那樣。
您可以按照以下步驟刪除個人宏工作簿中的宏:
- 確保個人宏工作簿未隱藏。
- 在“檢視宏”對話方塊中點選宏名稱。
- 點選“刪除”按鈕。
如果個人宏工作簿已隱藏,您將收到一條訊息,提示“無法編輯隱藏工作簿上的宏”。

取消隱藏個人宏工作簿並刪除選定的宏。
宏將不會出現在宏列表中。但是,當您建立一個新宏並將其儲存到您的個人工作簿中,或刪除其中包含的任何宏時,系統將提示您儲存個人工作簿,就像您第一次儲存它一樣。
Excel宏 - 安全性
您在 Excel 中建立的宏將使用 VBA(Visual Basic for Applications)程式語言編寫。您將在後面的章節中學習有關 Excel 宏程式碼的知識。您知道,當存在可執行程式碼時,就會存在病毒的威脅。宏也容易受到病毒的攻擊。
什麼是宏病毒?
編寫宏的 Excel VBA 可以訪問大多數 Windows 系統呼叫,並在開啟工作簿時自動執行。因此,存在一個潛在的威脅,即病毒被編寫為宏並隱藏在 Excel 中,這些病毒在開啟工作簿時會被執行。因此,Excel 宏在許多方面都可能對您的計算機非常危險。但是,Microsoft 已經採取了適當的措施來保護工作簿免受宏病毒的侵害。
Microsoft 推出了宏安全功能,以便您可以識別哪些宏是可信的,哪些不可信。
啟用宏的 Excel 工作簿
最重要的 Excel 宏安全功能是 - 副檔名。
預設情況下,Excel 工作簿將儲存為 .xlsx 副檔名。您始終可以信任 .xlsx 副檔名的工作簿,因為它們無法儲存宏,也不會帶來任何威脅。
包含宏的 Excel 工作簿將儲存為 .xlsm 副檔名。它們被稱為啟用宏的 Excel 工作簿。在開啟此類工作簿之前,您應確保其中包含的宏不是惡意軟體。為此,您必須確保您可以信任此型別工作簿的來源。
信任啟用宏的工作簿的方法
Excel 提供三種信任啟用宏的工作簿的方法。
將啟用宏的工作簿放在受信任的資料夾中
檢查宏是否已數字簽名
在開啟啟用宏的工作簿之前啟用安全警報訊息
將啟用宏的工作簿放在受信任的資料夾中
這是管理宏安全最簡單也是最好的方法。Excel 允許您將資料夾指定為受信任位置。將所有啟用宏的工作簿放在該受信任資料夾中。您可以開啟儲存到此位置的啟用宏的工作簿,而無需警告或限制。
檢查宏是否已數字簽名
數字簽名確認作者的身份。您可以配置 Excel 以執行來自受信任人員的數字簽名宏,而無需警告或限制。如果自作者簽名後工作簿已被更改,Excel 還將警告收件人。
在開啟啟用宏的工作簿之前啟用安全警報訊息
當您開啟工作簿時,Excel 會警告您該工作簿包含宏,並詢問您是否要啟用它們。如果工作簿的來源可靠,您可以點選“啟用內容”按鈕。

您可以在 Excel 選項中的信任中心設定這三個選項中的任何一個。
如果您在組織中工作,系統管理員可能已更改預設設定,以防止任何人更改設定。Microsoft 建議您不要更改信任中心的安全設定,因為後果可能是資料丟失、資料盜竊或計算機或網路的安全漏洞。
但是,您可以瞭解以下部分中的宏安全設定,並檢查是否需要更改它們。您必須根據上下文和您對檔案來源的瞭解,憑直覺決定這些選項中的任何一個。
信任中心中的宏安全設定
宏設定位於 Excel 選項中的信任中心中。要訪問信任中心,請執行以下操作:
點選功能區上的“檔案”選項卡。
點選“選項”。將出現“Excel 選項”對話方塊。
點選左側窗格中的“信任中心”。
點選“Microsoft Excel 信任中心”下的“信任中心設定”按鈕。

將出現“信任中心”對話方塊。

您將在左側窗格中的 Excel 信任中心看到各種可用選項。您將在以下部分了解與 Excel 宏相關的選項。
宏設定
宏設定位於信任中心中。

在宏設定下,有四個選項可用。
停用所有宏而不發出通知 − 如果選擇此選項,則停用宏和有關宏的安全警報。
停用所有宏併發出通知 − 宏被停用,但如果存在宏,則會顯示安全警報。您可以逐個啟用宏。
僅停用所有宏,但數字簽名宏除外 − 宏被停用,但如果存在宏,則會顯示安全警報。但是,如果宏已由受信任的釋出者進行數字簽名,則如果信任釋出者,宏將執行。如果您不信任釋出者,系統會通知您啟用已簽名的宏並信任釋出者。
啟用所有宏(不推薦,易受宏病毒攻擊) − 如果選擇此選項,則所有宏都將執行。此設定使您的計算機容易受到潛在惡意程式碼的攻擊。
您在“開發工具”宏設定下還有一個帶複選框的其他安全選項。
信任對 VBA 專案物件模型的訪問。
此選項允許從自動化客戶端以程式設計方式訪問 Visual Basic for Applications (VBA) 物件模型。
此安全選項適用於編寫用於自動化 Office 程式並操縱 VBA 環境和物件模型的程式碼。
這是一個按使用者和按應用程式設定,預設情況下拒絕訪問,從而阻止未經授權的程式構建有害的自複製程式碼。
要使自動化客戶端能夠訪問 VBA 物件模型,執行程式碼的使用者必須授予訪問許可權。要開啟訪問許可權,請選擇複選框。
定義受信任位置
如果您認為啟用宏的工作簿來自可靠的來源,最好將檔案移動到 Excel 識別的受信任位置,而不是將預設信任中心設定更改為安全性較低的宏安全設定。
您可以在信任中心找到受信任的資料夾設定。
在信任中心對話方塊中點選“受信任的位置”。Microsoft Office 設定的受信任位置將顯示在右側。

您可以新增新位置、刪除現有位置和修改現有位置。Microsoft Office 將把已識別的受信任位置視為開啟檔案的可靠位置。但是,如果您新增或修改位置,請確保該位置安全。
您還可以找到 Office 不推薦的選項,例如網際網路上的位置。
來自可靠來源的數字簽名宏
Microsoft 提供了一個選項來容納數字簽名宏。但是,即使宏已數字簽名,您也需要確保它來自受信任的釋出者。
您將在信任中心找到受信任的釋出者。
在信任中心對話方塊中點選“受信任的釋出者”。右側將出現證書列表,其中包含詳細資訊 - “頒發給”、“頒發者”和“到期日期”。
選擇一個證書並點選“檢視”。

將顯示證書資訊。
正如您在本節前面所瞭解到的那樣,您可以設定一個選項,只有當您信任釋出者時才執行數字簽名的宏。如果您不信任釋出者,系統會通知您啟用已簽名的宏並信任釋出者。
使用警告訊息
當您開啟的檔案中存在宏時,訊息欄會顯示安全警報。帶有盾牌圖示的黃色訊息欄會警告您宏已被停用。

如果您知道宏來自可靠的來源,則可以點選訊息欄上的“啟用內容”按鈕來啟用宏。
如果您不希望安全警報,可以停用訊息欄選項。另一方面,您可以啟用訊息欄選項以提高安全性。
啟用/停用訊息欄上的安全警報
您可以按照以下步驟啟用/停用帶有訊息欄的安全警報:
- 點選功能區上的“檔案”選項卡。
- 點選“選項”。將出現“Excel 選項”對話方塊。
- 點選“信任中心”。
- 點選“信任中心設定”按鈕。
- 點選“訊息欄”。
將顯示所有 Office 應用程式的訊息欄設定。

在“顯示訊息欄”下有兩個選項。
選項 1 − 當活動內容(例如宏)被阻止時,在所有活動應用程式中顯示訊息欄。
這是預設選項。當潛在的不安全內容被停用時,訊息欄會出現。
如果您在信任中心宏設定中選擇了“在不通知的情況下停用所有宏”,則此選項不會被選中,並且訊息欄不會出現。

選項 2 − 從不顯示有關被阻止內容的資訊。
如果選擇此選項,它將停用訊息欄,並且無論信任中心中的任何安全設定如何,都不會出現有關安全問題的警報。

Excel宏 - 絕對引用
Excel 宏可以使用絕對引用或相對引用來錄製。使用絕對引用錄製的宏將錄製的步驟精確地放置在其錄製單元格中,而不管活動單元格如何。另一方面,使用相對引用錄製的宏可以在工作表的不同部分執行錄製的任務。
本章將學習宏的絕對引用。您將在下一章學習相對引用。
假設您每天結束時都必須提交一份關於團隊工作的報告,格式如下:

現在,報告應放置在單元格 B2 中,並應採用給定的格式。
填寫後的示例報告如下所示:

除了以下單元格中的資料外,您為專案生成的每個報告中的資訊都是恆定的。
- C3 – 報告日期。
- C13 – 今日完成的任務數量。
- C14 – 完成的任務總數。
- C15 – 工作完成百分比。
在這些單元格中,您可以在 C3(報告日期)中使用 Excel 函式 = TODAY () 來放置您的報告日期,無需您干預。此外,在單元格 C15 中,您可以使用公式 C14/C12,並將單元格 C15 格式化為百分比,以便 Excel 為您計算“工作完成百分比”。
這樣一來,您只需要填寫兩個單元格——C13 和 C14。因此,每次建立報告時,最好有其餘單元格的資訊。這為您節省了時間,您可以只用幾分鐘時間完成日常的報告工作。
現在,假設您必須為三個專案傳送此類報告。您可以想象您可以節省多少時間,並承擔當天更多具有挑戰性的工作,當然也能獲得管理層的讚揚。
您可以透過為每個項目錄制一個宏並在日常工作中執行它們來實現這一點,從而在幾分鐘內生成所需的報告。但是,每次執行宏時,報告都應按上述方式顯示在工作表上,而不管活動單元格如何。為此,您必須使用絕對引用。
確保使用絕對引用
要使用絕對引用錄製宏,您必須確保從步驟必須開始的單元格開始錄製宏。這意味著,在上一節給出的示例中,您需要執行以下操作:
- 開始錄製宏。
- 建立一個新的工作表。
- 單擊新工作表中 B2 以外的任何單元格。
- 單擊單元格B2。
- 繼續錄製宏。
這將為每個新報告建立一個新的工作表,並在每次執行宏時將報告格式放置在單元格 B2 中。
注意 − 以上前三個步驟至關重要。
如果您不建立新的工作表,則執行宏時,它會將您錄製的內容放置在同一工作表的同一位置。這不是您想要的。您需要在不同的工作表上擁有每個報告。
如果您在錄製開始時沒有單擊其他單元格,即使活動單元格是 B2,Excel 也會將錄製的步驟放在活動單元格中。執行宏時,它會根據活動單元格將錄製的報告格式放置在工作表的任何部分。透過顯式單擊 B2 以外的單元格,然後單擊單元格 B2,您可以告訴錄製器始終將宏步驟放在單元格 B2 中。
錄製宏
您可以使用功能區“檢視”選項卡→“宏”下的“錄製宏”命令開始錄製宏。您也可以單擊 Excel 工作列左側的“開始錄製宏”按鈕。

開始錄製宏。“錄製宏”對話方塊將出現。
給出一個有意義的名稱來標識宏為特定專案的報告。
在“將宏儲存在”下選擇“此工作簿”,因為您將僅從此特定工作簿生成報告。
為您的宏提供說明,然後單擊“確定”。

您的宏開始錄製。
建立一個新的工作表。這確保您的新報告將位於新的工作表上。
單擊新工作表中 B2 以外的任何單元格。
單擊單元格 B2。這確保宏始終將錄製的步驟放在 B2 中。
建立報告的格式。
填寫專案報告的靜態資訊。
在 C3 中放置 = TODAY (),在 C15 單元格中放置 = C14/C12。
設定日期單元格的格式。
停止錄製宏。

您可以使用功能區“檢視”選項卡→“宏”下的“停止錄製”命令停止錄製宏,也可以單擊 Excel 工作列左側的“停止錄製宏”按鈕。

您的專案報告宏已準備就緒。將工作簿另存為宏啟用工作簿(副檔名為 .xlsm)。
執行宏
您只需執行宏即可在幾秒鐘內生成任意數量的報告。
- 單擊功能區上的“檢視”按鈕。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。將出現“宏”對話方塊。
- 單擊宏 Report_ProjectXYZ。
- 單擊“執行”按鈕。
將在您的工作簿中建立一個新的工作表,並在其中的單元格 B2 中建立報告模板。
Excel宏 - 相對引用
相對引用宏記錄活動單元格的偏移量。如果您必須在工作表的各個位置重複步驟,此類宏將非常有用。
假設您需要分析從 280 個選區收集的選民資料。對於每個選區,收集以下詳細資訊:
- 選區名稱。
- 選區總人口。
- 選區選民人數。
- 男性選民人數,以及
- 女性選民人數。
資料以如下所示的工作表提供給您。

無法按上述格式分析資料。因此,請按如下所示的表格排列資料。

如果您嘗試按上述格式排列給定的資料:
排列來自 280 個選區的資料需要大量時間
容易出錯
這成為一項枯燥的任務,使您無法專注於技術方面
解決方案是錄製一個宏,以便您可以在幾秒鐘內完成任務。宏需要使用相對引用,因為您在排列資料時會向下移動行。
使用相對引用
為了讓宏錄製器知道它必須使用相對引用,請執行以下操作:
單擊功能區上的“檢視”選項卡。
單擊“宏”。
單擊“使用相對引用”。

準備資料格式
排列上述資料的第一個步驟是在帶有標題的表格中定義資料格式。
建立如下所示的標題行。

錄製宏
按如下方式錄製宏:
單擊“錄製宏”。
為宏指定一個有意義的名稱,例如 DataArrange。
在單元格 B4 中鍵入 = row ()- 3。這是因為序號是當前行號減去上面的 3 行。
剪下單元格 B5、B6、B7、B8 和 B9,並將其分別貼上到單元格 C4 到 C8 中。
現在單擊單元格 B5。您的表格如下所示。

第一組資料排列在表格的第一行。刪除行 B6 – B11 並單擊單元格 B5。

您可以看到活動單元格是 B5,下一組資料將放在此處。
停止錄製宏。您的資料排列宏已準備就緒。
執行宏
您需要重複執行宏才能完成表格中資料的排列,如下所示。
活動單元格是 B5。執行宏。第二組資料將排列在表格的第二行,活動單元格將變為 B6。

再次執行宏。第三組資料將排列在表格的第三行,活動單元格將變為 B7。

每次執行宏時,活動單元格都會前進到下一行,從而促進了在適當位置重複錄製的步驟。這是因為宏中使用了相對引用。
執行宏,直到所有 280 組資料都排列到表格中的 280 行中。此過程需要幾秒鐘,並且由於步驟是自動化的,因此整個練習都不會出錯。
Excel宏 - VBA
Excel 將宏儲存為 Excel VBA(Visual Basic for Applications)程式碼。錄製宏後,您可以檢視生成的程式碼、修改它、複製其一部分等。如果您熟悉使用 VBA 程式設計,甚至可以自己編寫宏程式碼。
您將在“使用 VBA 編輯器建立宏”一章中學習如何透過編寫 VBA 程式碼來建立宏。您將在“編輯宏”一章中學習如何透過編輯 VBA 程式碼來修改宏。您將在本章學習 Excel VBA 功能。
功能區上的“開發工具”選項卡
您可以從功能區上的“開發工具”選項卡訪問 VBA 中的宏程式碼。

如果您在功能區上找不到“開發工具”選項卡,則需要按如下方式新增它:
右鍵單擊功能區。
從下拉列表中選擇“自定義功能區”。

將出現“Excel 選項”對話方塊。
從“自定義功能區”下拉列表中選擇“主選項卡”。
選中“主選項卡”列表中的“開發工具”框,然後單擊“確定”。“開發工具”選項卡將出現。

宏的開發工具命令
您需要了解“開發工具”選項卡下用於宏的命令。
單擊功能區上的“開發工具”選項卡。“程式碼”組中提供以下命令:
- Visual Basic
- 宏
- 錄製宏
- 使用相對引用
- 宏安全性

“Visual Basic”命令用於在 Excel 中開啟 VBA 編輯器,“宏”命令用於檢視、執行和刪除宏。
您已經在前面的章節中學習了 VBA 編輯器以外的命令。
VBA 編輯器
VBA 編輯器或 VBE 是 Excel 中 VBA 的開發平臺。
開啟本教程前面章節“建立簡單的宏”中儲存的工作簿 MyFirstMacro.xlsm。
您可以透過以下兩種方式之一開啟 VBE:
選項 1 − 單擊功能區“開發工具”選項卡“程式碼”組中的“Visual Basic”。

選項 2 − 單擊單擊“檢視”選項卡→“宏”→“檢視宏”時出現的“宏”對話方塊中的“編輯”。

VBE 將在新視窗中出現。

您的 Excel 宏啟用工作簿名稱將以字首“Microsoft Visual Basic for Applications”出現。
在VBE中,您將找到以下內容:
- 專案資源管理器。
- 屬性視窗。
- 包含程式碼的模組視窗。
專案資源管理器
專案資源管理器是您查詢VBA專案名稱的地方。在一個專案下,您會找到工作表名稱和模組名稱。當您單擊模組名稱時,相應的程式碼會出現在右側的視窗中。
屬性視窗
屬性是VBA物件的引數。當您擁有一個物件,例如命令按鈕時,它的屬性將顯示在屬性視窗中。
包含程式碼的模組視窗
宏的程式碼將儲存在VBA中的模組中。當您選擇一個宏並單擊“編輯”時,宏的程式碼將顯示在相應的模組視窗中。
Excel宏 - 理解程式碼
當您錄製宏時,Excel將其儲存為VBA程式碼。您可以在VBA編輯器中檢視此程式碼。如果您擁有大量的Excel VBA知識,您可以理解並修改此程式碼。您可以參考本教程庫中的Excel VBA教程來掌握這門語言。
但是,您仍然可以在Excel VBA編輯器中檢視宏程式碼,並將其與您在宏中記錄的步驟進行匹配。在本教程中,您將學習如何檢視和理解您建立的第一個宏——MyFirstMacro的程式碼。
在VBA編輯器中檢視宏程式碼
要檢視宏程式碼,請執行以下操作:
- 開啟儲存宏的工作簿。
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。

將出現“宏”對話方塊。
- 在宏列表中單擊MyFirstMacro。
- 單擊“編輯”按鈕。

VBA編輯器將開啟,並顯示MyFirstMacro宏的程式碼。

理解錄製的動作作為程式碼的一部分
您可以瀏覽宏程式碼,並將它們對映到您記錄的步驟。
- 開始閱讀程式碼。
- 將程式碼對映到記錄的步驟。

向下滾動程式碼以檢視更多程式碼。或者,您可以放大程式碼視窗。

觀察程式碼很簡單。如果您學習Excel VBA,您可以透過在VBA編輯器中編寫程式碼來建立宏。
您將在“使用VBA編輯器建立宏”一章中學習如何編寫VBA程式碼來建立宏。
Excel宏——將宏分配給物件
假設您建立了一個需要多次執行的宏。例如,您為絕對引用和相對引用建立的宏。那麼,如果您能夠透過單擊滑鼠來執行宏,將會很容易。您可以透過將宏分配給物件(例如形狀、圖形或控制元件)來實現此目的。
在本節中,您將學習如何在工作簿中包含物件並將宏分配給它。
回顧一下您使用相對引用建立的宏。該宏將一列中給定的資料排列到表格中,以方便資料分析。

將宏分配給形狀
您可以在工作表中插入一個有意義的形狀,並帶有自解釋性文字,單擊該形狀時將執行分配給它的宏。
單擊功能區上的**插入**選項卡。
單擊“插圖”組中的**形狀**。
從下拉列表中選擇任何現成的形狀。例如,流程圖形狀——準備,因為您正在準備資料。

繪製形狀並對其進行格式化。

右鍵單擊形狀,然後從下拉列表中選擇**編輯文字**。
在形狀內鍵入文字 - 執行宏。
設定文字格式。

- 右鍵單擊形狀。
- 從下拉列表中選擇“指定宏”。

將出現“指定宏”對話方塊。單擊宏名稱,即RelativeMacro,然後單擊“確定”。

宏已分配給形狀。
單擊您必須執行宏的單元格,例如B4。
將游標(指標)移動到形狀上。游標(指標)將變為手指形狀。

現在單擊形狀。宏將執行。只需重複單擊滑鼠即可多次執行宏,您就可以在幾秒鐘內完成將資料排列到表格中的任務。
將宏分配給圖形
您可以在工作表中插入圖形併為其分配宏。可以選擇圖形來視覺化您的宏。例如,您可以使用表格圖形來表示宏將資料排列到表格中。
- 單擊功能區上的“插入”選項卡。
- 單擊“插圖”組中的“圖片”。
- 選擇包含圖形的檔案。

其餘步驟與上一節中給出的形狀步驟相同。
將宏分配給控制元件
插入VBA控制元件併為其分配宏可以使您的工作看起來更專業。您可以從功能區上的“開發工具”選項卡插入VBA控制元件。
單擊功能區上的**開發工具**選項卡。
單擊“控制元件”組中的**插入**。

從下拉列表中選擇**窗體控制元件**下的“按鈕”圖示,如下面的螢幕截圖所示:

單擊工作表上要插入按鈕控制元件的單元格。“指定宏”對話方塊將出現。
單擊宏名稱,然後單擊“確定”。

將插入具有已分配宏的控制元件按鈕。

- 右鍵單擊按鈕。
- 單擊“編輯文字”。
- 鍵入 - 執行宏。
- 設定文字格式並調整按鈕大小。

您可以透過反覆單擊按鈕來執行宏任意多次。
使用窗體控制元件是與使用者互動的一種簡單有效的方法。您將在“與使用者互動”一章中學習更多相關內容。
Excel宏 - 執行宏
在工作簿中執行宏的方法有多種。宏將儲存在您啟用了宏的工作簿中或您個人宏工作簿中,您可以像之前學習的那樣從任何工作簿訪問它。
您可以透過以下方式執行宏:
- 從“檢視”選項卡執行宏
- 按Ctrl鍵加快捷鍵執行宏
- 單擊快速訪問工具欄上的按鈕執行宏
- 單擊功能區上自定義組中的按鈕執行宏
- 單擊圖形物件執行宏
- 從“開發工具”選項卡執行宏
- 從VBA編輯器執行宏
從“檢視”選項卡執行宏
您已經學習瞭如何從功能區上的“檢視”選項卡執行宏。快速回顧一下:
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。

將出現“宏”對話方塊。
- 單擊宏名稱。
- 單擊“執行”按鈕。

使用快捷鍵執行宏
您可以為宏分配快捷鍵(Ctrl + 鍵)。您可以在“建立宏”對話方塊中錄製宏時執行此操作。否則,您可以稍後在“宏選項”對話方塊中新增它。
錄製宏時新增快捷鍵
- 單擊“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“錄製宏”。
將出現“建立宏”對話方塊。
- 鍵入宏名稱
- 在快捷鍵下Ctrl + 旁邊的框中鍵入一個字母,例如q。

在宏選項中新增快捷鍵
- 單擊“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。
將出現“宏”對話方塊。
- 選擇宏名稱。
- 單擊“選項”按鈕。

將出現“宏選項”對話方塊。在快捷鍵下Ctrl + 旁邊的框中鍵入一個字母,例如q。單擊“確定”。

要使用快捷鍵執行宏,請同時按Ctrl鍵和q鍵。宏將執行。
**注意** - 您可以為宏的快捷鍵使用任何小寫或大寫字母。如果您使用任何Ctrl + 字母組合作為Excel快捷鍵,您將覆蓋它。例如Ctrl+C、Ctrl+V、Ctrl+X等。因此,在選擇字母時請謹慎。
透過快速訪問工具欄執行宏
您可以將宏按鈕新增到快速訪問工具欄,並透過單擊它來執行宏。當您將宏儲存在個人宏工作簿中時,此選項將非常有用。新增的按鈕將出現在您開啟的任何工作簿的快速訪問工具欄上,從而使您更容易執行宏。
假設您的個人宏工作簿中有一個名為MyMacro的宏。
要將宏按鈕新增到快速訪問工具欄,請執行以下操作:
右鍵單擊快速訪問工具欄。
從下拉列表中選擇**自定義快速訪問工具欄**。

將出現“Excel選項”對話方塊。在“從以下位置選擇命令”下的類別中選擇“宏”。

宏列表將出現在宏下。
- 單擊PERSONAL.XLSB!MyMacro。
- 單擊“新增”按鈕。

宏名稱將出現在右側,帶有宏按鈕影像。
要更改宏按鈕影像,請執行以下步驟:
- 單擊右側框中的宏名稱。
- 單擊“修改”按鈕。

將出現**修改按鈕**對話方塊。選擇一個符號將其設定為按鈕的圖示。

修改在您將指標放在快速訪問工具欄上的按鈕影像上時顯示的顯示名稱,例如,對於此示例,將其修改為“執行MyMacro”。單擊“確定”。

宏名稱和圖示符號將在右側窗格中更改。單擊“確定”。

宏按鈕將出現在快速訪問工具欄上,並且當您將指標放在按鈕上時,將顯示宏顯示名稱。

要執行宏,只需單擊快速訪問工具欄上的宏按鈕即可。
在自定義組中執行宏
您可以在功能區上新增一個自定義組和一個自定義按鈕,並將您的宏分配給該按鈕。
- 右鍵單擊功能區。
- 從下拉列表中選擇“自定義功能區”。

將出現“Excel 選項”對話方塊。
- 在“自定義功能區”下選擇“主選項卡”。
- 單擊“新建選項卡”。

“新建選項卡(自定義)”將出現在“主選項卡”列表中。
- 單擊“新建選項卡(自定義)”。
- 單擊“新建組”按鈕。
“新建組(自定義)”將出現在“新建選項卡(自定義)”下。
- 單擊“新建選項卡(自定義)”。
- 單擊“重新命名”按鈕。

將出現“重新命名”對話方塊。鍵入要在功能區上顯示的主選項卡的名稱,例如 - 我的宏,然後單擊“確定”。

注意 − 功能區上的所有主選項卡均為大寫字母。您可以自行決定使用大寫或小寫字母。我選擇使用小寫字母並大寫單詞首字母,以便使其在標準選項卡中脫穎而出。
新的選項卡名稱更改為“我的宏 (自定義)”。
- 單擊“新建組 (自定義)”。
- 單擊“重新命名”按鈕。

將出現重新命名對話方塊。在“顯示名稱”對話方塊中鍵入組名稱,然後單擊“確定”。

新的組名稱更改為“個人宏 (自定義)”。
單擊左側窗格中從下列命令中選擇下的“宏”。

- 從宏列表中選擇您的宏名稱,例如 – MyFirstMacro。
- 單擊“新增”按鈕。

宏將新增到“個人宏 (自定義)”組下。

- 單擊列表中的“我的宏 (自定義)”。
- 單擊箭頭可向上或向下移動選項卡。

選項卡在主選項卡列表中的位置決定了它在功能區中的放置位置。單擊“確定”。

您的自定義選項卡 – “我的宏”將顯示在功能區上。
單擊選項卡 - “我的宏”。“個人宏”組將顯示在功能區上。“MyFirstMacro”將顯示在“個人宏”組中。要執行宏,只需單擊“個人宏”組中的“MyFirstMacro”即可。

透過單擊物件執行宏
您可以在工作表中插入物件(例如形狀、圖形或 VBA 控制元件)併為其分配宏。要執行宏,只需單擊該物件即可。
有關使用物件執行宏的詳細資訊,請參閱章節 – 將宏分配給物件。
從“開發工具”選項卡執行宏
您可以從“開發工具”選項卡執行宏。
- 單擊功能區上的“開發工具”選項卡。
- 單擊“宏”。

將出現“宏”對話方塊。單擊宏名稱,然後單擊“執行”。

從VBA編輯器執行宏
您可以按如下方式從 VBA 編輯器執行宏:
- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。

使用VBA編輯器建立宏
您可以透過在 VBA 編輯器中編寫程式碼來建立宏。在本節中,您將學習在何處以及如何編寫宏程式碼。
VBA 物件和模組
在開始編寫宏程式碼之前,請了解 VBA 物件和模組。
- 開啟包含您的第一個宏的啟用宏的工作簿。
- 單擊功能區上的“開發工具”選項卡。
- 單擊“程式碼”組中的“Visual Basic”。

VBA 編輯器視窗將開啟。

您將在“專案資源管理器”視窗中看到以下內容:
您的啟用宏的工作簿 – MyFirstMacro.xlsm 將顯示為 VBA 專案。
所有工作表和工作簿都將作為 Microsoft Excel 物件顯示在專案下。
Module1 顯示在“模組”下。您的宏程式碼位於此處。
單擊 Module1。
單擊功能區上的“檢視”選項卡。
從下拉列表中選擇“程式碼”。

您的宏程式碼將顯示。

透過編碼建立宏
接下來,在同一工作簿中建立第二個宏 – 這次透過編寫 VBA 程式碼。
您可以分兩個步驟執行此操作:
插入命令按鈕。
編寫程式碼,說明單擊命令按鈕時要執行的操作。
插入命令按鈕
建立一個新的工作表。
單擊新工作表。
單擊功能區上的“開發工具”按鈕。
單擊“控制元件”組中的“插入”。
從窗體控制元件中選擇按鈕圖示。

- 單擊要在其中放置命令按鈕的工作表。
- 將出現“分配宏”對話方塊。

Visual Basic 編輯器將出現。

您將看到以下內容:
- 在“專案資源管理器”中插入了一個新模組 – Module2。
- 出現標題為 Module2 (程式碼) 的程式碼視窗。
- 在 Module2 程式碼中插入了一個子過程 Button1_Click ()。
編寫宏程式碼
您的編碼已由 VBA 編輯器本身完成了一半。
例如,在子過程 Button1_Click () 中鍵入 MsgBox “祝您一切順利!”。單擊命令按鈕時,將顯示包含給定字串的訊息框。

就是這樣!您的宏程式碼已準備好執行。您知道,VBA 程式碼不需要編譯,因為它使用直譯器執行。
從 VBA 編輯器執行宏
您可以從 VBA 編輯器本身測試您的宏程式碼。
單擊功能區上的“執行”選項卡。
從下拉列表中選擇“執行子程式/使用者窗體”。您鍵入的字串的訊息框將顯示在您的工作表中。

您可以看到按鈕已被選中。單擊訊息框中的“確定”。您將返回到 VBA 編輯器。
從工作表執行宏
您可以從工作表中執行您編寫的宏任意多次。
- 單擊工作表上的某處。
- 單擊按鈕。訊息框將顯示在工作表上。

您已透過編寫 VBA 程式碼建立了一個宏。正如您所看到的,VBA 編碼很簡單。
Excel宏 - 編輯
您已經在上一節中學習瞭如何在 VBA 編輯器中編寫宏程式碼。您可以編輯宏程式碼、重新命名宏和刪除宏。
如果您掌握了 Excel VBA,編寫或修改宏程式碼將是一項簡單的任務。您可以根據需要編輯宏程式碼。如果您只想對宏程式碼進行一些簡單的更改,您甚至可以將宏程式碼從一個位置複製到另一個位置。
複製宏程式碼
您已在啟用宏的工作簿 MyFirstMacro.xlsm 中建立了兩個宏 – MyFirstMacro 和 Button1_Click。您透過記錄步驟建立了第一個宏,透過編寫程式碼建立了第二個宏。您可以將第一個宏中的程式碼複製到第二個宏中。
開啟工作簿 MyFirstMacro.xlsm。
單擊功能區上的“開發工具”選項卡。
單擊“Visual Basic”。Visual Basic 編輯器將開啟。
開啟 Module1(MyFirstMacro 宏程式碼)和 Module2(Button1_Click () 宏程式碼)的程式碼。
單擊功能區上的“視窗”選項卡。
從下拉列表中選擇“水平平鋪”。
您可以在平鋪的視窗中檢視兩個宏的程式碼。

複製 Module2 程式碼中的 MsgBox 行。
將其貼上到該行的上方。
修改字串為:
MsgBox “Hello World!”
從 Module1 複製以下程式碼。

將其貼上到 Module2 程式碼中,位於兩行 MsgBox 程式碼之間。

單擊“儲存”圖示以儲存程式碼。
單擊 Excel 表格中的按鈕。將出現一個訊息框,顯示訊息 - Hello World!單擊“確定”。

表格資料將出現(根據您複製的程式碼),並出現包含訊息“祝您一切順利!”的訊息框。

您只需幾個步驟即可修改程式碼。對於初學者來說,這是最簡單的任務。
重新命名宏
假設您想從除包含命令按鈕的工作表之外的任何工作表執行已編輯的宏。您可以透過重新命名宏來實現這一點,而無需單擊按鈕。
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。
將出現“宏”對話方塊。
- 單擊宏名稱 – Button1_Click。
- 單擊“編輯”按鈕。

宏程式碼將顯示在 VBA 編輯器中。
將 Sub 行中顯示的名稱從 Button1_Click 更改為 RenamedMacro。保留 Sub 和括號不變。

開啟“宏”對話方塊。宏名稱將顯示為您重新命名的名稱。

- 單擊 RenamedMacro。
- 單擊“執行”按鈕。宏將執行。現在不需要單擊按鈕了。
刪除宏
您可以刪除您已記錄或編碼的宏。
- 開啟“宏”對話方塊。
- 單擊宏名稱。
- 點選“刪除”按鈕。

將出現刪除確認訊息。

如果您確定要刪除宏,請單擊是。否則,單擊“否”。
Excel宏 - 使用者窗體
有時,您可能需要反覆從其他人那裡收集資訊。Excel VBA 提供了一種簡單的方法來處理此任務 - **使用者窗體**。與您填寫的任何其他窗體一樣,使用者窗體使您能夠輕鬆理解需要提供哪些資訊。使用者窗體友好易用,因為它提供的控制元件是不言自明的,並在必要時附帶其他說明。
使用者窗體的主要優點是您可以節省在填寫資訊的方式和內容上花費的時間。
建立使用者窗體
要建立使用者窗體,請按如下步驟操作:
- 單擊功能區上的“開發工具”選項卡。
- 單擊“Visual Basic”。將開啟工作簿的 Visual Basic 視窗。
- 單擊“插入”,
- 從下拉列表中選擇“使用者窗體”。

使用者窗體將顯示在視窗的右側。

瞭解使用者窗體
最大化 UserForm.xlsx – UserForm1 視窗。
您現在處於設計模式。您可以在使用者窗體上插入控制元件併為相應的操作編寫程式碼。控制元件位於工具箱中。使用者窗體的屬性位於“屬性”視窗中。“UserForm1”(使用者窗體的標題)在“專案資源管理器”中的“窗體”下給出。

- 在“屬性”視窗中將使用者窗體的標題更改為“專案報告 – 每日”。
- 將使用者窗體的名稱更改為 ProjectReport。

更改將反映在使用者窗體、屬性和專案資源管理器中。
工具箱中的控制元件
使用者窗體將具有不同的元件。當您單擊任何元件時,您將獲得有關資訊提供方式和內容的說明,或者您將獲得可供選擇的選項。所有這些都是透過使用者窗體工具箱中的 ActiveX 控制元件提供的。
Excel 提供兩種型別的控制元件 – 窗體控制元件和 ActiveX 控制元件。您需要了解這兩種控制元件之間的區別。
窗體控制元件
窗體控制元件是 Excel 原生的控制元件,與早期版本的 Excel 相容,從 Excel 5.0 版本開始。窗體控制元件也設計用於 XLM 宏工作表。
您可以使用窗體控制元件執行宏。您可以將現有宏分配給控制元件,或編寫或記錄新宏。單擊控制元件時,將執行宏。您已經學習瞭如何在工作表中從窗體控制元件插入命令按鈕以執行宏。但是,這些控制元件不能新增到使用者窗體。
ActiveX 控制元件
ActiveX 控制元件可用於 VBA 使用者窗體。ActiveX 控制元件具有廣泛的屬性,您可以使用這些屬性來自定義其外觀、行為、字型和其他特性。
使用者窗體工具箱中包含以下 ActiveX 控制元件:
- 指標
- 標籤
- 文字框
- 組合框
- 列表框
- 複選框
- 單選按鈕
- 框架
- 切換按鈕
- 命令按鈕
- 選項卡條
- 多頁
- 捲軸
- 微調按鈕
- 影像
除了這些控制元件之外,Visual Basic 還提供 MsgBox 函式,可用於顯示訊息和/或提示使用者執行操作。
在接下來的幾節中,您將瞭解這些控制元件和 MsgBox。然後,您將能夠選擇設計使用者窗體所需的控制元件。
標籤
您可以使用標籤來標識目的,方法是顯示描述性文字,例如標題、字幕和/或簡短說明。
示例

文字框
您可以使用矩形框文字框來鍵入、檢視或編輯文字。您還可以將文字框用作靜態文字欄位,用於顯示只讀資訊。
示例

列表框
列表框 (ListBox) 用於顯示一個或多個文字專案列表,使用者可以從中選擇。當需要顯示數量眾多且內容或數量變化較大的選項時,使用列表框。
- 在使用者窗體 (UserForm) 上插入一個列表框。
- 單擊列表框。
- 在列表框的屬性視窗中,將“名稱”(Name) 屬性設定為“ProjectCodes”。
列表框有三種類型:
單選列表框 - 單選列表框只允許選擇一個選項。在這種情況下,列表框類似於一組單選按鈕,但列表框可以更有效地處理大量專案。
多選列表框 - 多選列表框允許選擇一個選項或連續(相鄰)的多個選項。
擴充套件選擇列表框 - 擴充套件選擇列表框允許選擇一個選項、連續的多個選項或不連續(或不相連)的多個選項。
您可以在屬性視窗中選擇其中一種型別的列表框。

- 右鍵單擊使用者窗體。
- 從下拉列表中選擇“檢視程式碼”(View Code)。使用者窗體的程式碼視窗將開啟。
- 單擊程式碼視窗右上角的“初始化”(Initialize)。
- 在 `Private Sub UserForm_Initialize()` 下輸入以下程式碼:
ProjectCodes.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。

接下來,您可以編寫程式碼來處理列表中專案被選擇的動作。或者,您也可以只顯示選定的文字,例如在報表中填充專案程式碼的情況。
組合框
您可以使用組合框 (ComboBox),它結合了文字框和列表框,建立一個下拉列表框。組合框比列表框更緊湊,但使用者需要單擊向下箭頭才能顯示專案列表。使用組合框只能從列表中選擇一個專案。
- 在使用者窗體上插入一個組合框。
- 單擊組合框。
- 在組合框的屬性視窗中,將“名稱”(Name) 屬性設定為“ProjectCodes2”。

- 右鍵單擊使用者窗體。
- 從下拉列表中選擇“檢視程式碼”(View Code)。
- 使用者窗體的程式碼視窗將開啟。
輸入以下程式碼:
ProjectCodes2.List = Array ("Proj2016-1", "Proj2016-2", "Proj2016-3", "Proj20164", "Proj2016-5")

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。

單擊向下箭頭以顯示專案列表。

單擊所需的專案,例如“Project2016-5”。選定的選項將顯示在組合框中。

複選框
您可以使用複選框來選擇一個或多個選項,透過單擊框來選擇。選項將有標籤,您可以清楚地看到選擇了哪些選項。
複選框可以有兩種狀態:
- 選中(開啟),在框中用勾號表示
- 未選中(關閉),在框中為空
為了節省空間,您可以在組合框中使用複選框來選擇選項。在這種情況下,複選框也可以有第三種狀態:
混合,表示選中和未選中狀態的組合,在框中用黑點表示。這將用於指示在帶有複選框的組合框中進行了多個選擇。
如下所示在使用者窗體上插入複選框。

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。
- 單擊您選擇的選項對應的框。

單選按鈕
您可以使用單選按鈕,也稱為選項按鈕,在一個有限的互斥選項集中進行單選。單選按鈕通常包含在一個分組框或框架中。
單選按鈕用一個小圓圈表示。單選按鈕可以有以下兩種狀態:
- 選中(開啟),在圓圈中用點表示
- 未選中(關閉),圓圈為空白
框架
您可以使用框架控制元件,也稱為分組框,將相關的控制元件組合成一個視覺單元。通常情況下,單選按鈕、複選框或密切相關的控制元件會分組在一個框架控制元件中。
框架控制元件用一個帶有可選標籤的矩形物件表示。
插入一個標題為“選擇”的框架。
在框架控制元件中插入兩個標題分別為“是”和“否”的單選按鈕。“是”和“否”選項是互斥的。

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。
- 單擊您選擇的選項。

切換按鈕
您可以使用切換按鈕來指示狀態,例如“是”或“否”,或模式,例如“開啟”或“關閉”。單擊切換按鈕時,它會在啟用和停用狀態之間切換。
如下所示在使用者窗體上插入一個切換按鈕:

單擊功能區上的“執行”選項卡。
從下拉列表中選擇“執行子程式/使用者窗體”(Run Sub/UserForm)。切換按鈕預設處於啟用狀態。

單擊切換按鈕。切換按鈕將被停用。

如果再次單擊切換按鈕,它將被啟用。
命令按鈕
您可以使用命令按鈕來執行宏,當用戶單擊它時執行某些操作。您已經學習瞭如何在工作表上使用命令按鈕來執行宏。
命令按鈕也稱為按鈕。如下所示在使用者窗體上插入一個命令按鈕:

- 右鍵單擊命令按鈕。
- 在 `Sub Commandbutton1_click()` 中輸入以下程式碼:
ProjectCodes2.DropDown

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。

單擊命令按鈕。組合框的下拉列表將開啟,因為這是您在程式碼中編寫的操作。

選項卡條
您可以在使用者窗體上插入一個類似於 Excel 選項卡的選項卡條。
捲軸
您可以使用捲軸透過單擊滾動箭頭或拖動滾動框來滾動瀏覽一系列值。
透過在所需位置繪製捲軸並調整其長度,在使用者窗體上插入捲軸。

- 右鍵單擊捲軸。
- 從下拉列表中選擇“檢視程式碼”(View Code)。程式碼視窗將開啟。
- 在 `Sub ScrollBar1_Scroll()` 下新增以下程式碼:
TextBox2.Text = "Scrolling Values"

- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。

拖動滾動框。文字框中將顯示“滾動值”,因為您已將其指定為捲軸滾動的操作。

MsgBox()
您可以使用 MsgBox() 函式在單擊某個內容時顯示訊息。它可以是指南、某些資訊、警告或錯誤警報。
例如,當您開始滾動滾動框時,可以顯示一條訊息,指示值正在滾動。

訊息框圖示顯示
您可以使用訊息框圖示顯示來表達特定訊息。您有多個訊息框圖示可供選擇:
- 在 `ScrollBar1_scroll` 下輸入以下程式碼:
MsgBox "Select Ok or Cancel", vbOKCancel, "OK - Cancel Message" MsgBox "It's an Error!", vbCritical, "Run time result" MsgBox "Why this value", vbQuestion, "Run time result" MsgBox "Value Been for a Long Time", vbInformation, "Run time result" MsgBox "Oh Is it so", vbExclamation, "Run time result"
- 單擊功能區上的“執行”選項卡。
- 從下拉列表中選擇“執行子程式/使用者窗體”。
- 拖動滾動框。
您將依次獲得以下訊息框。

設計使用者窗體
現在,您已經瞭解了可以在使用者窗體上使用的不同控制元件。選擇控制元件,如果需要,將它們分組,並根據一些有意義的順序將它們排列在使用者窗體上。編寫與相應控制元件對應的操作程式碼。
請參閱本教程庫中的 VBA 教程,瞭解使用者窗體的示例。
Excel宏 - 除錯程式碼
您已經學習到宏作為 VBA 程式碼儲存在 Excel 中。您還學習了可以直接在 VBA 編輯器中編寫程式碼來建立宏。但是,與任何程式碼一樣,宏程式碼也可能存在缺陷,並且宏可能無法按預期執行。
這需要檢查程式碼以查詢缺陷並進行更正。在軟體開發中,此活動稱為除錯。
VBA 除錯
VBA 編輯器允許您暫停程式碼執行並執行任何所需的除錯任務。以下是一些您可以執行的除錯任務。
- 單步執行程式碼
- 使用斷點
- 在程式碼中後退或前進
- 不單步執行每一行程式碼
- 單步執行程式碼時查詢任何內容
- 停止執行
這些只是您可能在 VBA 的除錯環境中執行的一些任務。
單步執行程式碼
除錯的第一步是在執行程式碼時單步執行程式碼。如果您知道程式碼的哪個部分可能導致缺陷,您可以跳轉到該程式碼行。否則,您可以逐行執行程式碼,在程式碼中後退或前進。
您可以從工作簿中的宏對話方塊或從 VBA 編輯器本身單步進入程式碼。
從工作簿單步進入程式碼
要從工作簿單步進入程式碼,請執行以下操作:
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”。
- 從下拉列表中選擇“檢視宏”。
將出現“宏”對話方塊。
- 單擊宏名稱。
- 單擊“單步進入”按鈕。

VBA 編輯器開啟,宏程式碼出現在程式碼視窗中。宏程式碼中的第一行將以黃色突出顯示。

從 VBA 編輯器單步進入程式碼
要從 VBA 編輯器單步進入程式碼,請執行以下操作:
- 單擊功能區上的“開發工具”選項卡。
- 單擊“Visual Basic”。VBA 編輯器開啟。
- 單擊包含宏程式碼的模組。
宏程式碼將出現在程式碼視窗中。

單擊功能區上的“除錯”選項卡。
從下拉列表中選擇“單步進入”。

將突出顯示宏程式碼中的第一行。程式碼處於除錯模式,並且“除錯”下拉列表中的選項將變為活動狀態。

在程式碼中後退或前進
您可以透過選擇“單步執行”或“單步跳出”在程式碼中前進或後退。
不單步執行每一行程式碼
如果您確定需要討論的程式碼的潛在部分,可以透過選擇“執行到游標處”來避免單步執行每一行程式碼。
使用斷點
或者,您可以在程式碼的特定行設定斷點並執行程式碼,觀察每個斷點處的結果。您可以根據需要切換斷點和清除所有斷點。
使用監視
在除錯過程中,您可以新增監視以評估表示式並在變數達到特定值時停止執行。這意味著您配置一個監視表示式,該表示式將被監視,直到其為真,然後宏將停止並使您進入中斷模式。VBA 提供了幾種監視型別供您選擇,以便完成您想要完成的任務。
停止執行
在除錯過程中,在任何時候,如果您發現了程式碼出錯的線索,都可以停止執行以進一步分析。
如果您是一位經驗豐富的開發人員,除錯術語對您來說很熟悉,並且 VBA 編輯器的除錯選項使您的工作更輕鬆。否則,如果您已經學習了 VBA 並理解了程式碼,那麼掌握這項技能也不會花費太長時間。
Excel宏 - 配置宏
您可以錄製宏並將其儲存為“Auto_Open”名稱,以便在開啟包含此宏的工作簿時執行它。
您還可以編寫 VBA 程式碼來實現相同的目的,使用工作簿的 Open 事件。每次開啟工作簿時,Open 事件都會執行 `Workbook_Open()` 子過程中的程式碼。
錄製 Auto_Open 宏
您可以按如下方式錄製 Auto_Run 宏:
- 單擊功能區上的“檢視”選項卡。
- 單擊“宏”。
- 單擊“錄製宏”。將出現“錄製宏”對話方塊。
- 為宏輸入名稱“Auto_Run”。
- 鍵入描述並單擊“確定”。

- 開始錄製宏。
- 停止錄製。
- 將工作簿另存為啟用宏的工作簿。
- 關閉工作簿。
- 開啟工作簿。Auto_Run宏將自動執行。
如果您希望Excel啟動時不執行Auto_Open宏,請在啟動Excel時按住SHIFT鍵。
Auto_Open宏的限制
以下是Auto_Open宏的限制:
如果您儲存Auto_Open宏的工作簿包含工作簿開啟事件的程式碼,則開啟事件的程式碼將覆蓋Auto_Open宏中的操作。
當使用Open方法執行程式碼開啟工作簿時,將忽略Auto_Open宏。
Auto_Open宏在任何其他工作簿開啟之前執行。因此,如果您記錄希望Excel在預設Book1工作簿或從XLStart資料夾載入的工作簿上執行的操作,則在重新啟動Excel時,Auto_Open宏將失敗,因為宏在預設工作簿和啟動工作簿開啟之前執行。
如果您遇到任何這些限制,則不必錄製Auto_Open宏,而應編寫下一節中描述的開啟事件程式碼。
工作簿開啟事件的VBA程式碼
您可以編寫在開啟工作簿時將執行的程式碼。VBA提供了一個名為open的事件,其中包含一個VBA過程,用於在開啟工作簿時執行的操作。
開啟您為絕對引用儲存宏的工作簿 – Report_ProjectXYZ。執行此宏後,將在工作簿中新增一個新工作表,並且專案報告結構將顯示在新工作表上。
您可以編寫一個宏程式碼,在開啟工作簿時執行這些操作。這意味著當您開啟專案報告工作簿時,一個包含報告結構的新工作表將準備好供您輸入詳細資訊。
請在VBA編輯器中按照以下步驟操作:
雙擊“專案資源管理器”中的“ThisWorkbook”。
在程式碼視窗中,從左側下拉列表中選擇“工作簿”,從右側下拉列表中選擇“開啟”。將顯示Sub Workbook_Open ()。

單擊“專案資源管理器”中的“模組”。
雙擊包含宏程式碼的模組名稱。
從模組中複製宏程式碼,並將其貼上到Sub WorkBook_Open ()中。

儲存啟用宏的工作簿。再次開啟它。宏執行,並插入一個包含報表結構的新工作表。