建立使用者介面 (UI) 巨集

在 Microsoft Access 2010 中,附加至命令按鈕、文字方塊、表單和報表等使用者介面 (UI) 物件的巨集 (巨集:您可以用來自動執行工作的一個或一組動作。)稱為 UI 巨集;這是為了與附加至資料表的資料巨集區別。您可以使用 (UI) 巨集將一連串的巨集指令 (巨集指令:巨集的基本建置區塊;可以與其他巨集指令相結合以自動執行工作的獨立指令。在其他巨集語言中,有時也稱為命令。)自動化,例如開啟另一個物件、套用篩選、開始匯出作業以及許多其他的工作。本文將為您介紹經過全新設計的巨集建立器,並示範建立 UI 巨集時的基本工作。

本文內容


概觀

巨集可以包含在巨集物件 (有時也稱為獨立巨集) 中,也可以內嵌於表單、報表或控制項的事件屬性中。內嵌巨集會成為其嵌入之物件或控制項的一部分,因此在功能窗格的 [巨集] 下方,可以看到巨集物件,但是看不到內嵌巨集。

每一個巨集都是由一個或多個巨集指令組成。根據您工作時所在的內容而定,有些巨集指令可能會無法使用。具體而言,如果您在設計 Web 資料庫,就無法使用與「發佈至 Access Services」功能不相容的巨集指令。

如需建立 Web 資料庫的詳細資訊,請參閱建立要在網路上共用的 Access 資料庫一文。

頁首 頁首

新增功能

Access 2010 針對巨集的建立引進了一項新的設計工具。這項新設計的部分優點包括:

  • 巨集指令目錄    巨集指令會根據類型分組而且可加以搜尋。
  • IntelliSense    當您在輸入運算式時,IntelliSense 會建議可能值然後讓您選取正確的值。
  • 快速鍵    使用組合鍵更快速、更輕鬆地撰寫巨集。
  • 程式流程    使用註解行和巨集指令群組,建立更容易閱讀的巨集。
  • 條件陳述式    透過對巢狀 If/Else/Else If 的支援,可達成更複雜的邏輯執行。
  • 巨集重複使用    巨集指令目錄會顯示您已建立的其他巨集,因此您可以將這些巨集複製到目前使用中的巨集內。
  • 更容易共用    複製巨集,然後以 XML 形式貼入電子郵件、新聞群組的文章、部落格或範例程式碼網站。

頁首 頁首

建立獨立巨集

這個程序建立的獨立巨集物件將出現在功能窗格中的 [巨集] 底下。如果您希望在應用程式的多處重複使用某個巨集,獨立巨集便很實用。只要從其他巨集呼叫這類型的巨集,就可以避免在多個地方重複相同的程式碼。

  1. [建立] 索引標籤的 [巨集與程式碼] 群組中,按一下 [巨集]

    Access 隨即開啟 [巨集建立器]。
  2. 按一下快速存取工具列上的 [儲存]
  3. [另存新檔] 對話方塊中,輸入巨集的名稱,然後按一下 [確定]。
  4. 繼續新增巨集指令至巨集一節。

頁首 頁首

建立內嵌巨集

這個程序建立的巨集是內嵌在物件的事件屬性中。這類型的巨集不會出現在功能窗格中,但是您可以從 On LoadOn Click 等事件呼叫。

