在Excel2007中實(shí)現(xiàn)老式工具欄

字號(hào):

Excel2007中老式工具欄的限制
    如果想在Excel 2007中創(chuàng)建一個(gè)工具欄,應(yīng)注意下面的一些限制:
    不能夠自由浮動(dòng)
    總是顯示在加載項(xiàng)選項(xiàng)卡自定義工具欄組中
    Excel會(huì)忽略一些CommandBar的屬性和方法
    創(chuàng)建工具欄的代碼
    這里的代碼假定有一個(gè)帶有兩個(gè)名為Macro1和Macro2宏的工作簿,并且在該工作簿打開(kāi)時(shí)創(chuàng)建這個(gè)工具欄,在關(guān)閉該工作簿時(shí)刪除這個(gè)工具欄。
    注意,與Ribbon定制不同,不管當(dāng)前是哪個(gè)工作簿,自定義工具欄者是可見(jiàn)的。
    在ThisWorkbook代碼模塊中,輸入下面的過(guò)程。第一個(gè)過(guò)程為在打開(kāi)工作簿時(shí)調(diào)用創(chuàng)建工具欄的過(guò)程,第二個(gè)過(guò)程為在關(guān)閉工作簿時(shí)調(diào)用刪除工具欄的過(guò)程。
    Private Sub Workbook_Open()
    Call CreateToolbar
    End SubPrivate
    Sub Workbook_BeforeClose(Cancel As Boolean)
    Call DeleteToolbar
    End Sub 過(guò)程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
    '創(chuàng)建工具欄
    Set TBar = CommandBars.Add
    With TBar
     .Name = TOOLBARNAME
     .Visible = True
    End With
    '添加按鈕
    Set Btn = TBar.Controls.Add(Type:=msoControlButton)
    With Btn
     .FaceId = 300
     .OnAction = "Macro1"
     .Caption = "這里是Macro1的提示"
    End With
    '添加另一個(gè)按鈕
    Set Btn = TBar.Controls.Add(Type:=msoControlButton)
    With Btn
     .FaceId = 25
     .OnAction = "Macro2"
     .Caption = "這里是Macro2的提示"
    End With
    End Sub
    代碼中使用了一個(gè)模塊級(jí)的常量TOOLBARNAME,用來(lái)存儲(chǔ)工具欄的名稱(chēng),并用于這兩個(gè)過(guò)程中。
    如果已存在具有相同名字的工具欄,則該過(guò)程先刪除該工具欄。這樣將會(huì)避免企圖創(chuàng)建與已存在的工具欄有相同名稱(chēng)的工具欄時(shí),產(chǎn)生錯(cuò)誤。
    通過(guò)使用CommandBars對(duì)象的Add方法來(lái)創(chuàng)建該工具欄,使用Controls對(duì)象的Add方法來(lái)添加兩個(gè)按鈕,每個(gè)按鈕都有三個(gè)屬性:
    FaceID:確定顯示在按鈕中的圖像的數(shù)字。
    OnAction:在單擊按鈕時(shí)執(zhí)行的宏。
    Caption:鼠標(biāo)指針懸浮在按鈕上時(shí)顯示的屏幕提示。
    技巧:不僅可以設(shè)置FaceID屬性,還可以設(shè)置Picture屬性,使用任何的imageMso圖像。例如,下面的語(yǔ)句晶粒示一個(gè)綠色的勾號(hào):
    PLAIN TEXT
    Visual Basic:
    .Picture = Application.CommandBars.GetImageMso _
    ("AcceptInvitation", 16, 16)
    關(guān)于imageMso圖像的更多信息,請(qǐng)參見(jiàn)“定制RibbonX”。
    在關(guān)閉工作簿時(shí),觸發(fā)Workbook_BeforeClose事件過(guò)程,調(diào)用過(guò)程DeleteToolbar:
    Sub DeleteToolbar()
    On Error Resume Next
    CommandBars(TOOLBARNAME).Delete
    On Error GoTo 0
    End Sub