Applies ToMicrosoft 365 Access Access 2024 Access 2021 Access 2019 Access 2016

在 Microsoft Access 中,附加至使用者介面 (UI 的宏) 命令按鈕、文本框、表單和報表等對象稱為 UI 宏。 這會將它們與附加至數據表的數據宏進行區別。 您可以使用 (UI) 宏來自動化一系列的動作,例如開啟另一個物件、套用篩選、啟動匯出作業,以及許多其他工作。 本文將向您介紹新重新設計的宏建立器,並示範建立UI宏所涉及的基本工作。

附註: 本文不適用於 Access Web App。

本文內容

概觀

宏可以包含在宏物件中, (有時稱為獨立宏) ,或是它們可以內嵌至窗體、報表或控件的事件屬性中。 內嵌宏會成為內嵌宏之物件或控件的一部分。 宏物件會顯示在 [導航窗格] 的 [ 宏] 底下;內嵌宏則不會。

每個宏是由一個或多個宏指令所組成。 視您所處理的上下文而定,某些宏指令可能無法使用。

頁面頂端

巨集建立器

以下是宏建立器的一些主要功能重點。

  • 動作目錄    宏指令是依類型分門別類且可搜尋。

  • IntelliSense    輸入表達式時,IntelliSense 會建議可能的值,並讓您選取正確的值。

  • 鍵盤快捷方式    使用按鍵組合來更快速、更輕鬆地撰寫宏。

  • 程式流程    使用批注行和動作群組建立更容易閱讀的宏。

  • 條件語句    允許使用巢狀 If/Else/Else If 支援更複雜的邏輯執行。

  • 宏重複使用    [動作目錄] 會顯示您已建立的其他宏,讓您將宏複製到您正在處理的宏中。

  • 更容易共用    複製宏,然後以 XML 格式貼到電子郵件、新聞組文章、部落格或程式代碼範例網站。

以下影片會逐步引導您瀏覽宏建立器的主要區域。

您的瀏覽器不支援影片。 請安裝 Microsoft Silverlight、Adobe Flash Player 或 Internet Explorer 9。

頁面頂端

建立獨立宏

此程式會建立獨立的宏物件,該物件會顯示在 [導航窗格] 的 [ ] 底下。 當您想要在應用程式的許多位置重複使用宏時,獨立宏很有用。 您可以從其他宏呼叫宏,避免在多個位置重複相同的程序代碼。

  1. 在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。Access 會開啟宏建立器。

  2. 在 [快速存取工具列] 上,按兩下 [ 儲存]

  3. 在 [ 另存新 檔] 對話框中,輸入宏的名稱,然後按兩下 [確定]。

  4. 繼續進行將 宏新增動作一節。

頁面頂端

建立內嵌宏

此程式會建立內嵌在物件事件屬性中的宏。 這類宏不會出現在 [導航窗格] 中,但可以從事件稱為 [ 載入 ] 或 [按兩下]

由於宏會成為表單或報表物件的一部分,因此建議將內嵌宏用於自動化特定表單或報表的工作。

  1. 在 [導航窗格] 中,以滑鼠右鍵按兩下包含宏的表單擊包含宏的表單單,然後按兩下 [版面配置 檢視]

  2. 如果沒有顯示屬性表,請按 F4 以顯示屬性表。

  3. 按兩下包含您要內嵌宏之事件屬性的控制件或區段。 您也可以使用屬性表頂端 [ 取類型] 底下的下拉式清單,選取 (控件或區段或整個窗體或報表) 。

  4. 在 [屬性表] 工作窗格中,按兩下 [ 事件] 索 引卷標。

  5. 在您要觸發宏之事件的屬性方塊中按一下。 例如,若是命令按鈕,如果您想要在按下按鈕時執行宏,請按下按鈕時執行宏,請按兩下[按 兩) 屬性方塊。  

  6. 如果屬性方塊包含 [Embedded Macro]字樣,這表示已經為此事件建立宏。 您可以繼續執行此程式中的其餘步驟來編輯宏。

  7. 如果屬性方塊包含 [事件過程] 文字,這表示已為此事件建立Visual Basic for Applications (VBA) 程式。 您必須先移除程式,才能在事件中內嵌宏。 您可以刪除 [事件過程] 文字來執行此動作,但您應該先檢查事件過程,以確保移除不會破壞資料庫中所需的功能。 在某些情況下,您可以使用內嵌宏重新建立 VBA 程式的功能。

  8. 按下 [ 建立 ] 按鈕 按鈕影像] 。

  9. 如果出現 [ 選擇建立器] 對話框,請確定已選取 [ 宏建立器 ],然後按兩下 [ 確定]Access 會開啟宏建立器。 繼續進行下一節以將宏新增動作。

