Это является основой для чего-то, что должно работать на версиях до но не включая 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
Не работает ли это в O2007, только с любыми панелями инструментов, созданными в ленте «Addins»? –
Ну, да. Но это выглядит ужасно. Лучше укусить пулю и изучить RibbonX, слишком сложную, хотя она и есть. –
Установите 'Btn.Style = msoButtonIconAndCaption' и' Btn.Caption = caption', если вы хотите отобразить текст, который уже передается в качестве параметра. – benjineer