在 Microsoft Access 中,附加於使用者介面 (UI) 物件(如命令按鈕、文字框、表單和報表)的巨集稱為 UI 巨集。 這使它們與附加於資料表的資料巨集有所區別。 你可以用 (UI) 巨集自動化一連串動作,例如開啟另一個物件、套用過濾器、啟動匯出操作,以及許多其他任務。 本文將介紹全新設計的巨集建構器,並展示建立 UI 巨集的基本任務。
注意
本文內容不適用於 Access Web App。
本文內容
- 概觀
- 巨集建立器
- 建立獨立的巨集
- 建立內嵌的巨集
- 將動作加入到巨集
- 控制程式流程,包含 If、Else If、Else
- 建立子巨集
- 將相關行動合併
- 展開與摺疊巨集動作或區塊
- 複製並貼上巨集動作
- 與他人分享巨集
- 執行巨集
- 除錯一個巨集
- 將巨集轉換成 VBA 程式碼
概觀
巨集可以包含在巨集物件中 (有時稱為獨立巨集) ,或嵌入表單、報表或控制項的事件屬性中。 嵌入巨集成為其所嵌入的物件或控制的一部分。 巨集物件可在導航面板的 巨集欄目下顯示;嵌入式巨集則不行。
每個巨集由一個或多個巨集動作組成。 根據你工作的情境,有些巨集動作可能無法使用。
巨集建立器
以下是巨集建構器的一些主要特色亮點。
- 行動目錄 巨集動作依類型組織並可搜尋。
- IntelliSense 在輸入表達式時,IntelliSense 會建議可能的值,並讓你選擇正確的。
- 鍵盤快捷鍵 使用按鍵組合來加快、更輕鬆的巨集寫作。
- 程式流程 建立更多易讀的巨集,包含註解行和行動群組。
- 條件語句 允許更複雜的邏輯執行,並支援巢狀 If/Else/Else If。
- 巨集重用 動作目錄會顯示你建立的其他巨集,讓你能將它們複製到你正在製作的巨集中。
- 更方便分享 複製一個巨集,然後以 XML 格式貼上到電子郵件、新聞群組貼文、部落格或程式碼範例網站。
這裡有一支影片,帶你了解巨集建構器的主要區域。
建立獨立的巨集
此程序會建立一個獨立的巨集物件,該物件會出現在導航窗格的 巨集 類別中。 當你想在應用程式的多個地方重複使用巨集時,獨立巨集非常有用。 透過呼叫其他巨集的巨集,可以避免在多個地方重複相同程式碼。
在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。
Access 會開啟巨集建立器。
在快速存取工具列中,點擊 儲存。
在 「另存為」 對話框中,輸入巨集名稱,然後點擊確定。
繼續閱讀「 將動作加入巨集」的章節。
建立內嵌的巨集
此程序建立一個嵌入物件事件屬性中的巨集。 這類巨集不會出現在導航面板中,但可以從「 載入中 」或「 點擊時」等事件中呼叫。
由於巨集成為表單或報告物件的一部分,建議內嵌巨集用於自動化特定表單或報告的特定任務。
在導覽窗格中,右鍵點擊包含巨集的表單或報告,然後點選 版面檢視。
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
點擊包含你想嵌入巨集的事件屬性的控制項或區塊。 您也可以透過屬性表頂端的 選擇類型 下拉選單,選擇控制項、區塊 (,或整個表單或報告) 。
在屬性工作窗格中,點選 事件 標籤。
在屬性框裡點選你想觸發巨集的事件。 舉例來說,對於命令按鈕,如果你想讓巨集在按鈕被點擊時執行,就在 點擊 屬性框中點擊。
如果屬性框包含 [Embedded Macro] 這表示該事件已經建立了巨集。 你可以繼續執行這個程序中剩下的步驟來編輯巨集。
如果屬性框中有 [Event Procedure] 這表示 Visual Basic for Applications (VBA) procedure 已經為此事件建立。 在你能將巨集嵌入事件之前,必須先移除這個程序。 你可以刪除 [Event Procedure] 這幾個字來達成,但你應該先檢查事件程序,確保移除它不會破壞資料庫中所需的功能。 在某些情況下,你可以透過內嵌的巨集來重建 VBA 程序的功能。
點擊 「建構 按鈕
。如果出現 「選擇建構器 」對話框,請確認選取巨 集建構器 ,然後點擊 確定。
Access 會開啟巨集建立器。 繼續進入下一節,將動作加入巨集。
將動作加入到巨集
動作是組成巨集的各個指令,每個指令依其功能命名,例如 FindRecord 或 CloseDatabase。
步驟一:瀏覽或搜尋巨集動作
新增動作的第一步是在「 新增動作 」下拉選單或動作目錄中找到它。
注意
預設情況下, 新增動作 下拉選單和動作目錄只會顯示會在非受信任資料庫中執行的動作。 查看所有動作:
- 在 [設計] 索引標籤上,於 [顯示/隱藏] 群組中按一下 [顯示所有巨集指令]。
如果動作目錄未顯示,在 設計 標籤的 顯示/隱藏 群組中,點擊 動作目錄。
要找到動作,請使用以下方法之一:
- 點擊 新增動作 下拉選單中的箭頭,然後往下滑找到該動作。 程式流程元素先列出,然後按字母順序排列的巨集動作。
- 在行動目錄選區瀏覽動作。 這些行動依類別分組。 展開每個類別以查看動作。 如果您選擇一個動作,該動作的簡短描述會出現在動作目錄底部。
- 在行動目錄面板頂端輸入搜尋框,搜尋該動作。 當你輸入時,動作清單會被篩選出包含該文字的所有巨集。 Access 會搜尋你輸入的文字的巨集名稱及其描述。
步驟 2:將動作加入巨集
找到想要的巨集動作後,使用以下方法之一將其加入巨集:
在新增動作清單中選擇一個動作,或直接在方塊中輸入動作名稱。 Access 會在新增 新增動作 清單顯示的位置新增動作。
將動作目錄中的動作拖曳到巨集窗格。 當你放開滑鼠按鈕時,會出現插入條顯示動作將插入的位置。
在行動目錄中雙擊該動作。
如果在巨集面板中選取了某個動作,Access 會將該動作新增在選取的動作下方。
如果在巨集窗格中選取了 群組、 If、 Else If、 Else 或 子巨集 區塊,Access 會將該新動作加入該區塊。
如果巨集面板中沒有選取任何動作或區塊,Access 會將新動作加入巨集的末尾。
注意
如果您已經建立了一個或多個巨集,這些巨集會列在動作目錄的「 在此資料庫中 」節點下。
- 將獨立的 巨集 (列在 巨集) 中拖曳到 巨集 窗格,會產生一個執行巨 集 動作,執行你拖入的 巨集。 接著你可以用下拉選單呼叫子巨集(如果有的話)。
- 如果你只是想把獨立 巨集 的動作複製到目前的 巨集 (,而不是建立 RunMacro 動作) ,請在動作目錄中右鍵點擊,然後點 選新增巨集複製。
- 將嵌入巨集 (列在表單或報告物件) 下的巨集面板中,會將該巨集的動作複製到目前的巨集中。
你也可以將資料庫物件從導航窗格拖到巨集窗格來建立動作。 如果你將資料表、查詢、表單、報表或模組拖曳到巨集窗格,Access 會新增一個動作來開啟該表表、查詢、表單或報告。 如果你拖曳另一個巨集到巨集窗格,Access 會新增一個動作來執行該巨集。
步驟三:填寫論點
大多數巨集行動至少需要一個論證。 你可以透過選擇動作,然後將指標移到參數上來查看每個參數的描述。 對於許多參數,你可以從下拉選單中選擇一個值。 如果論證要求你輸入表達式,IntelliSense 會協助你輸入該表達式,並在輸入時建議可能的值,如下圖所示:
當你看到想用的值時,雙擊或用方向鍵選取,然後按 TAB 或 ENTER 鍵,將它加入你的表達式。
欲了解更多關於表達式的建立資訊,請參閱文章 《表達式入門》。
關於在網頁資料庫中使用帶有屬性的 IntelliSense
當你在相容的表單上建立嵌入的 UI 巨集時,IntelliSense 允許你將任何表單屬性加入表達式。 然而,在網頁資料庫中,僅能透過 UI 巨集存取部分表單屬性。 例如,給定一個名為 Control1 的控制項,表單名為 Form1,IntelliSense 會讓你加入 [表單]![Form1]![Control1]。[ControlSource] 轉換成 UI 巨集中的一個表達式。 然而,如果你將資料庫發佈給 Access Services,包含該表達式的巨集在伺服器上執行時會產生錯誤。
下表顯示了你可以在網頁資料庫中 UI 巨集中使用的屬性:
移動一個動作
動作依序執行,從巨集的頂端到底部。 要在巨集中移動動作,請使用以下其中一種方法:
- 把動作往上或往下拖到你想要的位置。
- 選擇動作,然後按 CTRL + 上方向鍵或 CTRL + 向下箭頭。
- 選擇動作,然後點擊巨集窗右側的 「向上移動 」或「 向下移動 」箭頭。
刪除一個動作
要刪除巨集動作:
選擇動作,然後按下 DELETE 鍵。 或者,你也可以點擊巨集面板右側的 「刪除 (X) 」按鈕。
注意
- 如果你刪除一個動作區塊,例如 「如果」 封鎖或 群組 封鎖,該區塊中的所有動作也會被刪除。
- 「 向上移動」、「 向下移動」和 「刪除 」指令也可在你右鍵點擊巨集動作時出現的捷徑選單中使用。
控制程式流程,包含 If、Else If、Else
要只在特定條件成立時執行巨集動作,可以使用 If 區塊。 這取代了早期版本 Access 中使用的 條件 欄位。 你可以用 Else If 和 Else 區塊來擴充 If 區塊,類似其他序列程式語言如 VBA。
下圖展示了一個簡單的 If 區塊,包含 Else If 和 Else 區塊:
如果到期日欄位小於當前日期, If 區塊會執行。
當到期日期欄位等於當前日期時, Else If 區塊會執行。
如果之前的區塊都沒有執行,則執行 Else 區塊。
If 區塊到這裡結束。
在巨集中加入 If 區塊
- 從新增動作下拉選單選擇「如果」,或從動作目錄窗格拖曳到巨集窗格。
- 在 If 區塊頂端的方框中,輸入一個表達式,決定區塊何時執行。 該表達式必須是布林 (,也就是要評估為「是」或「否」) 。
- 若要在 If 區塊中新增動作,請從區塊內出現的 新增動作 下拉選單中選取,或從動作目錄窗格拖曳動作至 「如果」 區塊。
將 Else 或 Else If 區塊加入 if 區塊
選擇 theIfblock,然後在該區塊的右下角點擊 Add Else 或 Add Else If。
如果你要加入 Else If 區塊,請輸入一個表達式來決定該區塊何時執行。 該表達式必須是布林 (,也就是能評估為真或假) 。
若要在 Else If 或 Else 區塊中新增動作,請從區塊內的 新增動作 下拉選單中選取,或從動作目錄窗格拖曳動作至區塊。
注意
- 新增 If、 Else If 和 Else 方塊的指令,可以在你右鍵點擊巨集動作時出現的捷徑選單中使用。
- 如果 方塊可以巢狀到10層深。
建立子巨集
每個巨集可以包含多個子巨集。 子巨集設計為可從 RunMacro 或 OnError 巨集動作中呼喚。
你將 子巨集 區塊加入巨集的方式與加入巨集動作相同,如「 向巨集新增動作」章節所述。 新增子 巨集 區塊後,你可以將巨集動作拖曳其中,或從區塊內出現的 新增動作 列表中選擇動作。
注意
你也可以選擇一個或多個動作,右鍵點擊它們,然後選擇「製作子巨集區塊」來建立子巨集區塊。
子巨集必須永遠是巨集的最後一個區塊;你不能新增任何動作 (,除了在子巨集下方) 更多子巨集。 如果你執行一個只包含子巨集且未明確命名子巨集的巨集,只有第一個子巨集會執行。
例如,要呼叫子巨集 (,例如在事件屬性中,或使用 RunMacro 動作或 OnError 動作) ,請使用以下語法:
巨集名稱.子巨集名稱
將相關行動合併
你可以透過將動作分組並賦予有意義的名稱來提升巨集的可讀性。 例如,你可以將開啟並篩選表單的動作群組成一個名為「開啟並篩選表單」的群組。這讓判斷哪些動作彼此相關。 群組區塊不影響動作的執行方式,且無法單獨呼叫或執行群組。 它的主要用途是標註一組行動,幫助你在閱讀時理解巨集。 此外,在編輯大型巨集時,你可以將每個群組區塊壓縮成一行,減少捲動的次數。
如果你想分組的動作已經在巨集裡,請使用這個步驟將它們加入 群組 區塊:
- 選擇你想分組的動作。
- 右鍵點擊選取的動作,然後點 選「建立群組封鎖」。
- 在 群組 區塊頂端的方框中,輸入該群組的名稱。
如果這些動作尚未具備:
- 將 群組 區塊從動作目錄拖曳到巨集窗格。
- 在 群組 區塊頂端的方框中,輸入該群組的名稱。
- 將動作目錄中的巨集動作拖曳到 群組 區塊,或從區塊內出現的 新增動作 列表中選擇動作。
群組 方塊可以包含其他 群組 方塊,且巢狀層最多可達9層。
展開與摺疊巨集動作或區塊
當你建立新巨集時,巨集建構器會顯示所有參數的巨集動作。 根據巨集大小,你可能會想在編輯巨集時,將部分或全部巨集動作的 (和動作區塊) 收合。 這讓你更容易掌握巨集的整體結構。 你可以根據需要擴充部分或全部動作來編輯它們。
展開或收摺單一巨集動作或區塊
- 點擊加號 (+) 或 減號 (- 巨集或區塊名稱左側的) 號。 或者,按上箭頭和下箭頭鍵選擇動作或阻擋,再按左箭頭或右箭頭鍵摺疊或展開。
展開或收縮所有巨集動作 (但不阻擋)
- 在 設計 標籤的 摺疊/展開 群組中,點選 展開動作 或 摺疊動作。
展開或摺疊所有巨集動作和區塊
- 在設計標籤的摺疊/展開群組中,點選「全部展開」或「全部收成」。
秘訣
你可以透過將指標移到摺疊動作上方來「偷看」該動作。 Access 會以提示顯示動作參數。
複製並貼上巨集動作
如果你需要重複已經加入到巨集的動作,你可以像在文字處理器中複製並貼上文字段落一樣,將現有的動作複製貼上。 當你貼上動作時,它們會入在目前選取的動作下方。 如果選取方塊,動作會貼入該方塊內。
秘訣
要快速複製選取的動作,按住 CTRL 鍵,然後將動作 (S) 拖曳到你想複製的巨集位置。
與他人分享巨集
當你將巨集動作複製到剪貼簿時,可以將它們貼上為可擴充標記語言 (XML) ,貼上到任何接受文字的應用程式中。 這讓你可以透過電子郵件將巨集寄給同事,或是在討論區、部落格或其他網站上發布該巨集。 收件人接著可以複製該 XML 並貼上到他們的 Access 巨集建置器中。 巨集會像你寫的那樣重建。
執行巨集
您可以使用以下任一方法執行巨集:
- 在導航選區中雙擊巨集。
- 使用 RunMacro 或 OnError 巨集動作呼叫該巨集。
- 在物件的 Event 屬性中輸入巨集名稱。 當該事件觸發時,這個巨集會執行。
除錯一個巨集
如果你在執行一個巨集時遇到困難,有幾個工具可以幫你找到問題的根源。
在 巨集 中新增錯誤處理動作
我們建議在撰寫每個巨集時加入錯誤處理動作,並永久保留在巨集中。 使用此方法時,Access 會即時顯示錯誤描述。 錯誤描述能幫助你理解錯誤,讓你能更快修正問題。
請使用以下步驟將錯誤處理子巨集加入巨集:
- 在設計檢視中開啟巨集。
- 在巨集底部,從新增動作下拉選單中選擇子巨集。
- 在「 Submacro」字右側的方框中,輸入子巨集的名稱,例如 ErrorHandler。
- 從子巨集區塊內出現的新增動作下拉選單中,選擇訊息框巨集動作。
- 在 訊息 框中輸入以下文字: =[MacroError].[說明]
- 在巨集底部,從新增動作下拉選單選擇 OnError。
- 將 Go to 參數設為 巨集名稱。
- 在 巨集名稱 框中,輸入你錯誤處理子巨集的名稱, (ErrorHandler) 。
- 將 OnError 巨集動作拖曳到巨集的最頂端。
以下圖示展示了一個包含 OnError 動作的巨集,以及一個名為 ErrorHandler 的子巨集。
OnError 巨集動作置於巨集頂端,並在錯誤時呼叫 ErrorHandler 子巨集。
ErrorHandler 子巨集只有在被 OnError 動作呼叫時才會執行,並顯示描述錯誤的訊息框。
使用單步指令
單步是一種巨集除錯模式,你可以用來一次執行一個巨集動作。 每次執行後,會出現一個對話框,顯示該動作的資訊及因動作而產生的錯誤代碼。 然而,由於巨集單步對話框中沒有錯誤描述,我們建議使用前一節所述的錯誤處理子巨集方法。
開始單步模式:
- 在設計檢視中開啟巨集。
- 在 設計 標籤中, 工具群組中 ,點擊 單步。
- 儲存並關閉巨集。
下次執行巨集時,會出現巨 集單步 對話框。 對話框會顯示每個動作的以下資訊:
- 巨集名稱
- 條件 (若阻擋)
- 行動名稱
- 引數
- 錯誤號碼 (錯誤號碼為 0 表示未發生錯誤)
當你進行動作時,請點擊對話框中的三個按鈕之一:
要查看巨集中下一個動作的資訊,請按 Step。
要停止目前正在執行的任何巨集,請點擊 停止所有巨集。 下次執行巨集時,單步模式仍然有效。
要退出單步模式並繼續執行巨集,請點擊 繼續。
注意
- 如果你在巨集最後一個動作後按 Step ,下次執行巨集時單步模式仍會生效。
- 在巨集執行時,按下 CTRL+BREAK 即可進入單步模式。
- 要在巨集的特定點進入單步模式,請在該點新增單 步 巨集動作。
- 單步模式在網頁資料庫中沒有。
將巨集轉換成 VBA 程式碼
巨集提供了 Visual Basic for Applications (VBA) 程式語言中可用的指令子集。 如果你覺得需要比巨集能提供更多功能,你可以輕鬆地將獨立的巨集物件轉換成 VBA 程式碼,然後利用 VBA 所提供的擴充功能集。 不過請記住,VBA 程式碼無法在瀏覽器中執行;你加入網路資料庫的任何 VBA 程式碼,只有在資料庫在 Access 中開啟時才會執行。
注意
你無法將嵌入巨集轉換成 VBA 程式碼。
要將巨集轉換成 VBA 程式碼:
- 在導航選區中,右鍵點擊巨集物件,然後點選設計檢視。
- 在 設計 標籤的 工具 群組中,點擊 將巨集轉換為 Visual Basic。
- 在 「轉換」巨集 對話框中,指定是否要將錯誤處理程式碼和註解加入 VBA 模組,然後點擊 「轉換」。
Access 確認巨集已轉換,並開啟 Visual Basic 編輯器。 在專案窗格中雙擊「已轉換巨集」即可檢視並編輯模組。