在 Microsoft Access 中,附加至使用者介面(UI)物件(例如命令按鈕、文字方塊、表單和報表)的宏稱為 UI 宏。 這會將它們與附加至表格的資料宏區分開來。 您可以使用(UI)宏來自動執行一系列的動作,例如開啟另一個物件、套用篩選、開始匯出作業,以及許多其他工作。 本文將向您介紹新近重新設計的宏建立器,並顯示建立 UI 宏所涉及的基本工作。
附註: 本文不適用於 Access web app。
本文內容
概觀
宏可以包含在宏物件(有時稱為獨立宏),也可以內嵌在表單、報表或控制項的事件屬性中。 嵌入的宏會成為其内嵌物件或控制項的一部分。 宏物件會顯示在功能窗格中的 [宏] 底下;嵌入的宏不會。
每個宏都是由一或多個宏動作所組成。 視您使用的內容而定,某些宏動作可能無法使用。
巨集建立器
以下是宏建立器的一些主要功能重點。
-
[動作目錄] 宏動作是依類型和可搜尋的方式來組織。
-
IntelliSense 輸入運算式時,IntelliSense 會建議可能的值,並讓您選取正確的值。
-
鍵盤快速鍵 使用按鍵組合,以更快、更輕鬆地撰寫宏。
-
程式流程 使用批註行和動作群組建立更容易閱讀的宏。
-
條件陳述式 允許更複雜的邏輯執行,包括支援嵌套 If/Else if。
-
宏重複使用 [動作目錄] 會顯示您已建立的其他宏,讓您將它們複製到您正在使用的宏。
-
輕鬆共用 複製宏,然後將其以 XML 形式貼到電子郵件、新聞群組文章、博客或程式碼範例網站中。
以下影片會逐步引導您完成宏產生器的主要區域。

