2009-02-27 1 views

ответ

7

Это является основой для чего-то, что должно работать на версиях до но не включая Excel 2007, который имеет совершенно другой интерфейс.

Это идет в вашем ThisWorkbook модуле:

Private Sub Workbook_BeforeClose(Cancel As Boolean) 
    DeleteCommandBar 
End Sub 
Private Sub Workbook_Open() 
    ShowToolbar 
End Sub 

И это может продолжаться в том же модуле или отдельный один, ваш выбор, хотя я предпочитаю, чтобы поставить его в своем собственном модуле, где он может быть более заметным , Вам не нужно использовать OnClick, кнопке сообщается, какую процедуру вызывать при создании кнопки.

Private Const TOOLBARNAME = "MyFunkyNewToolbar" 

Public Sub ShowToolbar() 
' Assumes toolbar not already loaded ' 
    Application.CommandBars.Add TOOLBARNAME 
    AddButton "Button caption", "This is a tooltip", 526, "NameOfASubInYourVBACode" 
    ' call AddButton more times for more buttons ' 
    With Application.CommandBars(TOOLBARNAME) 
     .Visible = True 
     .Position = msoBarTop 
    End With 
End Sub 

Private Sub AddButton(caption As String, tooltip As String, faceId as Long, methodName As String) 
Dim Btn As CommandBarButton 
    Set Btn = Application.CommandBars(TOOLBARNAME).Controls.Add 
    With Btn 
     .Style = msoButtonIcon 
     .FaceId = faceId ' choose from a world of possible images in Excel: see http://www.ozgrid.com/forum/showthread.php?t=39992 ' 
     .OnAction = methodName 
     .TooltipText = tooltip 
    End With   
End Sub 

Public Sub DeleteCommandBar() 
    Application.CommandBars(TOOLBARNAME).Delete 
End Sub 
+2

Не работает ли это в O2007, только с любыми панелями инструментов, созданными в ленте «Addins»? –

+0

Ну, да. Но это выглядит ужасно. Лучше укусить пулю и изучить RibbonX, слишком сложную, хотя она и есть. –

+0

Установите 'Btn.Style = msoButtonIconAndCaption' и' Btn.Caption = caption', если вы хотите отобразить текст, который уже передается в качестве параметра. – benjineer