轉貼(電腦報):VBA開發實用指南

來源:互聯網
上載者:User
VBA開發實用指南
唐大中 附錄文章

  VBA(Visual Basic for Application)是Office內建的二次開發工具,可為日常辦公帶來極大的便利。本文講述Office各個成員VBA開發的常用對象和其相關的屬性、方法和事件(包括Word、Excel、PowerPoint等),並給出相關的執行個體代碼。

  一、VBA基礎
  1.什麼是VBA

  在Office對於一些煩瑣、重複的操作,使用者可以通過“宏”來實現。“宏”即是由一系列命令和指令組合而成的命令集,其本質是VBA程式碼群組成的程式。VBA是微軟在其開發的應用程式中共用的通用自動化語言。

  2.錄製/運行宏

  VBA初期開發可通過錄製“宏”的操作來擷取代碼,在Office中幾乎所有的操作均可通過錄製“宏”來擷取代碼。這裡,我們通過一個簡單的“宏”錄製執行個體來學習:在Word中將所有的“電腦”字樣替換為“電腦”,並插入一張4行2列的表格。

  在Office中錄製宏,可單擊“工具→宏→錄製新宏…”功能表命令實現,單擊該命令後將出現“錄製宏”對話方塊,如圖1所示。



  其中,“宏名”框用於為錄製的宏設定名稱,可使用預設的“Macro1”。“工具列”和“鍵盤”二個按鈕分別用於設定宏的觸發位置。“將宏儲存在”框可設定宏的儲存位置,一般包括“Normal.dot”(共用模板)和當前文檔2種,建議儲存在當前文檔中,以免對所有文檔產生影響。在“說明”框中可輸入對該宏的相關說明。單擊“確定”按鈕,即可開始錄製宏。此時在文檔編輯介面中將顯示“宏錄製”工具列。該工具列有2個與錄音機非常類似的按鈕,第一個按鈕為“停止錄製”,第二個按鈕為“暫停錄製”。在錄製過程中可隨時通過這二個按鈕來進行控制。

  隨後按常規操作來實現前述的任務,操作完成後單擊“停止錄製”按鈕,結束錄製即可。

  注意:錄製“宏”時可使用按一下滑鼠菜單和按鈕,但無法錄製滑鼠在文件視窗中的移動,因此必須通過鍵盤來實現這些動作。此外,Office中所有錄製的“宏”,其名稱的首字元必須為字母或漢字、數字及底線(名稱最多可為255個字元),且“宏”名稱中不允許包含空格。

  運行已錄製的“宏”,可單擊“工具→宏→宏”功能表命令。在出現的“宏”對話方塊的“宏名”下拉框中選擇需啟動並執行宏,然後單擊“運行”按鈕即可。隨後Word將自動重現前述執行的操作,避免了重複的辦公操作。

  3.宏的局限性

  雖然Office的大部分操作均可用錄製“宏”的方法來儲存,但錄製的“宏”僅“忠實”地再現了特定的操作,對於一些需要進行邏輯判斷和流程式控制制的操作,則顯得力不從心,如自動替換多個不同的內容時,按錄製“宏”的方式操作,需要按替換內容的數量錄製多個“宏”,且每個“宏”僅可用於某個內容的替換,反而為工作增添了麻煩。

  錄製“宏”存在很多局限性,除無法進行邏輯判斷和流程式控制制操作外,還包括很多。如互動能力較差、無法顯示Office的內建對話方塊、無法顯示使用者自訂的表單和無法建立複雜的工具列或修改菜單等。

  4.VBA編輯環境

  雖然“宏”存在很多局限性,但通過錄製“宏”擷取了VBA代碼後即可通過VBA編輯器來為代碼添加邏輯控制並設計流程等。以Word 2002為例,“宏”錄製完成後,可在運行宏對話方塊中選擇錄製的宏並單擊“編輯”按鈕,即可顯示VBA編輯環境,如圖2所示。



  VBA編輯環境由工程資源管理員、屬性視窗和代碼編輯/表單設計視窗等部分組成。在工程資源管理員中列出當前開啟的所有VBA項目,屬性視窗用於設定相關對象的屬性,代碼編輯/表單設計視窗則可輸入模組的代碼或編輯表單和類別模組。

  二、VBA開發共用對象詳解
  VBA和其他物件導向的開發語言類似,同樣有非常多的對象組成,且不同的Office成員即提供了大量的開發對象,如工具列、Office助手、內建對話方塊和表單等。

  (一)工具列及其控制項對象
  在Office中通過VBA開發工具列和菜單,需使用Office提供的CommandBar、CommandBarButton、CommandBarComboBox等對象,這些對象即代表工具列、工具列按鈕和工具列下拉框,通過這些對象可編製出各類複雜的工具列或菜單。

  1.CommandBars集合

  該集合代表Office所有的工具列,可用名稱或索引號指定功能表列或工具列,但僅可用名稱指定一個菜單、捷徑功能表或子功能表。如兩個或兩個以上自訂菜單或子功能表名稱相同,則返回第一個具有該名稱的對象。

  其Add方法用於建立一個工具列,並返回 CommandBar對象。

  文法:expression.Add(Name, Position, MenuBar, Temporary)

  參數說明:

  Name為可選的Variant 類型,代表新工具列的名稱。如果省略,則使用預設的名稱;Position為可選的Variant 類型,代表新工具列的位置。該參數值可通過VBA常量進行設定,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom常量(設定新工具列位於軟體工具列中位置);msoBarFloating常量(代表新工具列可移動);msoBarPopup常量(代表新工具列為捷徑功能表)等;MenuBar為可選的Variant 類型,用於設定是否用新工具列替換活動工具列;Temporary為可選的Variant 類型,用於設定新工具列是否暫時有效。

  2.CommandBar對象

  該對象代表應用程式中的工具列,新工具列的控制項均以該對象為載體。

  (1)Controls屬性:返回CommandBarControls對象,代表指定工具列中的所有控制項。

  (2)NameLocal屬性:返回由應用程式版本語言所設定的工具列名稱,如對軟體的內建工具列設定會出現錯誤。

  (3)Position屬性:返回或設定工具列的位置,值可通過VBA常量進行設定,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup或msoBarMenu等。

  (4)Type屬性:返回或設定工具列的類型,值可通過VBA常量進行設定,如msoBarTypeNormal(工具列為普通類型)、msoBarTypeMenuBar(工具列為菜單類型)、msoBarTypePopup(工具列為快顯功能表類型)等。

  (5)Reset方法:將內建工具列重設為預設設定,在恢複軟體原有工具列或菜單時非常有用。重設內建工具列將刪除其中的自訂控制項並恢複其內建控制項。

  3.CommandBarControls集合

  該集合代表工具列中的所有工具列控制項。

  其Add方法用於在CommandBarControls集合中增加一個工具列控制項。

  4.CommandBarControl對象

  該對象代表工具列控制項,對自訂工具列控制項,可使用 CommandBarButton、CommandBarComboBox和CommandBarPopup對象進行定義,而對軟體內建的控制項進行操作,而該控制項又無法使用上述三個對象表示,則可使用CommandBarControl對象。

  (1)BeginGroup屬性:用於設定工具列控制項是否分組顯示。

  (2)Caption屬性:用於設定工具列控制項的標題文字,並可作為預設的控制項工具提示。

  (3)Id屬性:用於設定CommandBarButton、CommandBarComboBox和CommandBarControl對象的功能,這些控制項可直接設定為內建工具列控制項的ID,這樣該控制項即具備了軟體內建的相應功能,自訂控制項的ID屬性均需設定為1。

  (4)Copy方法:將工具列控制項複製到已有的工具列中。

  文法:expression.Copy(Bar, Before)

  參數說明:

  Bar為可選的Variant 類型,代表目標工具列,如果省略,則控制項將複製到自身所在的工具列;Before為可選的Variant 類型,代表新控制項在指定工具列的位置,即新控制項將添加至該位置的控制項前,如果省略,則控制項將複製到工具列的末尾。

  (5)Type屬性:返回工具列控制項的類型,可通過VBA常量進行引用,常用的工具列控制項類型如下表所示:


常量名稱
含義


msoControlButton
控制按鈕


msoControlButtonDropdown
帶下拉式清單的按鈕


msoControlButtonPopup
帶快顯功能表的按鈕


msoControlComboBox
下拉組合控制框


msoControlDropdown
下拉式清單控制框


msoControlEdit
文字框


msoControlExpandingGrid
可擴充的表格


msoControlGraphicCombo
映像下拉式方塊


msoControlGraphicDropdown
映像下拉式清單方塊


msoControlGrid
表格


msoControlPopup
快顯功能表






  5.CommandBarButton對象



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.