建立獨立的宏
這個程式會建立一個獨立的宏物件,該物件會出現在 [功能窗格] 中的 [宏] 底下。 當您想要在應用程式的許多位置重複使用宏時,可以使用獨立的宏。 您可以從其他宏呼叫宏,避免將相同的程式碼複製到多個位置。
-
在 [建立] 索引標籤上,按一下 [巨集與程式碼] 群組中的 [巨集]。
Access 隨即開啟 [宏建立器]。 -
按一下 [快速存取工具列] 上的 [儲存]。
-
在 [另存新檔] 對話方塊中,輸入宏的名稱,然後按一下 [確定]。
-
繼續使用 [新增動作至宏] 區段。
建立內嵌宏
這個程式會建立內嵌在物件事件屬性中的宏。 這類宏不會出現在 [功能窗格] 中,但可從事件(例如 [載入] 或 [按一下時])呼叫。
因為宏會成為表單或報表物件的一部分,所以建議使用內嵌宏來自動執行特定表單或報表的工作。
-
在 [功能窗格] 中,以滑鼠右鍵按一下將包含宏的表單或報表,然後按一下 [版面配置視圖]。
-
如果沒有顯示屬性表,請按 F4 以顯示屬性表。
-
按一下包含您要內嵌宏之事件屬性的控制項或節。 您也可以使用屬性工作表頂端 [選取類型] 底下的下拉式清單,來選取控制項或節(或整個表單或報表)。
-
在 [屬性工作表] 工作窗格中,按一下 [事件] 索引標籤。
-
在您要觸發宏的事件的屬性方塊中按一下。 例如,如果您想要在按一下按鈕時執行宏,請按一下命令按鈕,然後在 [按一下] 屬性方塊中按一下。
-
如果屬性方塊包含[內嵌宏]這三個字,這表示已為此事件建立宏。 您可以繼續執行此程式中的其餘步驟,以編輯宏。
-
如果屬性方塊包含單字[事件程式],則表示已經針對此事件建立 Visual Basic for APPLICATIONS (VBA)程式。 您必須先移除程式,才能將宏內嵌在事件中。 您可以透過刪除單字[事件程式]來執行此動作,但您應該先檢查事件程式,以確保移除它不會中斷資料庫所需的功能。 在某些情況下,您可以使用嵌入的宏來重新建立 VBA 程式的功能。
-
按一下 [建立] 按鈕
。
-
如果出現 [選擇建立器] 對話方塊,請確認已選取 [宏建立器],然後按一下[確定]。
Access 隨即開啟 [宏建立器]。 繼續進行下一節,以新增動作至宏。
新增動作至宏
動作是組成宏的個別命令,每個指令都根據它的用途(例如, FindRecord或CloseDatabase)來命名。
步驟1:流覽或搜尋巨集指令
新增動作的第一個步驟是在 [新增動作] 下拉式清單或 [動作目錄] 中找到它。
附註:
-
根據預設,[新增動作] 下拉式清單和 [動作編目] 只會顯示將在不受信任的資料庫中執行的動作。 若要查看所有動作:
-
在 [設計] 索引標籤的 [顯示/隱藏] 群組中,按一下 [顯示所有動作]。
-
-
如果未顯示 [動作目錄],請在 [設計] 索引標籤的 [顯示/隱藏] 群組中,按一下 [動作目錄]。
若要尋找動作,請使用下列其中一種方法:
-
按一下 [新增動作] 下拉式清單中的箭號,然後向下拖曳以尋找動作。 程式流程元素首先列出,然後宏動作會依字母順序列出。
-
在 [動作目錄] 窗格中流覽動作。 動作會依類別分組。 展開每個類別,以查看動作。 如果您選取某個動作,動作目錄的底部會出現該動作的簡短描述。
-
在 [動作目錄] 窗格中,在窗格頂端的 [搜尋] 方塊中輸入,以搜尋動作。 在您輸入時,會將動作清單篩選為顯示包含該文字的所有宏。 Access 會針對您所輸入的文字,搜尋宏名稱和它們的描述。
步驟2:將動作新增至宏
一旦您找到想要的巨集指令,請使用下列其中一種方法將它新增到宏:
-
在 [新增動作] 清單中選取一個動作,或直接在方塊中輸入動作名稱。 Access 會在顯示 [新增] 動作清單的位置新增動作。
-
將動作從 [動作] 目錄拖曳到 [宏] 窗格。 插入列隨即出現,顯示當您放開滑鼠按鍵時,會插入動作的位置。
-
按兩下 [動作目錄] 中的動作。
-
如果在 [宏窗格] 中選取一個動作,Access 就會將新的動作新增至所選項目的正下方。
-
如果在 [宏窗格] 中選取群組、 if、else 或Submacro組塊,Access就會將新的動作新增到該區塊。
-
如果在 [宏窗格] 中沒有選取任何動作或封鎖,Access 會將新的動作新增至宏的結尾。
附註:
-
如果您已經建立一個或多個宏,它們會列于 [動作目錄] 中的 [在此資料庫中] 節點底下。
-
將獨立宏(在 [宏] 下方所列的宏)拖曳到 [宏窗格] 中,會建立一個可執行您所拖曳之宏的RunMacro動作。 然後,您可以使用下拉式清單來呼叫 submacros (如果有的話)。
-
如果您只想將獨立宏的動作複製到目前的宏(而不是建立RunMacro動作),請在 [動作目錄] 中以滑鼠右鍵按一下該宏,然後按一下 [新增宏複本]。
-
將內嵌宏(列于表單或報表物件下方)拖曳到 [宏窗格],即可將該宏的動作複製到目前的宏中。
-
-
您也可以從 [功能窗格] 將資料庫物件拖曳到 [宏] 窗格,以建立動作。 如果您將資料表、查詢、表單、報表或模組拖曳至 [宏窗格],Access 會新增一個動作來開啟資料表、查詢、表單或報表。 如果您將另一個宏拖曳到 [宏窗格],Access 會新增執行宏的動作。
-
-
步驟3:填入引數
大多數的宏動作至少需要一個引數。 您可以選取動作,然後將指標移到引數上方,即可查看每個引數的描述。 對於許多引數,您可以從下拉式清單中選取一個值。 如果引數需要您在運算式中輸入,IntelliSense 可協助您輸入運算式,方法如下圖所示:
當您看到想要使用的值時,按兩下運算式將它新增到您的運算式,或使用方向鍵來醒目提示,然後按 TAB 或 ENTER 鍵。
如需建立運算式的詳細資訊,請參閱運算式簡介一文。
關於在 web 資料庫中使用 IntelliSense 與屬性
當您在與 web 相容的表單上建立內嵌 UI 宏時,IntelliSense 可讓您將任何 form 屬性新增到運算式中。 不過,在 web 資料庫中,只能使用 UI 宏來存取表單屬性的子集。 例如,在名為 Form1 的表單上,假設有一個名為 Control1 的控制項,IntelliSense 會讓您新增 [Forms]![Form1]![Control1].[ControlSource] 移至 UI 宏中的運算式。 不過,如果您接著將資料庫發佈到 Access 服務,則包含該運算式的宏在伺服器上執行時,就會產生錯誤。
下表顯示您可以在 web 資料庫的 UI 宏中使用的屬性:
您可以使用的屬性 | |
---|---|
表單 |
標題、已更新、允許編輯、[允許編輯] |
索引標籤控制項 |
Visible |
標籤 |
[標題]、[可見]、[前景色彩]、[背景色彩] |
附件 |
可見、已啟用 |
命令按鈕 |
標題、可見、已啟用、前景色彩 |
Tex tBox |
已啟用、可見、鎖定、前景色、背景色、值 |
核取方塊 |
已啟用、可見、鎖定、值 |
影像 |
可見、背景色彩 |
下拉式方塊 |
已啟用、可見、鎖定、值 |
清單方塊 |
已啟用、可見、鎖定、值 |
網頁瀏覽器 |
Visible |
子 |
已啟用、可見度已鎖定 |
導覽控制項 |
已啟用、可見 |
移動動作
動作會依順序從宏的上到下執行。 若要在宏中向上或向下移動動作,請使用下列其中一種方法:
-
將動作向上或向下拖曳至您想要的位置。
-
選取動作,然後按 CTRL + 向上鍵或 CTRL + 向下鍵。
-
選取動作,然後按一下 [宏] 窗格右側的 [上移] 或 [下移]箭號。
刪除動作
若要刪除巨集指令:
-
選取動作,然後按 DELETE 鍵。 或者,您也可以按一下 [宏] 窗格右側的 [刪除] (X)按鈕。
附註:
-
如果您刪除一區塊動作(例如If區塊或群組區塊),區塊中的所有動作也都會刪除。
-
當您以滑鼠右鍵按一下宏動作時,就會出現快捷方式功能表上的 [上移]、[下移] 和 [刪除] 命令。
-
使用 If、Else (如果有的話)控制程式流程
若要只在特定條件為 true 時才執行宏動作,您可以使用If區塊。 這會取代舊版 Access 所用的 [條件] 資料行。 您可以將if區塊延伸成Else if和ELSE區塊,就像 VBA 中的其他順序程式設計語言一樣。
下圖顯示一個簡單的If區塊,包括Else if及else封鎖:
如果 ExpirationDate 欄位小於目前日期,則if區塊會執行。
如果 ExpirationDate 欄位等於目前日期,則Else if組塊會執行。
如果先前的區塊都沒有, Else區塊就會執行。
If區塊會在此結束。
在宏中新增 If 區塊
-
從 [新增動作] 下拉式清單中選取 [ If ],或從 [動作目錄] 窗格將它拖曳到 [宏] 窗格。
-
在 [ If區塊] 頂端的方塊中,輸入決定何時執行區塊的運算式。 運算式必須是 Boolean (也就是評估為 [是] 或 [否] 的布林值)。
-
若要在If區塊中新增動作,請從出現在區塊內的 [新增動作] 下拉式清單中選取,或從 [動作目錄] 窗格拖曳到if區塊。
將 Else 或 Else (如果封鎖)新增至 If 區塊
-
選取 If[封鎖],然後在組塊右下角,按一下[新增其他] 或 [新增 else]。
-
如果您要新增Else If區塊,請輸入決定何時執行區塊的運算式。 運算式必須是 Boolean (也就是評估為 True 或 False 的那個)。
-
在Else If或Else的 [新增動作] 下拉式清單中選取該區塊,或從 [動作目錄] 窗格中將其拖曳到區塊,即可新增這些動作。
附註:
-
當您以滑鼠右鍵按一下宏動作時,會顯示快捷方式功能表上的 [如果有的話,要新增if] 或[else]方塊。
-
如果區塊最多可以嵌套10層。
-
建立 submacros
每個宏都可以包含多個 submacros。 Submacro 的設計是由RunMacro或OnError巨集指令中的名稱來呼叫。
您可以使用與巨集指令相同的方式,將Submacro組塊新增至宏,如在宏中新增動作一節所述。 在您新增Submacro組塊之後,您可以將巨集指令拖曳到其中,或從出現在區塊中的 [新增] 動作清單中選取 [動作]。
附註:
-
您也可以選取一或多個動作來建立Submacro組塊,以滑鼠右鍵按一下這些動作,然後選取 [製作 Submacro 組塊]。
-
Submacros 必須永遠是宏中的最後一個區塊;您無法在 submacro 下方新增任何動作(除了其他 submacros)。 如果您執行的宏只包含 submacros,而沒有明確命名您想要的 submacro,則只有第一個 submacro 會執行。
-
若要呼叫 submacro (例如,在事件屬性中,或使用RunMacro動作或OnError動作),請使用下列語法:
macroname. submacroname
將相關的動作組成群組
您可以將動作組成群組並指派有意義的名稱,以改善宏的可讀性。 例如,您可以將開啟及篩選表單的動作群組成名為「開啟與篩選表單」的群組。 這可讓您更容易查看哪些動作彼此關聯。 群組區塊不會影響執行動作的方式,而且不能單獨呼叫或執行群組。 其主要用途是將一組動作加上標籤,以協助您在讀取宏時瞭解它。 此外,在編輯大型宏時,您可以將每個群組區塊向下折迭到單一行,減少您必須執行的滾動量。
如果您想要群組的動作已經存在於宏中,請使用此程式將其新增至群組區塊:
-
選取您要組成群組的動作。
-
以滑鼠右鍵按一下選取的動作,然後按一下 [製作群組區塊]。
-
在群組區塊頂端的方塊中,輸入群組的名稱。
如果動作不存在:
-
將 [群組區塊] 從 [動作] 目錄拖曳到 [宏] 窗格。
-
在群組區塊頂端的方塊中,輸入群組的名稱。
-
將巨集指令從 [動作] 目錄拖曳到群組區塊,或從區塊中出現的 [新增動作] 清單中選取 [動作]。
群組區塊可以包含其他群組區塊,而且最多可嵌套9層級。
展開和折迭宏動作或區塊
當您建立新的宏時,宏建立器會顯示宏動作,並顯示所有引數。 視宏的大小而定,您可能會想要在編輯宏時,折迭部分或所有宏動作(以及動作區塊)。 這可讓您更容易取得宏結構的整體視圖。 您可以視需要展開部分或所有動作來進行編輯。
展開或折迭單一巨集指令或封鎖
-
按一下宏或區塊名稱左邊的加號(+)或減號(-)。 或者,按向上鍵和向下鍵來選取動作或區塊,然後按向左鍵或向右鍵來折迭或展開。
展開或折迭所有巨集指令(但不是區塊)
-
按一下 [設計] 索引標籤上 [折迭/展開] 群組中的 [展開動作] 或 [折迭動作]。
展開或折迭所有宏動作和區塊
-
在 [設計] 索引標籤的 [折迭/展開] 群組中,按一下 [全部展開] 或 [全部折疊]。
提示: 您可以透過將滑鼠指標移到動作上方,以「速覽」在折迭動作中。 Access 會在工具提示中顯示動作引數。
複製並貼上宏動作
如果您需要重複您已新增至宏中的動作,您可以複製並貼上現有的動作,就像在文字處理程式中的文欄位落中一樣。 當您貼上動作時,這些動作就會插入到目前選取的動作下方。 如果選取區塊,動作會貼到區塊內。
提示: 若要快速複製選取的動作,請按住 CTRL 鍵,然後將動作拖曳至宏中您想要複製的位置。
與其他人共用宏
當您將巨集指令複製到剪貼簿時,它們可以以可擴展標記語言(XML)的方式貼到任何接受文字的應用程式中。 這可讓您透過電子郵件傳送宏給同事,或將宏張貼在討論論壇、博客或其他網站上。 然後,收件者可以複製 XML,然後將其貼到 Access 2010 宏建立器。 宏會重新建立,就像您撰寫的一樣。
執行巨集
您可以使用下列任何一種方法來執行宏:
-
按兩下 [功能窗格] 中的宏。
-
使用RunMacro或OnError巨集指令呼叫宏。
-
在物件的事件屬性中輸入宏的名稱。 當觸發該事件時,就會執行宏。
調試宏
如果您無法順利執行宏,您可以使用幾種工具來取得問題的來源。
在宏中加入錯誤處理動作
我們建議您在撰寫時,在每個宏中加入錯誤處理動作,然後將它們永久留在宏中。 當您使用這個方法時,Access 會顯示錯誤發生的描述。 錯誤描述可協助您瞭解錯誤,以便您更快速地修正問題。
使用下列程式將錯誤處理 submacro 到宏:
-
在 [設計檢視] 中開啟宏。
-
在宏底部的 [新增動作] 下拉式清單中,選取 [ Submacro ]。
-
在 word Submacro右側的方塊中,輸入 Submacro 的名稱,例如ErrorHandler。
-
從出現在Submacro組塊中的 [新增動作] 下拉式清單中,選取 [ MessageBox巨集指令]。
-
在消息框中,輸入下列文字: = [MacroError]。 [描述]
-
在宏底部的 [新增動作] 下拉式清單中,選取 [ OnError ]。
-
將 [移至] 引數設定為 [宏名稱]。
-
在 [宏名稱] 方塊中,輸入錯誤處理 submacro 的名稱(在此範例中為ErrorHandler)。
-
將OnError巨集指令拖曳到宏的最上方。
下列圖例顯示含有OnError動作的宏,以及一個名為ErrorHandler的 Submacro。
OnError巨集指令會放置在宏的頂端,並在發生錯誤時呼叫ErrorHandler submacro。
ErrorHandler submacro 只有在由OnError動作呼叫時才會執行,並顯示描述錯誤的訊息方塊。
使用 [單步驟] 命令
單一步驟是宏偵錯模式,您可以用來一次執行一個宏動作。 執行每個動作之後,會出現一個對話方塊,其中會顯示該動作的相關資訊,以及產生的任何錯誤代碼。 不過,由於 [宏單步驟] 對話方塊中沒有錯誤的描述,因此我們建議您使用上一節所述的錯誤處理 submacro 方法。
若要開始單一步驟模式:
-
在 [設計檢視] 中開啟宏。
-
在 [設計] 索引標籤上,按一下 [工具] 群組中的 [單一步驟]。
-
儲存並關閉巨集。
下次執行宏時,就會出現 [宏單步驟] 對話方塊。 對話方塊會顯示每個動作的下列相關資訊:
-
宏名稱
-
Condition (適用于 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 編輯器]。 在 [專案] 窗格中按兩下已轉換的宏,以查看及編輯模組。
附註: 本頁面是經由自動翻譯而成,因此文中可能有文法錯誤或不準確之處。 讓這些內容對您有所幫助是我們的目的。 告訴我們這項資訊是否有幫助? 這裡是供您參考的英文文章。