在 Microsoft Access 中,附加至使用者介面 (UI) 物件 (例如命令按鈕、文字方塊、表單和報表) 的巨集稱為 UI 巨集。 這會將它們與附加至表格的資料巨集區分開來。 您可以使用 (UI) 巨集來自動化一系列動作,例如開啟另一個物件、套用篩選器、啟動匯出作業,以及許多其他工作。 本文向您介紹新設計的巨集產生器,並向您展示建立 UI 巨集所涉及的基本工作。
附註: 本文內容不適用於 Access Web App。
本文內容
概觀
巨集可以包含在巨集物件中 (有時稱為獨立巨集) ,也可以內嵌到表單、報表或控制項的事件屬性中。 內嵌巨集會成為內嵌其物件或控制項的一部分。 巨集物件會顯示在 [導覽窗格] 的 [巨集] 底下;內嵌巨集則不然。
每一個巨集都由一或多個巨集動作所組成。 視您正在處理的內容而定,某些巨集動作可能無法使用。
巨集建立器
以下是巨集產生器的一些主要功能亮點。
-
動作目錄 巨集動作會依類型組織且可搜尋。
-
IntelliSense 輸入運算式時,IntelliSense 會建議可能的值,並讓您選取正確的值。
-
鍵盤快速鍵 使用組合鍵可以更快、更輕鬆地編寫巨集。
-
程序流程 使用註釋行和操作組創建更具可讀性的巨集。
-
條件陳述式 允許更複雜的邏輯執行,並支援巢狀 If/Else/Else If。
-
巨集重複使用 動作目錄會顯示您建立的其他巨集,讓您將它們複製到您正在處理的巨集中。
-
更輕鬆的共享 複製巨集,然後將它貼到 XML 格式,以電子郵件、新聞群組文章、部落格或程式碼範例網站。
這是一個視頻,引導您了解巨集構建器的主要區域。
建立獨立的巨集
此程序會建立一個獨立的巨集物件,該物件將顯示在導覽窗格的 巨集 下。 當您想要在應用程式的許多位置重複使用巨集時,獨立巨集非常有用。 透過從其他巨集呼叫巨集,可以避免在多個地方重複相同的程式碼。
-
在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。
Access 會開啟巨集產生器。 -
在快速存取工具列上 ,按一下儲存。
-
在 [另存新檔] 對話方塊中,輸入巨集的名稱,然後按一下 [確定]。
-
繼續 將 動作新增至巨集 一節。
建立內嵌巨集
此程序會建立內嵌在物件事件屬性中的巨集。 這類巨集不會出現在導覽窗格中,但可以從 On Load 或 On Click 等事件呼叫。
由於巨集會成為表單或報表物件的一部分,因此建議使用內嵌巨集來自動化特定表單或報表特定的工作。
-
在 [導覽窗格] 中,以滑鼠右鍵按一下將包含巨集的表單或報表,然後按一下 [版面配置檢視]。
-
如果沒有顯示屬性表,請按 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 鍵,將其新增至運算式。
如需建立運算式的詳細資訊,請參閱文章 運算式簡介。
關於將 IntelliSense 與 Web 資料庫中的屬性搭配使用
當您在 Web 相容的表單上建立內嵌 UI 巨集時,IntelliSense 可讓您將任何表單屬性新增至運算式。 不過,在 Web 資料庫中,只能使用 UI 巨集存取表單屬性的子集。 例如,在名為 Form1 的表單上假設名為 Control1 的控制項,IntelliSense 會讓您新增 [Forms![表格1]![控制1]。[ControlSource] 新增至 UI 巨集中的運算式。 不過,如果您接著將資料庫發佈至 Access Services,則包含該運算式的巨集在伺服器上執行時會產生錯誤。
下表顯示您可以在 Web 資料庫的 UI 巨集中使用的屬性:
物件或控制項 |
您可以使用的屬性 |
---|---|
表單 |
標題、髒、允許新增、允許刪除、允許編輯 |
索引標籤控制項 |
Visible |
標籤 |
標題、可見、前色、背面顏色 |
附件 |
可見、已啟用 |
命令按鈕 |
標題、可見、啟用、前色 |
特克斯 tBox |
已啟用、可見、鎖定、前色、背面顏色、值 |
核取方塊 |
已啟用、可見、鎖定、值 |
影像 |
可見,背面顏色 |
下拉式方塊 |
已啟用、可見、鎖定、值 |
清單方塊 |
已啟用、可見、鎖定、值 |
網頁瀏覽器 |
Visible |
子表單 |
已啟用,可見鎖定 |
導航控制 |
已啟用,可見 |
移動動作
動作會依巨集的上端到底部依序執行。 若要在巨集中向上或向下移動動作,請使用下列其中一種方法:
-
將動作向上或向下拖曳到您想要的位置。
-
選取動作,然後按 CTRL + 向上鍵或 CTRL + 向下鍵。
-
選取動作,然後按一下巨集窗格右側的 [上移 ] 或 [向下移動 ] 箭號。
刪除動作
若要刪除巨集動作:
-
選取動作,然後按 DELETE 鍵。 或者,您可以單擊 刪除 (X) 巨集窗格右側的按鈕。
附註:
-
如果您刪除動作區塊 (例如 If 區塊或 群組 區塊),則區塊中的所有動作也會被刪除。
-
「 上移」、「 下移」和 「刪除 」指令也可在您以滑鼠右鍵按一下巨集動作時出現的捷徑功能表上使用。
-
使用 If、Else If 和 Else 控制程式流程
若要僅在特定條件成立時執行巨集動作,請使用 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] 或 [新增 Else 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 巨集動作呼叫巨集。
-
在物件的 [事件] 屬性中輸入巨集名稱。 巨集將在觸發該事件時執行。
偵錯巨集
如果您在執行巨集時遇到問題,您可以使用一些工具來找出問題的根源。
將錯誤處理動作新增至巨集
建議您在撰寫時將錯誤處理動作新增至每個巨集,並將它們永久保留在巨集中。 當您使用此方法時,Access 會在發生錯誤時顯示錯誤的描述。 錯誤說明可協助您瞭解錯誤,以便更快速地修正問題。
使用下列程序將錯誤處理子巨集新增至巨集:
-
在 [設計] 檢視中開啟巨集。
-
在巨集底部,從 [新增動作] 下拉式清單中選取 [子巨集]。
-
在 [子巨集] 一詞右側的方塊中,輸入子巨集的名稱,例如 ErrorHandler。
-
從 [子巨集] 區塊內顯示的 [新增動作] 下拉式清單中,選取 [訊息方塊] 巨集動作。
-
在 [訊息] 方塊中,輸入下列文字: =[MacroError]。產品描述]
-
在巨集底部,從 [新增動作] 下拉式清單中選取 [OnError]。
-
將 [移至 ] 引數設定為 [巨集名稱]。
-
在 [巨集名稱 ] 方塊中,輸入錯誤處理子巨集的名稱, (在此範例中, ErrorHandler) 。
-
將 OnError 巨集動作拖曳至巨集的最頂端。
下圖顯示具有 OnError 動作的巨集,以及名為 ErrorHandler 的子巨集。
OnError 巨集動作會放在巨集頂端,並在發生錯誤時呼叫 ErrorHandler 子巨集。
只有在 OnError 動作呼叫 ErrorHandler 子宏時,才會執行,並顯示描述錯誤的訊息方塊。
使用「單一步驟」指令
單一步驟是一種巨集偵錯模式,可用來一次執行一個動作的巨集。 執行每個動作之後,會出現一個對話方塊,顯示動作的相關資訊,以及因此而發生的任何錯誤碼。 不過,由於 [巨集單一步驟] 對話方塊中沒有錯誤的描述,因此建議您使用上一節所述的錯誤處理子巨集方法。
若要啟動單步模式:
-
在 [設計] 檢視中開啟巨集。
-
在 [設計 ] 索引標籤的 [工具] 群組中,按一下 [單一步驟]。
-
儲存並關閉巨集。
下次執行巨集時,會出現 [巨集單一步驟 ] 對話方塊。 對話方塊會顯示每個動作的下列資訊:
-
巨集名稱
-
如果區塊) 的條件 (
-
動作名稱
-
引數
-
錯誤編號 (錯誤編號 0 表示未發生錯誤)
當您逐步執行動作時,按一下對話方塊中的三個按鈕之一:
-
若要查看巨集中下一個動作的相關資訊,請按 步驟。
-
若要停止目前執行中的任何巨集,請按一下 [停止所有巨集]。 單步模式在下次執行巨集時仍會生效。
-
若要結束單一步驟模式並繼續執行巨集,請按一下繼續。
附註:
-
如果您在巨集中的最後一個動作後按 「步驟」 ,則下次執行巨集時,「單一步驟」模式仍會生效。
-
若要在巨集執行時進入單一步驟模式,請按 CTRL+BREAK。
-
若要在巨集中的特定點進入「單一步驟」模式,請在該點新增 「單一步驟 」巨集動作。
-
單一步驟模式在 Web 資料庫中無法使用。
-
將巨集轉換為 VBA 代碼
巨集提供 Visual Basic for Applications (VBA) 程式設計語言中可用的命令子集。 如果您決定需要比巨集所能提供的功能更多,您可以輕鬆地將獨立巨集物件轉換為 VBA 程式碼,然後利用 VBA 提供的擴充功能集。 但是請記住,VBA 代碼不會在瀏覽器中運行;您新增至 Web 資料庫的任何 VBA 程式碼只會在資料庫在 Access 中開啟時執行。
附註: 您無法將嵌入的巨集轉換為 VBA 代碼。
若要將巨集轉換為 VBA 程式碼:
-
在 [導覽窗格] 中,以滑鼠右鍵按一下巨集物件,然後按一下 [設計檢視]。
-
在 [ 設計 ] 索引標籤的 [工具] 群組中,按一下 [將巨集轉換為 Visual Basic]。
-
在 [轉換巨集] 對話方塊中,指定是否要將錯誤處理程式碼和註解新增至 VBA 模組,然後按一下 [轉換]。
Access 會確認巨集已轉換,並開啟 Visual Basic 編輯器。 按兩下 [專案] 窗格中的 [已轉換的巨集] ,以檢視和編輯模組。