頁面頂端

新增宏動作

動作是組成宏的個別命令,每個命令都會根據它的作用來命名,例如 FindRecordCloseDatabase

步驟 1:流覽或搜尋宏指令

新增動作的第一個步驟是在 [ 新增動作 ] 下拉式清單或 [動作目錄] 中找到它。

附註: 

  • 根據預設, [新增動作 ] 下拉式清單和 [動作目錄] 只會顯示在不受信任的資料庫中執行的動作。 若要檢視所有動作:

    • 在 [ 設計] 索引 標籤的 [ 顯示/隱藏 ] 群組中,按兩下 [顯示所有動作]

  • 如果沒有顯示 [動作目錄],請在 [ 設計] 索 引標籤的 [ 顯示/隱藏 ] 群組中,按兩下 [ 動作目錄]

若要尋找動作,請使用下列其中一種方法:

  • 按兩下 [ 新增動作 ] 下拉式清單中的箭號,然後向下捲動以尋找動作。 程式流程元素會先列出,然後按字母順序列出宏指令。

  • 瀏覽 [動作目錄] 窗格中的動作。 這些動作會依類別分組。 展開每個類別以檢視動作。 如果您選取某個動作,動作目錄底部會顯示動作的簡短描述。

  • 在窗格頂端的 [搜尋] 方塊中輸入,以在 [動作目錄] 窗格中搜尋動作。 當您輸入時,會篩選動作清單,以顯示包含該文字的所有宏。 Access 會同時搜尋宏名稱及其描述,以尋找您輸入的文字。

步驟 2:將宏新增動作

找到您要的宏指令后,請使用下列其中一種方法將宏新增至宏:

  • 選取 [ 新增動作 ] 列表中的動作,或直接開始在方塊中輸入動作名稱。 Access 會在顯示 [ 新增動作 ] 清單時新增動作。

  • 將宏指令從 [動作目錄] 拖曳到宏窗格。 插入列隨即出現,顯示您放開滑鼠按鈕時要插入動作的位置。

  • 按兩下 [動作目錄] 中的動作。

    • 如果在宏窗格中選取了某個宏指令,Access 會在選取的宏窗格下方新增新的宏指令。

    • 如果在宏窗格中選取了群組IfElseSubmacro 區塊,Access 會將新動作新增至該區塊。

    • 如果宏窗格中未選取任何動作或區塊,Access 會將新動作新增至宏的結尾。

      附註: 

      • 如果您已經建立一或多個宏,宏會列在 [動作目錄] 的 [在這個資料庫 節點中] 底下。

        • 將獨立宏拖曳 (宏) 下 列宏窗格中所列的宏,會建立執行您拖曳宏的 RunMacro 宏指令。 如果有的話,您可以使用下拉式清單來呼叫子宏。

        • 如果您只想將獨立宏中的宏指令複製到目前的宏 (,而不是建立 RunMacro 宏指令) ,請在 [動作目錄] 中按下滑鼠右鍵,然後按兩下 [ 新增宏複本]

        • 將內嵌宏 (列在表單或報表物件) 下方的宏窗格中,將宏的動作複製到目前的宏。

      • 您也可以從 [導航窗格] 將資料庫物件拖曳到宏窗格,藉此建立宏指令。 如果您將數據表、查詢、表單、報表或模組拖曳至宏窗格,Access 會新增可開啟數據表、查詢、表單或報表的動作。 如果您將另一個宏拖曳到宏窗格中,Access 會新增執行宏的動作。

步驟 3:填入自變數

大部分宏指令至少需要一個自變數。 您可以選取動作,然後將指標移至自變數上方,以檢視每個自變數的描述。 針對許多自變數,您可以從下拉式清單中選取值。 如果自變數要求您在表達式中輸入,IntelliSense 會在您輸入時建議可能的值,以協助您輸入表達式,如下圖所示:

使用 IntelliSense 輸入運算式

當您看到您要使用的值時,按兩下該值或使用箭頭鍵反白顯示,然後按TAB或 ENTER 鍵,即可將其新增至表達式。

如需建立表達式的詳細資訊,請參閱 表達式簡介一文。

關於搭配 Web 資料庫中的屬性使用 IntelliSense