由於巨集會成為表單或報表物件的一部分,因此若要將特定表單或報表的工作自動化,建議您使用內嵌巨集。

  1. 在功能窗格中,以滑鼠右鍵按一下要包含巨集的表單或報表,然後按一下 [版面配置檢視]
  2. 如果沒有顯示屬性表,請按下 F4 使其顯示。
  3. 按一下包含要內嵌巨集之事件屬性的控制項或區段。您也可以使用屬性表頂端之 [選取類型] 底下的下拉式清單,來選取控制項或區段 (或者整份表單或報表)。
  4. 在 [屬性表] 工作窗格中,按一下 [事件] 索引標籤。
  • 按一下要觸發巨集之事件的屬性方塊。以命令按鈕為例,若要讓巨集於按鈕按一下時執行,請按一下 [On Click] 屬性方塊。

     附註 

  • 如果屬性方塊含有 [內嵌巨集] 字樣,表示已經為此事件建立了巨集。您可以繼續執行本程序的其餘步驟來編輯該巨集。
  • 如果屬性方塊含有 [事件程序] 字樣,表示已經為此事件建立了 Visual Basic for Applications (VBA) 程序。您需要先移除該程序,才能將巨集內嵌於此事件。若要這麼做,您應該先檢查事件程序以確保移除它不會中斷資料庫所需的功能,然後刪除 [事件程序] 字樣。在某些情況下,您可以使用內嵌巨集來重建 VBA 程序的功能。
  1. 按一下 [建立] 按鈕 按鈕圖像
  2. 如果出現 [選擇建立器] 對話方塊,務必選取 [巨集建立器],然後按一下 [確定]

    Access 隨即開啟 [巨集建立器]。請繼續下一節將巨集指令新增至巨集。

頁首 頁首

新增巨集指令至巨集

巨集指令是組成巨集的個別命令,而且都是根據各自的功能來命名,例如 FindRecordCloseDatabase

步驟 1:瀏覽或搜尋巨集指令

新增巨集指令的第一個步驟是在 [新增巨集指令] 下拉式清單或 [巨集指令目錄] 中找出巨集指令。

 附註 

  • 根據預設,[新增巨集指令] 下拉式清單和 [巨集指令目錄] 只會顯示可在不信任的資料庫中執行的巨集指令。若要查看所有巨集指令:
    • [設計] 索引標籤上的 [顯示/隱藏] 群組中,按一下 [顯示所有巨集指令]
  • 如果 [巨集指令目錄] 沒有顯示,則在 [設計] 索引標籤上,按一下 [顯示/隱藏] 群組中的 [巨集指令目錄]

若要尋找巨集指令,請使用下列其中一種方法:

  • 按一下 [新增巨集指令] 下拉式清單中的箭號,然後向下捲動找出巨集指令。程式流程元素會列在前面,然後則是依字母順序列出的巨集指令。
  • 在 [巨集指令目錄] 窗格中瀏覽巨集指令。巨集指令會依類別組成群組。您可以展開每個類別來檢視巨集指令。如果選取某個巨集指令,[巨集指令目錄] 的底部會出現該巨集指令的簡短描述。
  • 您可以在 [巨集指令目錄] 窗格上方的 [搜尋方塊] 中輸入文字來搜尋巨集指令。當您輸入時,巨集指令清單便會篩選以顯示包含該文字的所有巨集。Access 會同時在巨集名稱及其描述中搜尋您輸入的文字。

步驟 2:新增巨集指令至巨集

當您找到所需的巨集指令後,可以使用下列其中一種方法將它加入巨集:

  • [新增巨集指令] 清單中選取巨集指令,或是直接開始在方塊中輸入巨集指令名稱。Access 便會在 [新增巨集指令] 清單出現的位置加入該巨集指令。
  • 將巨集指令從 [巨集指令目錄] 拖曳至巨集窗格。插入游標隨即出現,指出滑鼠按鈕放開時的巨集指令插入位置。
  • 按兩下 [巨集指令目錄] 中的巨集指令。
    • 如果已在巨集窗格中選取了巨集指令,Access 會在選取的巨集指令下方接著加入新的巨集指令。
    • 如果已在巨集窗格中選取了 GroupIfElse IfElseSubmacro 區塊,Access 會將新的巨集指令加入該區塊。
    • 如果沒有在巨集窗格中選取任何巨集指令或區塊,Access 會在巨集的末端加入新的巨集指令。

 附註 

  • 如果您已經建立一個或多個巨集,這些巨集會列在 [巨集指令目錄] 的 [在此資料庫] 節點底下。
    • 將列在 [巨集] 底下的獨立巨集拖曳至巨集窗格會建立 RunMacro 巨集指令,後者會執行您拖曳進來的巨集。您可以接著使用下拉式清單來呼叫子巨集 (如果存在的話)。
    • 如果您只想將獨立巨集中的巨集指令複製到目前的巨集內 (而不是建立 RunMacro 巨集指令),以滑鼠右鍵按一下 [巨集指令目錄] 中的該巨集,然後按一下 [新增巨集複本]
    • 將列在表單或報表物件底下的內嵌巨集拖曳至巨集窗格,會將該巨集中的巨集指令複製到目前的巨集內。
  • 您也可以將資料庫物件從功能窗格拖曳至巨集窗格,藉此建立巨集指令。如果將資料表、查詢、表單、報表或模組拖曳至巨集窗格,Access 會加入可以開啟資料表、查詢、表單或報表的巨集指令。如果將另一個巨集拖曳至巨集窗格,Access 會加入執行巨集的巨集指令。

