国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

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

2024-07-21 02:15:33
字體:
來源:轉載
供稿:網友
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對象

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陵川县| 开封县| 江口县| 阿克苏市| 威海市| 伊宁市| 大连市| 武安市| 舞钢市| 环江| 渝北区| 岳西县| 韩城市| 柘荣县| 临夏县| 临湘市| 行唐县| 镇远县| 丰宁| 包头市| 沭阳县| 威海市| 静安区| 和龙市| 威信县| 韶山市| 文安县| 九寨沟县| 泸定县| 宜春市| 盖州市| 佛山市| 晋州市| 临沭县| 南开区| 永泰县| 三门峡市| 攀枝花市| 龙山县| 长汀县| 静安区|