如果想在Excel 2007中創建一個工具欄,應注意下面的一些限制:
(1)不能夠自由浮動;
(2)總是顯示在加載項選項卡自定義工具欄組中;
(3)Excel會忽略一些CommandBar的屬性和方法;
創建工具欄的代碼:
這里的代碼假定有一個帶有兩個名為Macro1和Macro2宏的工作簿,并且在該工作簿打開時創建這個工具欄,在關閉該工作簿時刪除這個工具欄。
注意,與Ribbon定制不同,不管當前是哪個工作簿,自定義工具欄者是可見的。
在ThisWorkbook代碼模塊中,輸入下面的過程。第一個過程為在打開工作簿時調用創建工具欄的過程,第二個過程為在關閉工作簿時調用刪除工具欄的過程。
PRivate Sub Workbook_Open()
Call CreateToolbar
End SubPrivate
Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteToolbar
End Sub 過程CreateToolbar的代碼如下:
Const TOOLBARNAME As String = "我的工具欄"
Sub CreateToolbar()
Dim TBar As CommandBar
Dim Btn As CommandBarButton
'如果存在則刪除已存在的工具欄
On Error Resume Next
CommandBars(TOOLBARNAME).Delete
On Error GoTo 0
'創建工具欄
Set TBar = CommandBars.Add
With TBar
.Name = TOOLBARNAME
.Visible = True
End With
'添加按鈕
Set Btn = TBar.Controls.Add(Type:=msoControlButton)
With Btn
.FaceId = 300
.
.Caption = "這里是Macro1的提示"
End With
'添加另一個按鈕
Set Btn = TBar.Controls.Add(Type:=msoControlButton)
With Btn
.FaceId = 25
.
.Caption = "這里是Macro2的提示"
End With
End Sub
代碼中使用了一個模塊級的常量TOOLBARNAME,用來存儲工具欄的名稱,并用于這兩個過程中。
如果已存在具有相同名字的工具欄,則該過程先刪除該工具欄。這樣將會避免企圖創建與已存在的工具欄有相同名稱的工具欄時,產生錯誤。
通過使用CommandBars對象的Add方法來創建該工具欄,使用Controls對象的Add方法來添加兩個按鈕,每個按鈕都有三個屬性:
FaceID:確定顯示在按鈕中的圖像的數字。
OnAction:在單擊按鈕時執行的宏。
Caption:鼠標指針懸浮在按鈕上時顯示的屏幕提示。
技巧:不僅可以設置FaceID屬性,還可以設置Picture屬性,使用任何的imageMso圖像。例如,下面的語句晶粒示一個綠色的勾號: PLAIN TEXT
Visual Basic:
.Picture = application.CommandBars.GetImageMso _
("AcceptInvitation", 16, 16)
關于imageMso圖像的更多信息,請參見“定制RibbonX”。
在關閉工作簿時,觸發Workbook_BeforeClose事件過程,調用過程DeleteToolbar: Sub DeleteToolbar()
On Error Resume Next
CommandBars(TOOLBARNAME).Delete
On Error GoTo 0
End Sub
新聞熱點
疑難解答