步驟 3:填入引數

大多數巨集指令都需要至少一個引數。您可以選取巨集指令,然後將游標移至引數上方來檢視每個引數的描述。對許多引數而言,您可以從下拉式清單選取值。如果引數需要您輸入運算式,IntelliSense 會在您輸入時提供建議值來協助您輸入運算式,如下圖所示:

使用 IntelliSense 輸入運算式

當您看到要使用的值時,對它按兩下或使用方向鍵反白顯示,然後按下 TAB 或 ENTER 鍵即可將該值加入運算式。

如需建立運算式的詳細資訊,請參閱運算式簡介一文。

關於在 Web 資料庫中搭配使用 IntelliSense 和屬性

當您在網頁相容表單上建立內嵌 UI 巨集時,IntelliSense 可讓您將任何表單屬性新增至運算式。但是在 Web 資料庫中,使用 UI 巨集僅可存取一小部分的表單屬性。例如,假設表單 Form1 上有一個控制項 Control1,IntelliSense 可讓您將 [Forms]![Form1]![Control1].[ControlSource] 新增至 UI 巨集中的運算式。但是,如果您接著將資料庫發佈至 Access Services,在伺服器上執行包含該運算式的巨集時,會產生錯誤。

下表顯示您可以在 Web 資料庫的 UI 巨集中使用的屬性:

物件或控制項 您可以使用的屬性
表單 Caption、Dirty、AllowAdditions、AllowDeletions、AllowEdits
索引標籤控制項 Visible
標籤 Caption、Visible、Fore Color、Back Color
附件 Visible、Enabled
命令按鈕 Caption、Visible、Enabled、Fore Color
文字方塊 Enabled、Visible、Locked、Fore Color、Back Color、Value
核取方塊 Enabled、Visible、Locked、Value
圖像 Visible、Back Color
下拉式方塊 Enabled、Visible、Locked、Value
清單方塊 Enabled、Visible、Locked、Value
網頁瀏覽器 Visible
子表單 Enabled、Visible、Locked
導覽控制項 Enabled、Visible

移動巨集指令

巨集指令是依巨集內由上而下的順序執行。若要在巨集中上移或下移巨集指令,請使用下列其中一種方法:

  • 將巨集指令向上或向下拖曳至所需的位置。
  • 選取巨集指令,然後按下 CTRL + 向上鍵或 CTRL + 向下鍵。
  • 選取巨集指令,然後按一下巨集窗格右側的 [上移][下移] 箭號。

刪除巨集指令

若要刪除巨集指令:

  • 選取巨集指令,然後按下 DELETE 鍵。或者,您也可以按一下巨集窗格右側的 [刪除] (X) 按鈕。

 附註 

  • 如果您刪除巨集指令區塊,例如 If 區塊或 Group 區塊,該區塊中的所有巨集指令也會一起刪除。
  • 以滑鼠右鍵按一下巨集指令時出現的快顯功能表上也會有 [上移][下移][刪除] 命令。

頁首 頁首

使用 If、Else If 和 Else 控制程式流程

