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