當您在網頁相容窗體上建立內嵌 UI 宏時,IntelliSense 可讓您在表達式中新增任何表單屬性。 不過,在 Web 資料庫中,只能使用 UI 宏存取表單屬性的子集合。 例如,在名為 Form1 的窗體上指定名為 Control1 的控件,IntelliSense 可讓您新增 [Forms]![Form1]![Control1]。[ControlSource] UI 宏中表達式的 [ControlSource]。 不過,如果您將資料庫發佈到 Access Services,包含該表達式的宏會在伺服器上執行時產生錯誤。

下表顯示您可以在 Web 資料庫的 UI 宏中使用的屬性:

物件或控件

您可以使用的屬性

表單

字幕, Dirty, AllowAdditions, AllowDeletions, AllowEdits

Tab 控件

Visible

標籤

標號、可見、前方色彩、背面色彩

附件

可見、已啟用

命令按鈕

標號、可見、已啟用、前方色彩

Tex tBox

已啟用、可見、鎖定、Fore Color、Back Color、值

核取方塊

已啟用、可見、鎖定、值

影像

可見、背面色彩

下拉式方塊

已啟用、可見、鎖定、值

清單方塊

已啟用、可見、鎖定、值

瀏覽器

Visible

子表單

已啟用、可見鎖定

導覽控件

已啟用、可見

移動動作

宏的頂端到底部會依順序執行動作。 若要在宏中向上或向下移動宏指令,請使用下列其中一種方法:

  • 將動作向上或向下拖曳到您要的位置。

  • 選取動作,然後按 CTRL + 向上鍵或 CTRL + 向下鍵。

  • 選取動作,然後按兩下宏窗格右側的 [上移 ] 或 [ 下移 ] 箭號。

刪除動作

若要刪除巨集指令:

  • 選取動作,然後按 DELETE 鍵。 或者,您可以按下宏窗格右側的 [ 刪除 (X) ] 按鈕。

    附註: 

    • 如果您刪除動作區塊,例如 If 區塊或 群組 區塊,也會一併刪除封鎖中的所有動作。

    • 當您以滑鼠右鍵按下宏指令時,快捷方式選單上也會出現 [上移]、[ 移] 和 [ 刪除 ] 命令。

頁面頂端

使用 If、Else If 和 Else 來控制程式流程

若要只在特定條件為 True 時執行宏指令,請使用 If 區塊。 這會取代舊版 Access 中使用 的條件 列。 您可以使用 Else IfElse 區塊來擴充 If 區塊,類似 VBA 等其他連續程式設計語言。

下圖顯示簡單的 If 區塊,包括 Else IfElse 區塊:

包含 If/Else If/Else 陳述式的巨集。

如果 ExpirationDate 字段小於目前日期,則會執行 If 區塊。

如果 ExpirationDate 字段等於目前日期,則會執行 Else If 區塊。

如果上述所有區塊都沒有執行, 則會執行 Else 區塊。

[如果] 區塊在這裡結束。

新增 If 區塊至宏

  1. 選取 [新增動作] 下拉式清單中的 [是否],或從 [動作目錄] 窗格將它拖曳到宏窗格。

  2. 在 [ 如果 ] 區塊頂端的方塊中,輸入一個表達式,決定要何時執行該區塊。 表達式必須是布爾值 (,也就是評估為是或否) 。

  3. 從出現在區塊內的 [新增動作] 下拉式清單中選取 [如果] 區塊,或從 [動作目錄] 窗格將它們拖曳到 [If] 區塊,即可將它們新增到 [If] 區塊。

將 Else 或 Else If 區塊新增至 If 區塊

  1. 選取 [如果 區塊 ],然後按兩下塊右下角的 [新增 Else] 或 [新增其他區塊]

  2. 如果您要新增 Else If 區塊,請輸入一個表達式,決定要何時執行該區塊。 表達式必須是布爾值 (,也就是評估為 True 或 False) 的運算式。

  3. 從區塊內顯示的 [新增動作] 下拉式清單中選取動作,或從 [動作目錄] 窗格拖曳至區塊,即可將它們新增到 Else IfElse 區塊。

    附註: 

    • 當您以滑鼠右鍵按下宏指令時出現的快捷選單上可使用新增 IfElse IfElse 區塊的命令。

    • 如果 區塊可以巢狀至10層深。

頁面頂端

建立子宏

每個宏可以包含多個子宏。 子宏的設計是以 RunMacroOnError 宏指令的名稱來命名。

您新增 Submacro 區塊至宏的方式與宏指令相同,如在將 宏新增動作一節中所述。 新增 Submacro 區塊後,您可以將宏指令拖曳到其中,或從區塊內顯示的 [ 新增動作 ] 清單中選取動作。