若要在特定條件成立時才執行巨集指令,請使用 If 區塊。此區塊取代了舊版 Access 中使用的條件欄。您可以使用 Else IfElse 區塊來擴充 If 區塊,此做法類似於 VBA 等其他循序式程式設計語言。

下圖顯示的是包含 Else IfElse 區塊的簡單 If 區塊:

包含 If/Else If/Else 陳述式的巨集。

圖說文字 1 若 ExpirationDate 欄位小於目前的日期,便會執行 If 區塊。
圖說文字 2 若 ExpirationDate 等於目前的日期,便會執行 Else If 區塊。
圖說文字 3 若上述區塊都沒有執行,則會執行 Else 區塊。
圖說文字 4 If 區塊在此處結束。

新增 If 區塊至巨集

  1. [新增巨集指令] 下拉式清單中選取 [If],或是將它從 [巨集指令目錄] 窗格拖曳至巨集窗格。
  2. If 區塊上方的方塊中,輸入決定區塊執行時機的運算式。運算式的結果必須是布林值 (也就是說,運算式的結果必須為「是」或「否」)。
  3. If 區塊內出現的 [新增巨集指令] 下拉式清單選取巨集指令,以將其加入該區塊;或是從 [巨集指令目錄] 窗格將巨集指令拖曳至 If 區塊。

新增 Else 或 Else If 區塊至 If 區塊

  1. 選取 [If] 區塊,然後按一下區塊右下角的 [新增 Else][新增 Else If]
  2. 如果您要新增 Else If 區塊,請輸入決定區塊執行時機的運算式。運算式的結果必須是布林值 (也就是說,運算式的結果必須是 True 或 False)。
  3. Else IfElse 區塊內出現的 [新增巨集指令] 下拉式清單選取巨集指令,以將其加入該區塊;或是從 [巨集指令目錄] 窗格將巨集指令拖曳至該區塊。

 附註 

  • 以滑鼠右鍵按一下巨集指令時出現的快顯功能表上也會有新增 IfElse IfElse 區塊的命令。
  • If 區塊最多可巢狀至 10 層的深度。

頁首 頁首

建立子巨集

每一個巨集可包含多個子巨集。子巨集必須從 RunMacroOnError 巨集指令以其名稱來呼叫。

您可以依照新增巨集指令至巨集一節所述的相同方法將子巨集區塊新增至巨集。新增子巨集區塊之後,就可以將巨集指令拖曳至其中,或是從該區塊內出現的 [新增巨集指令] 清單選取巨集指令。

 附註 

  • 您也可以選取一個或多個巨集指令、以滑鼠右鍵按一下這些巨集指令,然後選取 [建立子巨集區塊],藉此建立子巨集區塊。
  • 子巨集必須是巨集內最後面的區塊;您不能在子巨集之後加入任何巨集指令,但是可以加入其他子巨集。如果執行僅包含子巨集的巨集時,沒有明確指出所需之子巨集的名稱,則只會執行第一個子巨集。
  • 若要呼叫子巨集 (例如,在事件屬性中、或是使用 RunMacro 巨集指令 OnError 巨集指令),請使用下列語法:

    macroname.submacroname

頁首 頁首

將相關的巨集指令組成群組

您可以將巨集指令組成群組然後為群組指定有意義的名稱,藉此改善巨集的可讀性。例如,您可以將開啟並篩選表單的巨集指令組成名為「開啟並篩選表單」的群組。如此便可更容易看出哪些巨集指令是彼此相關。群組區塊不會影響巨集指令的執行方式,而且群組無法單獨呼叫或執行;它的主要用途就在於標示巨集指令群組,以協助您在閱讀巨集時即可了解其功能。此外,在編輯大型巨集時,您可以將每一個群組區塊摺疊成一行,以減少捲動的動作。

如果您要組成群組的巨集指令已在巨集內,請使用此程序將它們新增至群組區塊:

  1. 選取要組成群組的巨集指令。
  2. 以滑鼠右鍵按一下選取的巨集指令,然後按一下 [建立群組區塊]
  3. [群組] 區塊上方的方塊中,輸入群組的名稱。

