資源描述:
《Excel的工具欄和菜單欄VBA源碼實例》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、工具欄和菜單欄工具欄和菜單欄的運用更多時候是伴隨著加載宏和個性Excel界面的出現(xiàn)而出現(xiàn)。在不斷加深對ExcelVBA的理解和運用,我們編程的思路漸漸會轉到考慮代碼的通用性和應用方案上,將代碼和Excel數(shù)據(jù)源分開。因此,制作更多具有通用功能的加載宏(不管是xla加載宏,還是Com加載宏),可以最大極限的發(fā)揮VBA編程的魅力,而不是要求用戶強制啟用宏。也正是因為這個原因,在我們去學習工具欄和菜單欄時,要明白的一個道理是,制作工具欄僅僅是為了加載宏等具體運用的實現(xiàn),不要一味地去追求工具欄的花哨。一、幾個基本概念在開始本節(jié)之前,先理解什么是
2、命令欄?命令欄(CommandBars):是工具欄、菜單欄和快捷菜單的統(tǒng)稱。工具欄:帶有按鈕和選項的工具條,使用這些按鈕和選項可執(zhí)行命令。如下圖:菜單欄:標題欄下的水平欄,包括菜單名稱。如下圖快捷菜單:又叫彈出式菜單,鼠標右鍵單擊。如下圖。二、CommandBars集合對象通過上面幾幅圖片的直觀概念之后,我們接下來理解CommandBar集合。所有的工具欄和菜單欄代碼都是圍繞Commandbars集合展開的。CommandBarControls集合包含三種類型控件。CommandBarButton:代表命令欄中的一個按鈕控件(按鈕控件:
3、工具欄上的按鈕,或菜單、子菜單或快捷菜單上的菜單項,當單擊它們時會運行一條命令。工具欄按鈕和菜單項共享相同的屬性和方法。)。該控件的Type屬性必須是msoControlButton。)CommandBarComboBox:代表命令欄中的一個組合框控件(組合框控件:菜單欄、工具欄、菜單、子菜單或快捷菜單上的自定義編輯框、下拉列表框或組合框。當工具欄垂直??繒r,它所包含的任何自定義組合框控件都不可見。)。該控件的Type屬性必須是msoControlEdit、msoControlDropdown、msoControlComboBox、ms
4、oControlButtonDropdown、msoControlSplitDropdown、msoControlOCXDropdown、msoControlGraphicCombo或msoControlGraphicDropdown。)CommandBarPopup:代表命令欄中的一個彈出式控件(彈出式控件:是菜單欄或工具欄上的內置或自定義控件,當單擊它時顯示菜單,或者是菜單、子菜單、或快捷菜單上的內置或自定義菜單項,當指針放在其上時顯示子菜單。)。該控件的Type屬性必須是msoControlPopup、msoControlGrap
5、hicPopup、msoControlButtonPopup、msoControlSplitButtonPopup或msoControlSplitButtonMRUPopup。幾種常見屬性,參數(shù)和方法:VisibleNameTypePostionTemporaryCaptionOnActionFaceIDStyleEnableTop/Left/Width/HightBeginGroupControlsAdd方法Findcontrols方法下面將通過實例來解釋上述屬性、參數(shù)和方法的運用。三、實例代碼1、建立一命令欄Application.
6、CommandBars.Add即建立了一個工具欄。一般的,我們會相應的定義一個Commandbar對象來操作這個自定義工具欄,如下代碼:SubAddCommandBar1()'添加一自定義工具欄DimcmdBarAsCommandBarSetcmdBar=Application.CommandBars.AddEndSub但,Excel好像任何變化,這是因為自定義工具欄的默認Visible為False。SubAddCommandBar2()'添加一自定義工具欄,并顯示DimcmdBarAsCommandBarSetcmdBar=Appli
7、cation.CommandBars.AddcmdBar.Visible=TrueEndSub2、Position示例Position:默認值為msoBarFloating常量說明msoBarLeft、msoBarTop、msoBarRight和msoBarBottom指定新命令欄的左側、頂部、右側和底部坐標msoBarFloating指定新命令欄不固定msoBarPopup指定新命令欄為快捷菜單msoBarMenuBar僅適用于Macintosh機SubAddCommandBar3()DimcmdBarAsCommandBarSetc
8、mdBar=Application.CommandBars.Add(,,,Temporary:=True)WithcmdBar.Name="MyBar".Visible=True.Position=msoB