附註: 

  • 您也可以選取一個或多個動作、以滑鼠右鍵按兩下子宏區塊,然後選取 [建立子宏區塊],藉此建立 Submacro 區塊

  • Submacros 必須一律是宏中的最後一個區塊;您無法新增任何動作 (,但子宏下方) 其他子宏除外。 如果您執行的宏只包含子宏,但並未明確命名您想要的子宏,則只會執行第一個子宏。

  • 例如,若要呼叫子宏 (,請在事件屬性中,或使用 RunMacro 動作或 OnError 宏指令) ,請使用下列語法: ame.submacroname

頁面頂端

將相關動作分組在一起

您可以將宏組成群組,並將有意義的名稱指派給群組,藉此改善宏的可讀性。 例如,您可以將開啟表單的動作組成群組,並將窗體篩選成名為「開啟和篩選表單」的群組。 這可讓您更輕鬆地查看哪些動作彼此相關。 群組區塊不會影響動作的執行方式,而且無法個別稱呼或執行群組。 主要用途是為一組動作加上標籤,以協助您在閱讀宏時了解宏。 此外,編輯大型宏時,您可以將每個群組區塊折疊成單一線條,以減少您必須執行的捲動量。

如果您想要組成群組的動作已經在宏中,請使用此程式將它們新增至 群組 區塊:

  1. 選取您要分組的動作。

  2. 以滑鼠右鍵按下選取的動作,然後按兩下 [ 組成群組封鎖]

  3. 在 [ 群組 ] 區塊頂端的方塊中,輸入群組的名稱。

如果動作尚未出現:

  1. 將 [ 群組 ] 區塊從 [動作目錄] 拖曳到宏窗格。

  2. 在 [ 群組 ] 區塊頂端的方塊中,輸入群組的名稱。

  3. 將宏指令從 [動作目錄] 拖曳到 [群組 ] 區塊,或從出現在區塊內的 [ 新增動作 ] 清單中選取動作。

群組 區塊可以包含其他 群組 區塊,而且最多可巢狀 9 層深。

頁面頂端

展開及折迭宏指令或區塊

當您建立新的宏時,宏建立器會顯示顯示所有自變數的宏指令。 視宏的大小而定,您可能會想要在編輯宏時折疊部分或所有宏指令 (和宏指令區塊) 。 這可讓您更輕鬆地檢視宏的結構。 您可以視需要展開部分或所有動作來進行編輯。

展開或折疊單一宏指令或區塊

  • 按兩下加號 (+) 或減號 (-) 在宏的左邊或區塊名稱處登入。 或者,按向上鍵和向下鍵以選取動作或區塊,然後按向左鍵或向右鍵來折疊或展開。

展開或折疊所有宏指令 (但不封鎖)

  • 在 [ 設計] 索引 標籤的 [ 折迭/展開 ] 群組中,按兩下 [ 展開動作] 或 [ 折疊動作]

展開或折疊所有宏指令和區塊

  • 在 [ 設計] 索引 標籤的 [ 折迭/展開 ] 群組中,按兩下 [ 全部展開 ] 或 [ 全部折疊]

提示: 您可以將指標移到動作上方,以「預覽」折疊的動作。 Access 會在工具提示中顯示宏指令自變數。

頁面頂端

複製並貼上宏指令

如果您需要重複已新增至宏的動作,您可以複製並貼上現有的動作,就像在字處理器中對文字段落所做的一樣。 當您貼上動作時,這些動作會插入目前選取的動作正下方。 如果已選取區塊,動作會貼到區塊內。

提示: 若要快速複製選取的動作,請按住 CTRL 鍵,並將動作 () 拖曳到您要複製宏的位置。

與其他人共用宏

當您將宏動作複製到剪貼簿時,宏指令可以貼上為可擴展標記語言 (XML) 到任何接受文字的應用程式中。 這可讓您透過電子郵件訊息傳送宏給同事,或將宏張貼在討論論壇、部落格或其他網站上。 收件者接著可以複製 XML 並貼到他們的 Access 宏建立器中。 宏會在您撰寫時重新建立。

執行巨集

您可以使用下列任一方法來執行宏:

  • 按兩下 [導航窗格] 中的宏。

  • 使用 RunMacroOnError 宏指令呼叫宏。

  • 在物件的 Event 屬性中輸入宏名稱。 宏會在觸發該事件時執行。

頁面頂端

偵錯宏

如果您無法執行宏,有幾個工具可用來取得問題來源。

將錯誤處理動作新增至宏