如果巨集指令還沒有出現在巨集內:

  1. [群組] 區塊從 [巨集指令目錄] 拖曳至巨集窗格。
  2. [群組] 區塊上方的方塊中,輸入群組的名稱。
  3. 將巨集指令從 [巨集指令目錄] 拖曳至 [群組] 區塊,或是從區塊內出現的 [新增巨集指令] 清單選取巨集指令。

 附註    群組區塊可以包含其他群組區塊,而且最多可巢狀至 9 層的深度。

頁首 頁首

展開與摺疊巨集指令或區塊

當您建立新的巨集時,巨集建立器會顯示巨集指令和所有可見的引數。根據巨集的大小而定,您在編輯巨集時可能會想摺疊部分或所有巨集指令 (以及巨集指令的區塊),以便於一覽巨集的整體結構。您也可以視需要展開部分或所有巨集指令以進行編輯。

展開或摺疊單一巨集指令或區塊

  • 按一下巨集或區塊名稱左側的加號 (+) 或減號 (-)。或者,您也可以按下向上鍵或向下鍵來選取巨集指令或區塊,然後按下向左鍵或向右鍵來摺疊或展開。

展開或摺疊所有巨集指令 (不包括區塊)

  • [設計] 索引標籤的 [摺疊/展開] 群組中,按一下 [展開巨集指令][摺疊巨集指令]

展開或摺疊所有巨集指令和區塊

  • [設計] 索引標籤的 [摺疊/展開] 群組中,按一下 [全部展開][全部摺疊]

 秘訣   您可以將游標移至已摺疊之巨集指令的上方來「速覽」其內部。Access 會在工具提示中顯示巨集指令引數。

頁首 頁首

複製並貼上巨集指令

如果需要重複已加入巨集的巨集指令,可以採用您在文書處理器中處理文字段落的相同方式來複製並貼上現有的巨集指令。當您貼上巨集指令時,它們會直接在目前已選取的巨集指令下方插入。如果已選取了區塊,巨集指令會貼在區塊內部。

 秘訣   若要快速複製選取的巨集指令,請按住 CTRL 鍵,然後將巨集指令拖曳至巨集中所需的位置。

與他人共用巨集

將巨集指令複製到 [剪貼簿] 之後,您可以將它們以可延伸標記語言 (XML) 的形式貼入任何接受文字的應用程式。如此一來,您便能夠透過電子郵件將巨集傳送給同事,或是將巨集張貼至論壇、部落格或網站。然後,收件者可將此 XML 複製並貼入其 Access 2010 巨集建立器。巨集會完全依照您撰寫的方式重新建立。

執行巨集

您可以使用下列任何一種方法來執行巨集:

  • 在功能窗格中按兩下巨集。
  • 使用 RunMacroOnError 巨集指令來呼叫巨集。
  • 在物件的事件屬性中輸入巨集名稱,巨集會在該事件觸發時執行。

頁首 頁首

為巨集偵錯

如果巨集無法順利執行,有幾個工具可供您用來找出問題的原因。

新增錯誤處理巨集指令至巨集

我們建議您在撰寫每個巨集時都加入錯誤處理巨集指令,並讓這些指令保留在巨集內。使用這個方法時,Access 會在錯誤發生時顯示其描述。錯誤描述可協助您了解錯誤,讓您更快速地更正問題。

使用下列程序將錯誤處理子巨集新增至巨集:

  1. 在 [設計] 檢視中開啟巨集。
  2. 在巨集的底部,從 [新增巨集指令] 下拉式清單選取 [子巨集]
  3. 子巨集字樣右邊的方塊中輸入子巨集的名稱,例如 ErrorHandler
  4. 子巨集區塊 內部 出現的 [新增巨集指令] 下拉式清單中,選取 [MessageBox] 巨集指令。
  5. [訊息] 方塊中輸入下列文字:=[MacroError].[描述]
  6. 在巨集的底部,選取 [新增巨集指令] 下拉式清單中的 [OnError]
  7. [跳至] 引數設定為 [巨集名稱]
  8. [巨集名稱] 方塊中輸入錯誤處理子巨集的名稱 (在此範例中,請輸入 ErrorHandler)。
  9. OnError 巨集指令拖曳至巨集的最上方。

