在 Microsoft Access 中,附加至使用者介面 (UI) 物件(例如命令按鈕、文字方塊、表單和報表)的巨集稱為 UI 巨集。 這可別於附加至資料表的資料巨集。 您可以使用 (UI) 巨集來自動化一系列動作,例如開啟另一個物件、套用篩選、開始匯出作業,以及許多其他工作。 本文將向您介紹新重新設計的巨集建立器,並向您展示建立 UI 巨集所涉及的基本工作。
注意
本文內容不適用於 Access Web App。
本文內容
- 概觀
- 巨集建立器
- 建立獨立巨集
- 建立內嵌巨集
- 新增動作至巨集
- 使用 If、Else、If 及 Else 控制程式流程
- 建立子巨集
- 將相關動作分組在一起
- 展開與摺疊巨集指令或區塊
- 複製並貼上巨集動作
- 與其他人共用巨集
- 執行巨集
- 偵錯巨集
- 將巨集轉換為 VBA 程式碼
概觀
巨集可以包含在巨集物件中, (有時稱為獨立巨集) ,也可以內嵌至表單、報表或控制項的事件屬性中。 內嵌巨集會成為內嵌巨集所在的物件或控制項的一部分。 巨集物件可在 [瀏覽窗格] 的 [ 巨集] 下顯示;內嵌巨集則不需要。
每個巨集都由一個或多個巨集動作組成。 視您所處的內容而定,某些巨集動作可能無法使用。
巨集建立器
以下是巨集建立器的一些主要功能重點。
- 動作目錄 巨集動作會依類型組織且可搜尋。
- IntelliSense 輸入運算式時,IntelliSense 會建議可能的值,並讓您選取正確的值。
- 鍵盤快速鍵 使用按鍵組合更快、更輕鬆地編寫巨集。
- 程式流程 使用註解行和動作群組建立更易讀的巨集。
- 條件陳述式 透過支援巢狀 If/Else/Else If,允許執行更複雜的邏輯。
- 巨集重複使用 [動作目錄] 會顯示您建立的其他巨集,讓您可以將它們複製到您正在處理的巨集中。
- 輕鬆共用 複製巨集,然後以 XML 格式貼到電子郵件、新聞群組文章、部落格或程式碼範例網站中。
以下是一段影片,將引導您瞭解巨集建立器的主要區域。
建立獨立巨集
此程序會建立獨立的巨集物件,該物件將顯示在 [瀏覽窗格] 的 [巨集] 底下。 當您想要在應用程式的許多位置重複使用巨集時,獨立巨集非常有用。 藉由從其他巨巨集呼叫巨集,您可以避免在多個位置重複相同的程式碼。
在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。
Access 會開啟巨集建立器。
在快速存取工具列上按一下 [儲存]。
在 [另存新檔] 對話方塊中,輸入巨集的名稱,然後按一下 [確定]。
繼續使用「 將動作新增至巨集」一節。
建立內嵌巨集
此程序會建立內嵌在物件事件屬性中的巨集。 這類巨集不會出現在 [瀏覽窗格] 中,但可以從載入時或按一下時等事件呼叫。
由於巨集會成為表單或報表物件的一部分,因此建議使用內嵌巨集來自動化特定於特定表單或報表的工作。
在 [瀏覽窗格] 中,以滑鼠右鍵按一下將包含巨集的表單或報表,然後按一下 [版面配置檢視]。
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
按一下包含要內嵌巨集之事件屬性的控制項或區段。 您也可以使用屬性工作表頂端 [ 選取類型 ] 下的下拉式清單,選取 (控制項或章節) 或整個表單或報表。
在 [屬性工作表] 工作窗格中,按一下 [事件 ] 索引標籤。
按一下您要觸發巨集之事件的屬性方塊。 例如,對於命令按鈕,如果您想要在按一下按鈕時執行巨集,請按一下 [ 按一下時] 屬性方塊。
如果屬性方塊包含 [內嵌巨集] 字詞,這表示已為此事件建立巨集。 您可以繼續執行本程序中的其餘步驟來編輯巨集。
如果屬性方塊中含有 [事件程序] 字詞,這表示已為此事件建立 Visual Basic for Applications (VBA) 程序。 您必須先移除程序,才能將巨集內嵌在事件中。 您可以刪除 [事件程序] 字詞來進行這項操作,但您應該先檢查事件程序,以確保移除它並不會破壞資料庫中的必要功能。 在某些情況下,您可以使用內嵌巨集來重新建立 VBA 程序的功能。
按一下 [建置 ] 按鈕
。如果出現 [選擇建立器] 對話方塊,請確定已選取 [巨集建立器],然後按一下 [確定]。
Access 會開啟巨集建立器。 繼續進行下一節,將動作新增至巨集。
新增動作至巨集
動作是組成巨集的個別命令,每個命令都會根據其功能來命名,例如 FindRecord 或 CloseDatabase。
步驟 1: 瀏覽或搜尋巨集指令
新增動作的第一個步驟是在 [新增動作] 下拉式清單或 [動作目錄] 中尋找動作。
注意
根據預設, [新增動作 ] 下拉式清單和 [動作目錄] 只會顯示將在非信任資料庫中執行的動作。 若要查看所有動作:
- 在 [設計] 索引標籤上,於 [顯示/隱藏] 群組中按一下 [顯示所有巨集指令]。
如果未顯示 [動作目錄],請在 [ 設計 ] 索引標籤上的 [ 顯示/隱藏 ] 群組中,按一下 [動作目錄]。
若要尋找動作,請使用下列其中一個方法:
- 按一下 [新增動作] 下拉式清單中的箭號,然後向下捲動以尋找所需動作。 會先列出程式流程元素,然後依字母順序列出巨集動作。
- 在 [動作目錄] 窗格中瀏覽動作。 動作會依類別分組。 展開每個類別以檢視動作。 如果您選取了動作,則動作的簡短描述會顯示在 [動作目錄] 底部。
- 在窗格頂端的 [搜尋] 方塊中輸入,以在 [動作目錄] 窗格中搜尋動作。 當您輸入時,系統會篩選動作清單以顯示包含該文字的所有巨集。 Access 會同時搜尋您輸入之文字的巨集名稱及其描述。
步驟 2:將動作新增至巨集
找到您想要的巨集指令後,請使用下列其中一種方法將其新增至巨集:
在 [新增動作] 清單中選取動作,或直接在方塊中輸入動作名稱。 Access 會在 [ 新增動作 ] 清單顯示的位置新增動作。
將動作從 [動作目錄] 拖曳到巨集窗格。 放開滑鼠按鍵時,系統會顯示插入列,顯示插入動作的位置。
按兩下 [動作目錄] 中的動作。
如果已在巨集窗格中選取了某個動作,Access 就會在選取的動作正下方新增新動作。
如果在巨集窗格中選取了 群組、 If、 Else If、 Else 或子 巨集 區塊巨集,Access 會將新巨集指令新增到該區塊。
如果 [巨集] 窗格中沒有選取任何動作或區塊,Access 會將新動作新增至巨集的結尾。
注意
如果您已經建立一或多個巨集,它們會列在 [動作目錄] 的 [ 在此資料庫] 節點下。
- 將獨立巨集拖曳 ([ 巨集) ] 下列出的巨集窗格中,會建立執行您拖曳巨集的 RunMacro 巨集指令。 接著,您可以使用下拉式清單來呼叫子巨集 (如果有)。
- 如果您只想將動作從獨立巨集複製到目前的巨集 (,而不是建立 RunMacro 動作) ,請在 [動作目錄] 中以滑鼠右鍵按一下它,然後按一下 [ 新增巨集複本]。
- 將內嵌巨集拖曳 (表單或報表物件) 下所列的巨集窗格中,可將該巨集的動作複製到目前的巨集。
您也可以將資料庫物件從 [瀏覽窗格] 拖曳至 [巨集] 窗格,以建立動作。 如果您將資料表、查詢、表單、報表或模組拖曳到巨集窗格,Access 會新增一個動作來開啟資料表、查詢、表單或報表。 如果您將另一個巨集拖曳到巨集窗格中,Access 會新增執行該巨集的巨集指令。
步驟 3:填入引數
大部分巨集指令至少需要一個引數。 您可以選取動作,然後將指標移到引數上方,以檢視每個引數的描述。 對於許多引數,您可以從下拉式清單中選取值。 如果引數需要您輸入運算式,IntelliSense 會在您輸入時建議可能的值,以協助您輸入運算式,如下圖所示:
當您看到想要使用的值時,請按兩下該值或使用方向鍵反白,然後按 TAB 或 ENTER 鍵,將該值新增至運算式。
如需建立運算式的詳細資訊,請參閱 運算式簡介一文。
關於搭配 Web 資料庫中的屬性使用 IntelliSense
當您在與 Web 相容的表單上建立內嵌 UI 巨集時,IntelliSense 可讓您將任何表單屬性新增至運算式。 不過,在 Web 資料庫中,只能使用 UI 巨集存取表單屬性的子集。 例如,假設在名為 Form1 的表單上有一個名為 Control1 的控制項,IntelliSense 將允許您新增 [表單]![表格1]![控制1]。UI 巨集中的運算式的 [ControlSource]。 不過,如果您接著將資料庫發佈至 Access Services,包含該運算式的巨集在伺服器上執行時就會產生錯誤。
下表顯示可用於 Web 資料庫中 UI 巨集的屬性:
移動動作
動作會依巨集從頂端到底部的順序執行。 若要在巨集中向上或向下移動動作,請使用下列其中一種方法:
- 將動作向上或向下拖曳至您想要的位置。
- 選取動作,然後按 CTRL + 向上鍵或 CTRL + 向下鍵。
- 選取動作,然後按一下巨集窗格右側的 [ 上移 ] 或 [ 下移 ] 箭號。
刪除動作
若要刪除巨集指令:
選取動作,然後按 DELETE 鍵。 或者,您也可以按一下 [巨集] 窗格右側的 [刪除 (X) ] 按鈕。
注意
- 如果刪除動作區塊,例如 [If ] 區塊或 [群組 ] 區塊,該區塊中的所有動作也會一併刪除。
- [ 上移]、[ 下移] 和 [ 刪除 ] 命令也可以在您以滑鼠右鍵按一下巨集動作時出現的快顯功能表上使用。
使用 If、Else、If 及 Else 控制程式流程
若要僅在特定條件為 True 時才執行巨集指令,您可以使用 If 區塊。 這會取代舊版 Access 中使用的 [狀況 ] 資料欄位。 您可以使用 Else、If 和 Else 區塊來擴充 If 區塊,類似於其他循序程式語言,例如 VBA。
下圖顯示簡單的 If 區塊,包括 Else If 和 Else 區塊:
如果 [ExpirationDate ] 欄位小於目前日期,則會執行 If 區塊。
如果 ExpirationDate 欄位等於目前日期,則會執行 Else If 區塊。
如果先前的區塊都未執行,則會執行 Else 區塊。
If 區塊到此結束。
新增 If 區塊至巨集
- 從 [新增動作] 下拉式清單中選取 [如果],或將它從 [動作目錄] 窗格拖曳到巨集窗格。
- 在 If 區塊頂端的方塊中,輸入判斷何時執行區塊的運算式。 運算式必須是布林值 (也就是說,評估為 [是] 或 [否]) 。
- 從區塊內顯示的 [新增動作] 下拉式清單中選取動作,或將動作從 [動作目錄] 窗格拖曳至 [If] 區塊,即可新增動作至 [If] 區塊。
將 Else 或 Else If 區塊新增至 If 區塊
選取 [如果] 區塊,然後在區塊右下角按一下 [新增否則 ] 或 [新增其他如果]。
如果您要新增 Else If 區塊,請輸入判斷何時執行區塊的運算式。 運算式必須是布林值 (也就是說,評估為 True 或 False) 。
從區塊內顯示的 [新增動作] 下拉式清單中選取動作,或從 [動作目錄] 窗格拖曳到區塊,以新增動作至 [Else If] 或 [Else] 區塊。
注意
- 新增 If、 Else If 和 Else 區塊的命令可在您以滑鼠右鍵按一下巨集指令時出現的快顯功能表上使用。
- 如果區塊可以巢狀結構,最多 10 層深。
建立子巨集
每一個巨集可以包含多個子巨集。 子巨集的設計是根據 RunMacro 或 OnError 巨集指令中的巨集指令來呼叫。
將 子巨集 區塊新增到巨集的方式與巨集動作的方式相同,如新增 動作至巨集一節中所述。 新增 子巨集 區塊之後,您可以將巨集指令拖曳到其中,或從區塊內顯示的 [ 新增動作 ] 清單中選取動作。
注意
您也可以選取一個或多個動作,以滑鼠右鍵按一下它們,然後選取 [製作子巨集區塊] 來建立子巨集區塊。
子巨集必須一律是巨集中的最後一個區塊;除了子巨集下方) 的其他子巨集外,您無法新增任何動作 (。 如果您執行的巨集只包含子巨集,但沒有特別命名您想要的子巨集,則只會執行第一個子巨集。
例如,若要呼叫子巨集 (,在事件屬性中,或使用 RunMacro 巨集指令或 OnError 巨集指令) ,請使用下列語法:
macroname.submacroname
將相關動作分組在一起
您可以透過將動作分組在一起並為群組指派有意義的名稱來改善巨集的可讀性。 例如,您可以將開啟並篩選表單的動作分組到名為「開啟並篩選表單」的群組中。這可讓您更容易查看哪些動作彼此相關。 群組區塊不會影響動作的執行方式,且無法個別呼叫或執行群組。 其主要用途是用來標記一組動作,以協助您在閱讀時了解巨集。 此外,在編輯大型巨集時,您可以將每個組塊折疊成一行,從而減少您必須執行的滾動量。
如果您想要分組的動作已在巨集中,請使用下列程序將它們新增至 [群組 ] 區塊:
- 選取您要分組的動作。
- 以滑鼠右鍵按一下選取的動作,然後按一下 [建立群組區塊]。
- 在 [群組 ] 區塊頂端的方塊中,輸入群組的名稱。
如果動作尚未存在:
- 將 [群組 ] 區塊從 [動作目錄] 拖曳到巨集窗格。
- 在 [群組 ] 區塊頂端的方塊中,輸入群組的名稱。
- 將巨集指令從 [動作目錄] 拖曳至 [ 群組 ] 區塊,或從區塊內顯示的 [ 新增動作 ] 清單中選取動作。
群組 區塊可以包含其他 群組 區塊,且巢狀結構最多可達 9 層。
展開與摺疊巨集指令或區塊
當您建立新的巨集時,巨集建立器會顯示所有引數可見的巨集動作。 視巨集的大小而定,您可能想要在編輯巨集時,摺疊部分或所有的巨集動作 (和) 的動作區塊。 這可讓您更輕鬆地取得巨集結構的整體視圖。 您可以視需要展開部分或全部動作來進行編輯。
展開或摺疊單一巨集指令或區塊
- 按一下巨集或區塊名稱左側的加號 (+) 或減號 (-) 符號。 或者,按向上鍵和向下鍵來選取動作或區塊,然後按向左鍵或向右鍵以摺疊或展開。
展開或摺疊所有巨集動作 (但不能封鎖)
- 在 [設計 ] 索引標籤的 [ 摺疊/展開 ] 群組中,按一下 [ 展開動作] 或 [ 摺疊動作]。
展開或摺疊所有巨集指令和區塊
- 在 [ 設計 ] 索引標籤的 [ 摺疊/展開 ] 群組中,按一下 [ 全部展開 ] 或 [全部摺疊]。
秘訣
您可以將指標移到動作上,以「預覽」摺疊的動作內部。 Access 會在工具提示中顯示巨集指令引數。
複製並貼上巨集動作
如果您需要重複已新增至巨集的動作,您可以複製並貼上現有的動作,就像在文字處理器中複製文字段落一樣。 當您貼上動作時,它們會插入目前選取的動作正下方。 如果選取了區塊,則動作會貼上區塊內。
秘訣
若要快速複製選取的動作,請按住 CTRL 鍵,然後將動作 () 拖曳至巨集中您要複製的位置。
與其他人共用巨集
當您將巨集動作複製到剪貼簿時,它們可以作為可延伸標記語言 (XML) 貼到任何接受文字的應用程式中。 這可讓您透過電子郵件將巨集傳送給同事,或將巨集張貼在討論論壇、部落格或其他網站上。 然後,收件者可以複製 XML 並將其貼到他們的 Access 巨集建立器中。 巨集會按照您編寫的方式重新建立。
執行巨集
您可以使用下列任一方法來執行巨集:
- 按兩下 [瀏覽窗格] 中的巨集。
- 使用 RunMacro 或 OnError 巨集指令來呼叫巨集。
- 在物件的 Event 屬性中輸入巨集名稱。 巨集會在觸發該事件時執行。
偵錯巨集
如果您在執行巨集時遇到問題,您可以使用一些工具來找到問題的根源。
在巨集中新增錯誤處理動作
建議您在撰寫巨集時為每個巨集新增錯誤處理動作,並將它們永久保留在巨集中。 使用此方法時,Access 會在錯誤發生時顯示相關說明。 錯誤說明可協助您瞭解錯誤,以便您更快速地修正問題。
使用下列程序將錯誤處理子巨集新增至巨集:
- 在 [設計檢視] 中開啟巨集。
- 在巨集底部,從 [新增動作] 下拉式清單中選取 [子巨集]。
- 在 [子巨集] 一字右邊的方塊中,輸入子巨集的名稱,如 ErrorHandler。
- 從子巨集區塊內顯示的 [新增動作] 下拉式清單中,選取 MessageBox 巨集動作。
- 在 訊息 方塊中,輸入下列文字: =[MacroError].[描述]
- 在巨集底部,從 [新增動作] 下拉式清單中選取 [OnError]。
- 將 [移至 ] 引數設定為 [巨集名稱]。
- 在 [巨集名稱 ] 方塊中,輸入錯誤處理子巨集的名稱, (在此範例中為 ErrorHandler) 。
- 將 OnError 巨集指令拖曳到巨集的最頂端。
下圖顯示含有 OnError 指令的巨集和名為 ErrorHandler 的子巨集。
OnError 巨集指令位於巨集的頂端,並在發生錯誤時呼叫 ErrorHandler 子巨集。
只有在 OnError 指令呼叫 ErrorHandler 子巨集時才會執行,並顯示描述錯誤的訊息方塊。
使用單一步驟命令
單一步驟是一種巨集偵錯模式,您可以使用它一次執行一個巨集動作。 執行每個動作之後,會出現一個對話方塊,顯示動作的相關資訊,以及因此而產生的任何錯誤碼。 不過,由於 [巨集單一步驟] 對話方塊中沒有錯誤的描述,我們建議您使用前一節所述的錯誤處理子巨集方法。
若要啟動逐步模式:
- 在 [設計檢視] 中開啟巨集。
- 在 [ 設計 ] 索引標籤的 [工具 ] 群組中,按一下 [單一步驟]。
- 儲存並關閉巨集。
下次執行巨集時,會出現 [巨集單一步驟 ] 對話方塊。 對話方塊會顯示每個動作的下列相關資訊:
- 巨集名稱
- If 封鎖) 的條件 (
- 動作名稱
- 引數
- 錯誤編號 (錯誤碼 0 表示未發生錯誤)
逐步執行動作時,請按一下對話方塊中三個按鈕的其中一個:
若要查看巨集中下一個動作的相關資訊,請按 [步驟]。
若要停止任何目前正在執行的巨集,請按一下 [停止所有巨集]。 下次執行巨集時,逐步執行模式仍會生效。
若要結束逐步執行模式並繼續執行巨集,請按一下 [繼續]。
注意
- 如果您在巨集的最後一個動作之後按下 步驟 ,下次執行巨集時,逐步執行模式仍會生效。
- 若要在巨集執行時進入逐步執行模式,請按 CTRL+BREAK。
- 若要在巨集中的特定點進入逐步執行模式,請在該點新增 SingleStep 巨集動作。
- 單步驟模式不適用於 Web 資料庫。
將巨集轉換為 VBA 程式碼
巨集提供 VBA) 程式設計語言 (Visual Basic for Applications 中可用的命令子集。 如果您認為需要的功能多於巨集所能提供的功能,您可以輕鬆地將獨立巨集物件轉換為 VBA 程式碼,然後使用 VBA 提供的擴充功能集。 不過請記住,VBA 程式碼不會在瀏覽器中執行;您新增至 Web 資料庫的任何 VBA 程式碼只有在資料庫在 Access 中開啟時才會執行。
注意
您無法將內嵌巨集轉換成 VBA 程式碼。
若要將巨集轉換為 VBA 程式碼:
- 在 [瀏覽窗格] 中,以滑鼠右鍵按一下巨集物件,然後按一下 [設計檢視]。
- 在 [ 設計 ] 索引標籤的 [工具 ] 群組中,按一下 [ 將巨集轉換為 Visual Basic]。
- 在 [轉換巨集 ] 對話方塊中,指定是否要將錯誤處理程式碼和註解新增至 VBA 模組,然後按一下 [轉換]。
Access 確認巨集已轉換,並開啟 Visual Basic 編輯器。 按兩下 [專案] 窗格中的 [轉換後的巨集] 以檢視和編輯模組。