建議您在撰寫宏時,將錯誤處理動作新增至每個宏,並將它們永久保留在宏中。 當您使用此方法時,Access 會在錯誤發生時顯示描述。 錯誤描述可協助您了解錯誤,讓您可以更快速地修正問題。

使用下列程式將錯誤處理子宏新增至宏:

  1. 在 [設計視圖] 中開啟宏。

  2. 在宏底部,從 [新增動作] 下拉式清單中選取 [子宏]。

  3. 宏一詞右邊的方塊中,輸入子宏的名稱,例如 ErrorHandler

  4. 出現在 Submacro 區塊中的 [新增動作] 下拉式清單中,選取 [訊息箱] 宏指令。

  5. 在 [ 訊息] 方 塊中,輸入下列文字: =[MacroError].[描述]

  6. 在宏底部,從 [新增動作] 下拉式清單中選取 [OnError]。

  7. [移至] 自變數設定為 [宏名稱]

  8. 在 [ 宏名稱] 方 塊中,輸入錯誤處理子宏 (的名稱,在此範例中為 ErrorHandler) 。

  9. OnError 宏指令拖曳到宏最上方。

下圖顯示具有 OnError 宏指令的宏,以及名為 ErrorHandler 的 Submacro。

含有錯誤處理子巨集的巨集。

OnError 宏指令會置於宏的頂端,並呼叫 ErrorHandler 子宏來表示發生錯誤。

ErrorHandler 子宏只有在 OnError 動作稱為 ErrorHandler 子宏時才會執行,並顯示描述錯誤的消息框。

使用 [單步驟] 命令

單一步驟是一種宏偵錯模式,您可以用來一次執行一個宏指令。 執行每個動作之後,會出現一個對話框,顯示動作的相關信息,以及隨後發生的任何錯誤碼。 不過,由於 [宏單一步驟] 對話框中沒有錯誤描述,建議您使用上一節所述的錯誤處理子宏方法。

若要啟動單一步驟模式:

  1. 在 [設計視圖] 中開啟宏。

  2. 在 [ 設計] 索引 標籤的 [ 工具] 群組中,按兩下 [ 單一步驟]

  3. 儲存並關閉巨集。

下次您執行宏時,會出現 [ 宏單一步驟 ] 對話框。 對話框會顯示每個動作的下列相關信息:

  • 巨集名稱

  • If 區塊) 的條件 (

  • 動作名稱

  • 引數

  • 錯誤編號 (錯誤編號 0 表示沒有發生錯誤)

當您逐步執行動作時,請按兩下對話框中的三個按鈕之一:

  • 若要查看宏中下一個動作的相關信息,請按 步驟

  • 若要停止目前執行的任何宏,請按兩下 [ 停止所有宏]。 下次執行宏時,單一步驟模式仍會繼續有效。

  • 若要結束單步驟模式並繼續執行宏,請按兩下 [ 繼續]

    附註: 

    • 如果您在宏中的最後一個動作之後按 下 [步驟 ],下一次執行宏時,單步驟模式仍會繼續有效。

    • 若要在執行宏時進入單步驟模式,請按 CTRL+BREAK。

    • 若要在宏的特定點進入單步驟模式,請在該點新增 SingleStep 宏指令。

    • Web 資料庫中無法使用單一步驟模式。

頁面頂端

將宏轉換成 VBA 程序代碼

宏提供 Visual Basic for Applications (VBA) 程式設計語言可用的命令子集。 如果您認為需要的功能超過宏所能提供的功能,您可以輕鬆地將獨立宏物件轉換為 VBA 程式代碼,然後使用 VBA 提供的擴充功能集。 不過請記住,VBA 程序代碼不會在瀏覽器中執行;您新增至 Web 資料庫的任何 VBA 程式代碼,只有在 Access 中開啟資料庫時才會執行。

附註: 您無法將內嵌宏轉換成 VBA 程式代碼。

若要將宏轉換成 VBA 程序代碼:

  1. 在 [導航窗格] 中,以滑鼠右鍵按兩下宏物件,然後按兩下 [設計檢視]。

  2. 在 [ 設計] 索引 標籤的 [ 工具] 群組中,按兩下 [ 將宏轉換為 Visual Basic]

  3. 在 [ 轉換宏 ] 對話框中,指定是否要將錯誤處理程式碼和批註新增至 VBA 模組,然後按兩下 [ 轉換]

Access 會確認宏已轉換,並開啟 Visual Basic 編輯器。 按兩下 [專案] 窗格中的 [已轉換宏] 以檢視及編輯模組。

頁面頂端

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。