下圖顯示的巨集含有 OnError 巨集指令以及名稱為 ErrorHandler 的子巨集。

含有錯誤處理子巨集的巨集。

圖說文字 1 OnError 巨集指令置於巨集的頂部,而且會在錯誤發生時呼叫 ErrorHandler 子巨集。
圖說文字 2 ErrorHandler 子巨集只會在 OnError 巨集指令呼叫它時執行,而且會顯示描述錯誤的訊息方塊。

使用逐步執行命令

「逐步執行」是一種巨集偵錯模式,可讓您以一次執行一個巨集指令的方式執行巨集。每當執行了一個巨集指令,便會出現對話方塊顯示關於該巨集指令的資訊,以及發生的錯誤代碼。然而,由於 [巨集逐步執行] 對話方塊中沒有錯誤描述,因此建議您使用上一節所述的錯誤處理子巨集方法。

若要開始逐步執行模式:

  1. 在 [設計] 檢視中開啟巨集。
  2. [設計] 索引標籤上,按一下 [工具] 群組中的 [逐步執行]
  3. 儲存並關閉巨集。

下一次執行巨集時,[巨集逐步執行] 對話方塊便會出現。此對話方塊會顯示每一個巨集指令的下列資訊:

  • 巨集名稱
  • 條件 (適用於 If 區塊)
  • 巨集指令名稱
  • 引數
  • 錯誤數 (錯誤數 0 表示沒有發生錯誤)

當您逐步執行巨集指令時,可以按一下對話方塊中的三個按鈕之一:

  • 若要查看巨集中下一個巨集指令的資訊,請按下 [逐步執行]
  • 若要停止目前執行中的任何巨集,請按一下 [停止所有巨集]。逐步執行模式仍會在您下一次執行巨集時生效。
  • 若要結束逐步執行模式並繼續執行巨集,請按一下 [繼續]

 附註 

  • 如果您在巨集的最後一個巨集指令之後按下 [逐步執行],逐步執行模式仍會在您下一次執行巨集時生效。
  • 若要在巨集執行時進入逐步執行模式,請按下 CTRL+BREAK 鍵。
  • 若要在巨集的特定位置進入逐步執行模式,請在該位置新增 SingleStep 巨集指令。
  • 在 Web 資料庫中無法使用逐步執行模式。

頁首 頁首

將巨集轉換成 VBA 程式碼

巨集提供的是 Visual Basic for Applications (VBA) 程式設計語言中的命令子集。如果您認為所需的功能已超過巨集的能力範圍,可以很容易地將獨立巨集物件轉換成 VBA 程式碼,然後使用 VBA 提供的強大功能。然而,請記住 VBA 程式碼不會在瀏覽器中執行;資料庫必須在 Access 中開啟,您加入 Web 資料庫的 VBA 程式碼才會執行。

 附註   內嵌巨集無法轉換成 VBA 程式碼。

若要將巨集轉換成 VBA 程式碼:

  1. 在功能窗格中,以滑鼠右鍵按一下巨集物件,然後按一下 [設計] 檢視。
  2. [設計] 索引標籤的 [工具] 群組中,按一下 [將巨集轉換成 Visual Basic]
  3. [轉換巨集] 對話方塊中,指定是否要將錯誤處理程式碼及註解加入 VBA 模組,然後按一下 [轉換]

Access 隨即確認巨集已轉換,並開啟 Visual Basic 編輯器。按兩下 [專案] 窗格中的 [已轉換巨集] 即可檢視並編輯模組。

頁首 頁首

 
 
適用:
Access 2010