title | keywords | f1_keywords | ms.prod | api_name | ms.assetid | ms.date | ms.localizationpriority |
---|---|---|---|---|---|---|---|
CommandBars.Add method (Office) |
vbaof11.chm2003 |
vbaof11.chm2003 |
office |
Office.CommandBars.Add |
544cfa94-924a-90ca-d716-c7b2f9e8732f |
01/04/2019 |
medium |
CommandBars.Add method (Office)
Creates a new command bar and adds it to the collection of command bars.
[!NOTE]
The use of CommandBars in some Microsoft Office applications has been superseded by the new ribbon component of the Microsoft Office Fluent user interface. For more information, see Overview of the Office Fluent ribbon.
Syntax
expression.Add (Name, Position, MenuBar, Temporary)
expression Required. A variable that represents a CommandBars object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Name | Optional | Variant | The name of the new command bar. If this argument is omitted, a default name is assigned to the command bar (such as Custom 1). |
Position | Optional | Variant | The position or type of the new command bar. Can be one of the MsoBarPosition constants. |
MenuBar | Optional | Variant | True to replace the active menu bar with the new command bar. The default value is False. |
Temporary | Optional | Variant | True to make the new command bar temporary. Command bars are deleted when the container application is closed. The default value is False. |
See also
- CommandBars object members
[!includeSupport and feedback]
Содержание
- Метод CommandBars.Add (Office)
- Синтаксис
- Параметры
- См. также
- Поддержка и обратная связь
- Объект CommandBar (Office)
- Пример
- См. также
- Поддержка и обратная связь
- VBA Excel. Добавление кнопки в контекстное меню
- Свойство Application.CommandBars
- Добавление кнопки в контекстное меню
- Удаление кнопки из контекстного меню
- Примеры добавления и удаления кнопок
- Пример 1
- Объект CommandBars (Office)
- Пример
- См. также
- Поддержка и обратная связь
- Working With Commandbars
- EXISTING MENUS AND TOOLBARS
- Recommended Programs
Метод CommandBars.Add (Office)
Создает новую панель команд и добавляет ее в коллекцию панели команд.
Использование CommandBars в некоторых приложениях Microsoft Office было заменено новым компонентом ленты пользовательского интерфейса Microsoft Office Fluent. Дополнительные сведения см. в статье Обзор ленты Office Fluent.
Синтаксис
expression. Add (Name, Position, MenuBar, Temporary)
выражение (обязательно). Переменная, представляющая объект CommandBars .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Name | Необязательно заполнять. | Variant | Имя новой панели команд. Если этот аргумент опущен, строке команд присваивается имя по умолчанию (например, Пользовательский 1). |
Position | Необязательный | Variant | Позиция или тип новой панели команд. Может быть одной из констант MsoBarPosition . |
MenuBar | Необязательный | Variant | Значение True , чтобы заменить активную строку меню новой строкой команд. Значение по умолчанию — False. |
Temporary | Необязательный | Variant | Значение true , чтобы сделать новую панель команд временной. Панели команд удаляются при закрытии приложения-контейнера. Значение по умолчанию — False. |
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Объект CommandBar (Office)
Представляет панель команд в приложении контейнера. Объект CommandBar является членом коллекции CommandBars .
Использование CommandBars в некоторых приложениях Microsoft Office было заменено новым компонентом ленты пользовательского интерфейса Microsoft Office Fluent. Дополнительные сведения см. в статье Обзор ленты Office Fluent.
Пример
Используйте CommandBars (index), где index — это имя или номер индекса панели команд, чтобы вернуть один объект CommandBar . В следующем примере показано, как пройти коллекцию панели команд, чтобы найти панель команд с именем Forms. Если он находит эту панель команд, пример делает ее видимой и защищает состояние закрепления. В этом примере переменная cb представляет объект CommandBar .
Используйте имя или номер индекса, чтобы указать строку меню или панель инструментов в списке доступных строк меню и панелей инструментов в приложении контейнера. Однако необходимо использовать имя, чтобы указать меню, контекстное меню или подменю (все из которых представлены объектами CommandBar ). В этом примере в нижней части меню Сервис добавляется новый элемент меню. При выборе нового пункта меню запускается процедура с именем «qtrReport».
Если два или более пользовательских меню или подменю имеют одинаковые имена, CommandBars(index) возвращает первое. Чтобы убедиться, что вы возвращаете правильное меню или подменю, найдите всплывающее меню, отображающее это меню. Затем примените свойство CommandBar к всплывающему элементу управления, чтобы вернуть панель команд, представляющую это меню. Если третий элемент управления на панели инструментов с именем Пользовательские инструменты является всплывающим элементом управления, в этом примере команда Сохранить добавляется в нижнюю часть этого меню.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
VBA Excel. Добавление кнопки в контекстное меню
Программное добавление кнопки в контекстное меню ячейки (строки, столбца) из кода VBA Excel. Свойство CommandBars объекта Application.
Свойство Application.CommandBars
Примеры командных панелей, вызываемых кликом правой кнопки мыши (контекстных меню):
- CommandBars(«Cell») – контекстное меню ячейки;
- CommandBars(«Row») – контекстное меню строки;
- CommandBars(«Column») – контекстное меню столбца.
Добавление кнопки в контекстное меню
Добавление кнопки из кода VBA Excel в контекстное меню ячейки. Кнопки в контекстные меню строк и столбцов добавляются аналогично.
Если хотите создать постоянную кнопку для контекстного меню, используйте параметр Temporary метода Controls.Add в значении False , которое применяется по умолчанию:
Удаление кнопки из контекстного меню
Созданная предыдущим кодом VBA временная кнопка контекстного меню ячейки будет утилизирована только при закрытии приложения Microsoft Excel. Это означает, что если в приложении открыты несколько книг, тогда после закрытия книги с кодом, создавшим кнопку, она продолжит существование и будет доступна из других открытых книг. Если это не желательно, можно удалить кнопку следующей строкой:
Эта же строка удалит и постоянную кнопку.
Примеры добавления и удаления кнопок
Пример 1
Добавление кнопки в контекстное меню ячейки из кода VBA Excel при открытии книги и удаление кнопки при закрытии книги.
Добавление кнопки (код размещается в модуле книги):
Источник
Объект CommandBars (Office)
Коллекция объектов CommandBar , представляющих панели команд в контейнерном приложении.
Использование CommandBars в некоторых приложениях Microsoft Office было заменено новым компонентом ленты пользовательского интерфейса Microsoft Office Fluent. Дополнительные сведения см. в статье Обзор ленты Office Fluent.
Пример
Используйте свойство CommandBars , чтобы вернуть коллекцию CommandBars . В следующем примере в окне Интерпретация отображается имя и локальное имя каждой строки меню и панели инструментов, а также отображается значение, указывающее, отображается ли строка меню или панель инструментов.
Используйте метод Add , чтобы добавить новую панель команд в коллекцию. В следующем примере создается настраиваемая панель инструментов с именем Custom1 и она отображается в виде плавающей панели инструментов.
Используйте enumName, где index — это имя или номер индекса панели команд, чтобы вернуть один объект CommandBar . В следующем примере панель инструментов с именем Custom1 закреплена в нижней части окна приложения.
Используйте имя или номер индекса, чтобы указать строку меню или панель инструментов в списке доступных строк меню и панелей инструментов в контейнерном приложении. Однако имя необходимо использовать для указания меню, контекстного меню или подменю (все из которых представлены объектами CommandBar ). Если два или более настраиваемых меню или подменю имеют одинаковые имена, enumName возвращает первое. Чтобы убедиться, что вы возвращаете правильное меню или подменю, найдите всплывающее меню, отображающее это меню. Затем примените свойство CommandBar к всплывающему элементу управления, чтобы вернуть панель команд, представляющую это меню.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Working With Commandbars
By using toolbars and shortcut menus, you can provide quick access to commonly used commands. Excel has more than 50 different built-in toolbars and about 60 different shortcut menus, all of which are part of the
CommandBars collection. This collection also contains any new custom toolbars and menus you create. Due to their central location, you can easily make modifications to existing menus and toolbars, or add new ones as needed.
UNDERSTANDING THE COMMANDBARS COLLECTION
The CommandBars collection is part of the Application object, the main object that contains all Excel-related objects.
Each individual toolbar or menu is a separate CommandBar object. You can reference these objects either by an index value or by the object name. For example, the code CommandBars( «Standard» ) references the Standard toolbar. See Appendix A for a list of the built-in toolbars and shortcut menus in Excel.
EXISTING MENUS AND TOOLBARS
You can modify menus and toolbars either manually from Excel or you can create subroutines to modify these CommandBar objects. In Excel, you make modifications to toolbars and menus via the Customize command on the Tools menu. From the Customize menu you can add and remove both menu and toolbar options. See Chapter 1 for more information about adding macro references to toolbars and menus.
You can also write a procedure that modifies a particular menu or toolbar by adding or removing options. Each option on a toolbar or menu is a
CommandBarControl object associated with the corresponding CommandBar object. You reference the
CommandBarControls collection using the
Controls property. You add a new option to a toolbar or menu using the Add method.
When you call the Add method with the Controls object, you can apply the optional parameters of the method to specify the type of control to add. The following table describes each of the parameters you can call with the Add method to create a new control. After you add the control, you reference the CommandBarControl properties to set the specific properties for the individual control. See the sections «Add Controls to a Toolbar» and «Add Items to a Menu» for more information on adding options to toolbars and menus.
Was this article helpful?
Recommended Programs
Scheduler123 Excel-based Production Scheduling System
Mastering Excel Tables Course
Excel Advanced PivotTable Techniques Course
Источник
Adblock
detector
Excel determines which type of command bar a particular object contains by the value of the Type property. Excel has three types of command bar objects, as described in the following table.
Содержание
- 1 Add a new commandbar
- 2 Add ControlButton to CommandBar
- 3 Adding a control to a command bar
- 4 Add PopupControl to CommandBar
- 5 Adjusting a control»s Visible property
- 6 Attaching a drop-down list to a command bar
- 7 Changing a control»s caption dynamically: Showing the user the current cell»s number format
- 8 CommandBar Object
- 9 CommandBars collection
- 10 Counting custom toolbars
- 11 Create Shortcut
- 12 Creating a command bar: Set some properties when you create a new toolbar
- 13 Creating a Toolbar: AddRemoveButton
- 14 Creating a Toolbar and assign its action
- 15 Creating a Toolbar and display MsgBox in its action
- 16 Custom Toolbars
- 17 deletes a control that has a caption of SortButton.
- 18 Determines if a given command bar name exists
- 19 Display Control Detail
- 20 display shortcut menu with the ShowPopup method
- 21 displays the Caption property for the first Control object contained in the Standard toolbar, whose index is 3.
- 22 Finding Visible Controls with FindControls
- 23 Get the type of CommandBars
- 24 how your VBA code can change the position of a toolbar.
- 25 Inspecting a CommandBar
- 26 Listing all controls on all toolbars
- 27 Listing the controls on a command bar
- 28 Properties of CommandBar controls
- 29 Rather than use an index number to refer to a control, you can use its Caption property setting
- 30 Referring to command bars
- 31 Removes a toolbar specified by the name passed in
- 32 Removing all toolbars and then restoring them
- 33 Replacing Excel»s built-in menu with your own
- 34 Reset CommandBar
- 35 Restores the Worksheet Menu Bar to its native state
- 36 Restore tool bar
- 37 Save list of all predefined commands and their ID numbers in a file
- 38 Set Control style, Action, group, faceid and caption
- 39 sets the FaceId property of the first button on the MyToolbar toolbar image to 45, which is the code number for a mailbox icon.
- 40 Show All Toolbar Controls
- 41 Show CommandBar Names
- 42 show/hide check symbol
- 43 Shows or hides a command bar.
- 44 simply copies the NumberFormat property of the ActiveCell to the Caption property of the button control.
- 45 The custom toolbar is removed with this procedure
- 46 The Protection constants are additive: apply different types of protection with a single command
- 47 The Protection property of a CommandBar object provides you with many options for protecting a CommandBar.
- 48 This toolbar exists only when the cell pointer falls within a given range
- 49 To delete a control from a CommandBar object, use the Delete method of the Controls collection
- 50 Translates a MsoBarPosition enumeration into a text description of the bar position.
- 51 Translates a MsoBarType enumeration into a text description of the bar type.
- 52 Translates a MsoControlType enumeration into a text description of the control type.
- 53 Working with Shortcut Menus
Add a new commandbar
<source lang="vb">
Sub AddNewCB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl On Error GoTo AddNewCB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Toolbar", Position:= msoBarFloating) myCommandBar.Visible = True Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .Caption = "Button" .Style = msoButtonCaption .TooltipText = "Display Message Box" .OnAction = "=MsgBox(""You pressed a toolbar button!"")" End With Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .FaceId = 1000 .Caption = "Toggle Button" .TooltipText = "Toggle First Button" .OnAction = "=ToggleButton()" End With Set myCommandBarCtl = myCommandBar.Controls.Add(msoControlComboBox) With myCommandBarCtl .Caption = "Drop Down" .Width = 100 .AddItem "Create Button", 1 .AddItem "Remove Button", 2 .DropDownWidth = 100 .OnAction = "=AddRemoveButton()" End With Exit Sub
AddNewCB_Err:
Debug.Print Err.number & vbCr & Err.Description Exit Sub
End Sub
Function ToggleButton()
Dim CBButton As CommandBarControl On Error GoTo ToggleButton_Err Set CBButton = CommandBars("Sample Toolbar").Controls(1) CBButton.Visible = Not CBButton.Visible Exit Function
ToggleButton_Err:
Debug.Print Err.number & vbCr & Err.Description Exit Function
End Function
Function AddRemoveButton()
Dim myCommandBar As CommandBar, CBCombo As CommandBarComboBox Dim CBNewButton As CommandBarButton On Error GoTo AddRemoveButton_Err Set myCommandBar = CommandBars("Sample Toolbar") Set CBCombo = myCommandBar.Controls(3) Select Case CBCombo.ListIndex Case 1 Set CBNewButton = myCommandBar.Controls.Add(Type:=msoControlButton) With CBNewButton .Caption = "New Button" .Style = msoButtonCaption .BeginGroup = True .Tag = "New Button" .OnAction = "=MsgBox(""This is a new button!"")" End With Case 2 Set CBNewButton = myCommandBar.FindControl(Tag:="New Button") CBNewButton.Delete End Select Exit Function
AddRemoveButton_Err:
If Err.number = 91 Then Debug.Print "Cannot remove button that does not exist!" Exit Function Else Debug.Print Err.number & vbCr & Err.Description Exit Function End If
End Function
</source>
Add ControlButton to CommandBar
<source lang="vb">
Sub AddNewMB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl Dim myCommandBarSubCtl As CommandBarControl On Error GoTo AddNewMB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Menu Bar", Position:= _ msoBarTop, MenuBar:=True, Temporary:=False) myCommandBar.Visible = True myCommandBar.Protection = msoBarNoMove Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlPopup) myCommandBarCtl.Caption = "Displa&y" Set myCommandBarSubCtl = myCommandBarCtl.Controls.Add(Type:=msoControlButton) With myCommandBarSubCtl .Style = msoButtonIconAndCaption .Caption = "E&nable ClickMe" .FaceId = 59 .OnAction = "=MsgBox(""You clicked Enable ClickMe"")" .Parameter = 1 .BeginGroup = True End With Set myCommandBarSubCtl = myCommandBarCtl.Controls.Add(Type:=msoControlButton) With myCommandBarSubCtl .Style = msoButtonIconAndCaption .Caption = "Di&sable ClickMe" .FaceId = 276 .OnAction = "=MsgBox(""You Disable ClickMe"")" .Parameter = 2 .BeginGroup = True End With Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .BeginGroup = True .Caption = "&ClickMe" .Style = msoButtonCaption .OnAction = "=MsgBox(""You clicked ClickMe"")" End With Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .BeginGroup = True .Caption = "&Set Visibility Off" .Style = msoButtonCaption .OnAction = "=MsgBox(""You set visibility off"")" End With Exit Sub
AddNewMB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
</source>
Adding a control to a command bar
<source lang="vb">
Sub AddButton()
Set NewBtn = CommandBars("MyToolbar").Controls.Add _ (Type:=msoControlButton) With NewBtn .FaceId = 300 .OnAction = "MyMacro" .Caption = "Tooltip goes here" End With
End Sub
</source>
Add PopupControl to CommandBar
<source lang="vb">
Sub AddNewMB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl Dim myCommandBarSubCtl As CommandBarControl On Error GoTo AddNewMB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Menu Bar", Position:= _ msoBarTop, MenuBar:=True, Temporary:=False) myCommandBar.Visible = True myCommandBar.Protection = msoBarNoMove Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlPopup) myCommandBarCtl.Caption = "Displa&y" Set myCommandBarSubCtl = myCommandBarCtl.Controls.Add(Type:=msoControlButton) With myCommandBarSubCtl .Style = msoButtonIconAndCaption .Caption = "E&nable ClickMe" .FaceId = 59 .OnAction = "=ToggleClickMe()" .Parameter = 1 .BeginGroup = True End With
AddNewMB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
Function ToggleClickMe()
Dim MyMenu As CommandBar Dim myCommandBarClickMe As CommandBarControl On Error GoTo ToggleClickMe_Err Set MyMenu = CommandBars("Sample Menu Bar") Set myCommandBarClickMe = MyMenu.Controls(2) With CommandBars.ActionControl Select Case .Parameter Case 1 myCommandBarClickMe.Enabled = True Case 2 myCommandBarClickMe.Enabled = False End Select End With Exit Function
ToggleClickMe_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Function
End Function
</source>
Adjusting a control»s Visible property
<source lang="vb">
Sub ToggleAllToolbars()
For Each cb In CommandBars If cb.Type = msoBarTypeNormal Then cb.Visible = Not cb.Visible End If Next cb
End Sub
</source>
Attaching a drop-down list to a command bar
<source lang="vb">
Sub Make()
Dim TBar As commandBar Dim NewDD As CommandBarControl Set TBar = CommandBars.Add Set NewDD = CommandBars("myBar").Controls.Add(Type:=msoControlDropdown) With NewDD .Caption = "Date" .OnAction = "yourAction" .Style = msoButtonAutomatic For i = 1 To 2 .AddItem "Click" Next i .ListIndex = 1 End With
End Sub
Sub yourAction()
With CommandBars("MonthList").Controls("DateDD") ActiveCell.value = .List(.ListIndex) End With
End Sub
</source>
Changing a control»s caption dynamically: Showing the user the current cell»s number format
<source lang="vb">
Sub MakeNumberFormatDisplay()
Dim TBar As CommandBar Dim NewBtn As CommandBarButton Set TBar = CommandBars.Add With TBar .Name = "Number Format" .Visible = True End With Set NewBtn = CommandBars("Number Format").Controls.Add(Type:=msoControlButton) With NewBtn .Caption = "" .OnAction = "ChangeNumFormat" .Style = msoButtonCaption End With
End Sub
</source>
CommandBar Object
<source lang="vb">
Sub CommandBarCount()
MsgBox "There are " & CommandBars.count & " command bars"
End Sub
</source>
CommandBars collection
<source lang="vb">
Sub com()
MsgBox CommandBars(1).Name
End Sub
</source>
Counting custom toolbars
<source lang="vb">
Sub CustomToolbars()
Dim cb As CommandBar For Each cb In CommandBars If cb.Type = msoBarTypeNormal Then If Not cb.BuiltIn Then Debug.Print "Not" End If End If Next cb
End Sub
</source>
Create Shortcut
<source lang="vb">
Sub CreateShortcut()
DeleteShortcut Set myBar = CommandBars.Add (Name:="MyShortcut", Position:=msoBarPopup, Temporary:=True) Set myItem = myBar.Controls.Add(Type:=msoControlButton) With myItem .Caption = "&Number Format..." .OnAction = "ShowFormatNumber" .FaceId = 1554 End With Set myItem = myBar.Controls.Add(Type:=msoControlButton) With myItem .Caption = "&Alignment..." .OnAction = "ShowFormatAlignment" .FaceId = 217 End With Set myItem = myBar.Controls.Add(Type:=msoControlButton) With myItem .Caption = "&Font..." .OnAction = "ShowFormatFont" .FaceId = 291 End With
End Sub
Sub ShowFormatNumber()
Application.Dialogs(xlDialogFormatNumber).Show
End Sub
Sub ShowFormatAlignment()
Application.Dialogs(xlDialogAlignment).Show
End Sub
Sub ShowFormatFont()
Application.Dialogs(xlDialogFormatFont).Show
End Sub
</source>
Creating a command bar: Set some properties when you create a new toolbar
<source lang="vb">
Sub CreateAToolbar()
Dim TBar As CommandBar Set TBar = CommandBars.Add With TBar .name = "MyToolbar" .Top = 0 .Left = 0 .Visible = True End With
End Sub
</source>
Creating a Toolbar: AddRemoveButton
<source lang="vb">
Sub AddNewCB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl On Error GoTo AddNewCB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Toolbar", Position:= _ msoBarFloating) myCommandBar.Visible = True Set myCommandBarCtl = myCommandBar.Controls.Add(msoControlComboBox) With myCommandBarCtl .Caption = "Drop Down" .Width = 100 .AddItem "Create Button", 1 .AddItem "Remove Button", 2 .DropDownWidth = 100 .OnAction = "=AddRemoveButton()" End With Exit Sub
AddNewCB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
Function AddRemoveButton()
Dim myCommandBar As CommandBar, CBCombo As CommandBarComboBox Dim CBNewButton As CommandBarButton On Error GoTo AddRemoveButton_Err Set myCommandBar = CommandBars("Sample Toolbar") Set CBCombo = myCommandBar.Controls(3) Select Case CBCombo.ListIndex Case 1 Set CBNewButton = myCommandBar.Controls.Add(Type:=msoControlButton) With CBNewButton .Caption = "New Button" .Style = msoButtonCaption .BeginGroup = True .Tag = "New Button" .OnAction = "=MsgBox(""This is a new button!"")" End With Case 2 Set CBNewButton = myCommandBar.FindControl(Tag:="New Button") CBNewButton.Delete End Select Exit Function
AddRemoveButton_Err:
If Err.number = 91 Then msgBox "Cannot remove button that does not exist!" Exit Function Else msgBox "Error " & Err.number & vbCr & Err.Description Exit Function End If
End Function
</source>
Creating a Toolbar and assign its action
<source lang="vb">
Function ToggleButton()
Dim CBButton As CommandBarControl On Error GoTo ToggleButton_Err Set CBButton = CommandBars("Sample Toolbar").Controls(1) CBButton.Visible = Not CBButton.Visible Exit Function
ToggleButton_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Function
End Function
Sub AddNewCB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl On Error GoTo AddNewCB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Toolbar", Position:= _ msoBarFloating) myCommandBar.Visible = True Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .FaceId = 1000 .Caption = "Toggle Button" .TooltipText = "Toggle First Button" .OnAction = "=ToggleButton()" End With Exit Sub
AddNewCB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
</source>
Creating a Toolbar and display MsgBox in its action
<source lang="vb">
Sub AddNewCB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl On Error GoTo AddNewCB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Toolbar", Position:= _ msoBarFloating) myCommandBar.Visible = True Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) With myCommandBarCtl .Caption = "Button" .Style = msoButtonCaption .TooltipText = "Display Message Box" .OnAction = "=MsgBox(""You pressed a toolbar button!"")" End With Exit Sub
AddNewCB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
</source>
Custom Toolbars
<source lang="vb">
Private tlbMyToolbar As CommandBar
«Add tool bar
Sub AddToolbar()
Dim tlbMyButton As CommandBarButton Set tlbMyToolbar = Application.rumandBars.Add( _ name:=" Example Toolbar", _ Position:=msoBarFloating, _ Temporary:=True) tlbMyToolbar.Visible = True Set tlbMyButton = tlbMyToolbar.Controls.Add( _ Type:=msoControlButton, _ Temporary:=True) tlbMyButton.Style = msoButtonIconAndCaption tlbMyButton.Picture = LoadPicture(ActiveWorkbook.Path & "myImage.bmp") tlbMyButton.Caption = "Test"
End Sub
</source>
deletes a control that has a caption of SortButton.
<source lang="vb">
Sub commandBar()
CommandBars("MyToolbar").Controls("SortButton").Delete
End Sub
</source>
Determines if a given command bar name exists
<source lang="vb">
Sub TestCommandBarUtilities()
Debug.Print CommandBarExists("Worksheet Menu Bar") Debug.Print CommandBarExists("Formatting") Debug.Print CommandBarExists("Not a command bar")
End Sub
Function CommandBarExists(sName As String) As Boolean
Dim s As String On Error GoTo bWorksheetExistsErr s = Application.rumandBars(sName).Name CommandBarExists = True Exit Function
bWorksheetExistsErr:
CommandBarExists = False
End Function
</source>
Display Control Detail
<source lang="vb">
Private Sub DisplayControlDetail()
Dim cb As CommandBar Dim cbc As CommandBarControl On Error Resume Next For Each cb In Application.rumandBars For Each cbc In cb.Controls Debug.Print Replace(cbc.Caption, "&", "") Debug.Print cbc.Caption Debug.Print cbc.Index Debug.Print cbc.BuiltIn Debug.Print cbc.Enabled Debug.Print cbc.Visible Debug.Print cbc.IsPriorityDropped Debug.Print cbc.Priority Debug.Print TranslateControlType(cbc.Type) Debug.Print cbc.Controls.Count Next Next Set cbc = Nothing
End Sub
Function TranslateControlType(vType As MsoControlType) As String
Dim sType As String Select Case vType Case Is = MsoControlType.msoControlActiveX sType = "ActiveX" Case Is = MsoControlType.msoControlAutoCompleteCombo sType = "Auto Complete Combo" Case Is = MsoControlType.msoControlButton sType = "Button" Case Is = MsoControlType.msoControlButtonDropdown sType = "Button Dropdown" Case Is = MsoControlType.msoControlButtonPopup sType = "Button Popup" Case Is = MsoControlType.msoControlComboBox sType = "Combo Box" Case Is = MsoControlType.msoControlCustom sType = "Custom" Case Is = MsoControlType.msoControlDropdown sType = "Dropdown" Case Is = MsoControlType.msoControlEdit sType = "Edit" Case Is = MsoControlType.msoControlExpandingGrid sType = "Expanding Grid" Case Is = MsoControlType.msoControlGauge sType = "Gauge" Case Is = MsoControlType.msoControlGenericDropdown sType = "Generic Dropdown" Case Is = MsoControlType.msoControlGraphicCombo sType = "Graphic Combo" Case Is = MsoControlType.msoControlGraphicDropdown sType = "Graphic Dropdown" Case Is = MsoControlType.msoControlGraphicPopup sType = "Graphic Popup" Case Is = MsoControlType.msoControlGrid sType = "Grid" Case Is = MsoControlType.msoControlLabel sType = "Label" Case Is = MsoControlType.msoControlLabelEx sType = "Label Ex" Case Is = MsoControlType.msoControlOCXDropdown sType = "OCX Dropdown" Case Is = MsoControlType.msoControlPane sType = "Pane" Case Is = MsoControlType.msoControlPopup sType = "Popup" Case Is = MsoControlType.msoControlSpinner sType = "Spinner" Case Is = MsoControlType.msoControlSplitButtonMRUPopup sType = "Split Button MRU Popup" Case Is = MsoControlType.msoControlSplitButtonPopup sType = "Split Button Popup" Case Is = MsoControlType.msoControlSplitDropdown sType = "Split Dropdown" Case Is = MsoControlType.msoControlSplitExpandingGrid sType = "Split Expanding Grid" Case Is = MsoControlType.msoControlWorkPane sType = "Work Pane" Case Else sType = "Unknown control type" End Select TranslateControlType = sType
End Function
</source>
<source lang="vb">
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
CommandBars("MyShortcut").ShowPopup Cancel = True
End Sub
</source>
displays the Caption property for the first Control object contained in the Standard toolbar, whose index is 3.
<source lang="vb">
Sub Test()
MsgBox CommandBars(3).Controls(1).Caption
End Sub
</source>
Finding Visible Controls with FindControls
<source lang="vb">
Sub FindVisibleControls()
Dim ctrls As CommandBarControls Dim ctrl As CommandBarControl Set ctrls = Application.rumandBars.FindControls(, , , True) For Each ctrl In ctrls Debug.Print ctrl.Parent.name Debug.Print ctrl.Caption Debug.Print ctrl.Index Debug.Print ctrl.ID Debug.Print ctrl.Enabled Debug.Print ctrl.Visible Debug.Print ctrl.IsPriorityDropped Debug.Print TranslateControlType(ctrl.Type) Next Set ctrl = Nothing Set ctrls = Nothing
End Sub
Function TranslateControlType(vType As MsoControlType) As String
Dim sType As String Select Case vType Case Is = MsoControlType.msoControlActiveX sType = "ActiveX" Case Is = MsoControlType.msoControlAutoCompleteCombo sType = "Auto Complete Combo" Case Is = MsoControlType.msoControlButton sType = "Button" Case Is = MsoControlType.msoControlButtonDropdown sType = "Button Dropdown" Case Is = MsoControlType.msoControlButtonPopup sType = "Button Popup" Case Is = MsoControlType.msoControlComboBox sType = "Combo Box" Case Is = MsoControlType.msoControlCustom sType = "Custom" Case Is = MsoControlType.msoControlDropdown sType = "Dropdown" Case Is = MsoControlType.msoControlEdit sType = "Edit" Case Is = MsoControlType.msoControlExpandingGrid sType = "Expanding Grid" Case Is = MsoControlType.msoControlGauge sType = "Gauge" Case Is = MsoControlType.msoControlGenericDropdown sType = "Generic Dropdown" Case Is = MsoControlType.msoControlGraphicCombo sType = "Graphic Combo" Case Is = MsoControlType.msoControlGraphicDropdown sType = "Graphic Dropdown" Case Is = MsoControlType.msoControlGraphicPopup sType = "Graphic Popup" Case Is = MsoControlType.msoControlGrid sType = "Grid" Case Is = MsoControlType.msoControlLabel sType = "Label" Case Is = MsoControlType.msoControlLabelEx sType = "Label Ex" Case Is = MsoControlType.msoControlOCXDropdown sType = "OCX Dropdown" Case Is = MsoControlType.msoControlPane sType = "Pane" Case Is = MsoControlType.msoControlPopup sType = "Popup" Case Is = MsoControlType.msoControlSpinner sType = "Spinner" Case Is = MsoControlType.msoControlSplitButtonMRUPopup sType = "Split Button MRU Popup" Case Is = MsoControlType.msoControlSplitButtonPopup sType = "Split Button Popup" Case Is = MsoControlType.msoControlSplitDropdown sType = "Split Dropdown" Case Is = MsoControlType.msoControlSplitExpandingGrid sType = "Split Expanding Grid" Case Is = MsoControlType.msoControlWorkPane sType = "Work Pane" Case Else sType = "Unknown control type" End Select TranslateControlType = sType
End Function
</source>
Get the type of CommandBars
<source lang="vb">
Sub listCommandBars()
Dim comBar As CommandBar Dim comBarType As String For Each comBar In CommandBars Select Case comBar.Type Case msoBarTypeNormal comBarType = "Toolbar" Case msoBarTypeMenuBar comBarType = "Menu Bar" Case msoBarTypePopup comBarType = "Shortcut" End Select Debug.Print comBar.Index, comBar.Name, comBarType, comBar.Visible Next
End Sub
</source>
how your VBA code can change the position of a toolbar.
<source lang="vb">
Sub MoveToolbar()
With CommandBars("MyToolbar") OldLeft = .Left OldTop = .Top For i = 1 To 60 .Left = Int(vidWidth * Rnd) .Top = Int(vidHeight * Rnd) DoEvents Next i .Left = OldLeft .Top = OldTop End With
End Sub
</source>
Inspecting a CommandBar
<source lang="vb">
Sub DisplayGeneralInfo()
Dim cb As CommandBar For Each cb In Application.rumandBars Debug.Print "Name:" & cb.Name Debug.Print "Index:" & cb.Index Debug.Print "Built In:" & cb.BuiltIn Debug.Print "Enabled:" cb.Enabled Debug.Print "Visible:" & cb.Visible Debug.Print "Type:" & TranslateCommandBarType(cb.Type) Debug.Print "Position:" & TranslateCommandBarPosition(cb.Position) Debug.Print "Control Count:" & cb.Controls.Count Next
End Sub
Function TranslateCommandBarPosition(vType As MsoBarPosition) As String
Dim sPosition As String Select Case vType Case Is = MsoBarPosition.msoBarBottom sPosition = "Bottom" Case Is = MsoBarPosition.msoBarFloating sPosition = "Floating" Case Is = MsoBarPosition.msoBarLeft sPosition = "Left" Case Is = MsoBarPosition.msoBarMenuBar sPosition = "Menu Bar" Case Is = MsoBarPosition.msoBarPopup sPosition = "Popup" Case Is = MsoBarPosition.msoBarRight sPosition = "Right" Case Is = MsoBarPosition.msoBarTop sPosition = "Top" Case Else sPosition = "Unknown position" End Select TranslateCommandBarPosition = sPosition
End Function
Function TranslateCommandBarType(vType As MsoBarType) As String
Dim sType As String Select Case vType Case Is = MsoBarType.msoBarTypeMenuBar sType = "Menu Bar" Case Is = MsoBarType.msoBarTypeNormal sType = "Normal" Case Is = MsoBarType.msoBarTypePopup sType = "Popup" Case Else sType = "Unknown type" End Select TranslateCommandBarType = sType
End Function
</source>
Listing all controls on all toolbars
<source lang="vb">
Sub ShowAllToolbarControls()
For Each myCommandBar In CommandBars If myCommandBar.Type = msoBarTypeNormal Then Debug.Print myCommandBar.name For Each ctl In myCommandBar.Controls Debug.Print ctl.Caption Next ctl End If Next myCommandBar
End Sub
</source>
Listing the controls on a command bar
<source lang="vb">
Sub ShowControlCaptions()
Dim myCommandBar As commandBar Set myCommandBar = CommandBars("Standard") For Each ctl In myCommandBar.Controls Debug.Print ctl.Caption Next ctl </source>
Properties of CommandBar controls
<source lang="vb">
Sub ShowShortcutMenuItems()
Dim myCommandBar As CommandBar Dim Ctl As CommandBarControl Application.ScreenUpdating = False For Each myCommandBar In Application.rumandBars If myCommandBar.Type = msoBarTypePopup Then Debug.Print myCommandBar.Index Debug.Print myCommandBar.Name For Each Ctl In myCommandBar.Controls If Ctl.Visible Then Debug.Print Ctl.Caption Else Debug.Print "<" & Ctl.Caption & ">" End If Next Ctl End If Next myCommandBar
End Sub
</source>
Rather than use an index number to refer to a control, you can use its Caption property setting
<source lang="vb">
Sub Test2()
MsgBox CommandBars("Standard").Controls("New").Caption
End Sub
</source>
Referring to command bars
<source lang="vb">
Function CommandBarExists(n) As Boolean
Dim cb As CommandBar For Each cb In CommandBars If UCase(cb.Name) = UCase(n) Then CommandBarExists = True Exit Function End If Next cb CommandBarExists = False
End Function
</source>
Removes a toolbar specified by the name passed in
<source lang="vb">
Sub RemoveToolbar(tlbarName As String)
Dim myCommandBar As CommandBar For Each myCommandBar In Application.rumandBars If myCommandBar.Name = tlbarName Then myCommandBar.Delete Exit For End If Next
End Sub
</source>
Removing all toolbars and then restoring them
<source lang="vb">
Sub HideAllToolbars()
Dim toolBar As commandBar Dim toolBarNum As Integer Dim toolBarSheet As Worksheet Set toolBarSheet = Sheets("Sheet1") Application.ScreenUpdating = False toolBarSheet.Cells.Clear toolBarNum = 0 For Each toolBar In CommandBars If toolBar.Type = msoBarTypeNormal Then If toolBar.Visible Then toolBarNum = toolBarNum + 1 toolBar.Visible = False toolBarSheet.Cells(toolBarNum, 1) = toolBar.name End If End If Next toolBar Application.ScreenUpdating = True
End Sub
</source>
<source lang="vb">
Sub MakeMenuBar()
Dim NewMenuBar As commandBar Set NewMenuBar = CommandBars.Add(MenuBar:=True) With NewMenuBar .name = "MyMenuBar" .Visible = True End With CommandBars("Worksheet Menu Bar") _ .Controls(1).Copy Bar:=CommandBars("MyMenuBar") Set NewMenu = NewMenuBar.Controls.Add _ (Type:=msoControlPopup) NewMenu.Caption = "&Commands" Set NewItem = NewMenu.Controls.Add(Type:=msoControlButton) With NewItem .Caption = "&Restore Normal Menu" .OnAction = "DeleteMenuBar" End With Set NewItem = NewMenu.Controls.Add(Type:=msoControlButton) With NewItem .Caption = "&Help" .OnAction = "DeleteMenuBar" End With
End Sub
Sub DeleteMenuBar()
On Error Resume Next CommandBars("MyMenuBar").Delete On Error GoTo 0
End Sub
</source>
Reset CommandBar
<source lang="vb">
Sub ResetAll()
Dim myCommandBar As CommandBar For Each myCommandBar In Application.rumandBars If myCommandBar.Type = msoBarTypePopup Then myCommandBar.Reset myCommandBar.Enabled = True End If Next myCommandBar
End Sub
</source>
<source lang="vb">
Private Sub ResetCommandBar()
Application.rumandBars("Worksheet Menu Bar").Reset
End Sub
</source>
Restore tool bar
<source lang="vb">
Sub RestoreToolbars()
Dim toolBarSheet As Worksheet Set toolBarSheet = Sheets("toolBarSheet") Application.ScreenUpdating = False On Error Resume Next For Each Cell In toolBarSheet.range("A:A") _ .SpecialCells(xlCellTypeConstants) CommandBars(Cell.value).Visible = True Next Cell Application.ScreenUpdating = True
End Sub
</source>
Save list of all predefined commands and their ID numbers in a file
<source lang="vb">
Sub IdList()
On Error Resume Next If Application.Version >= 10# Then Exit Sub Dim c As CommandBar, i Set c = CommandBars.Add Open ThisWorkbook.Path + "CommandBar.txt" For Output As #1 For i = 0 To 32 c.Controls.Add Id:=i If c.Controls(1).Caption <> "" And _ c.Controls(1).Caption <> "[Command not available]" And _ c.Controls(1).Caption <> "custom" Then Print #1, i, c.Controls(1).Caption End If c.Controls(1).Delete Next i c.Delete Close #1
End Sub
</source>
Set Control style, Action, group, faceid and caption
<source lang="vb">
Sub AddNewMB()
Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl Dim myCommandBarSubCtl As CommandBarControl On Error GoTo AddNewMB_Err Set myCommandBar = CommandBars.Add(Name:="Sample Menu Bar", Position:= _ msoBarTop, MenuBar:=True, Temporary:=False) myCommandBar.Visible = True myCommandBar.Protection = msoBarNoMove Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlPopup) myCommandBarCtl.Caption = "Displa&y" Set myCommandBarSubCtl = myCommandBarCtl.Controls.Add(Type:=msoControlButton) With myCommandBarSubCtl .Style = msoButtonIconAndCaption .Caption = "S&le Menu Disable" .FaceId = 59 .OnAction = "=SampleMenuDisable()" .Parameter = 1 .BeginGroup = True End With
AddNewMB_Err:
msgBox "Error " & Err.number & vbCr & Err.Description Exit Sub
End Sub
Function SampleMenuDisable()
Application.rumandBars("Sample Menu Bar").Visible = False Application.rumandBars("Menu Bar").Visible = True
End Function
</source>
sets the FaceId property of the first button on the MyToolbar toolbar image to 45, which is the code number for a mailbox icon.
<source lang="vb">
Sub faceID()
CommandBars("MyToolbar").Controls(1).FaceId = 45
End Sub
</source>
Show All Toolbar Controls
<source lang="vb">
Sub ShowAllToolbarControls()
Cells.Clear Row = 1 For Each myCommandBar In CommandBars If myCommandBar.Type = msoBarTypeNormal Then Cells(Row, 1) = myCommandBar.Name For Each ctl In myCommandBar.Controls Cells(Row, 2) = ctl.Caption Row = Row + 1 Next ctl End If Next myCommandBar
End Sub
</source>
Show CommandBar Names
<source lang="vb">
Sub ShowCommandBarNames()
Cells.Clear Row = 1 For Each myCommandBar In CommandBars Cells(Row, 1) = myCommandBar.Index Cells(Row, 2) = myCommandBar.Name Select Case myCommandBar.Type Case msoBarTypeNormal Cells(Row, 3) = "Toolbar" Case msoBarTypeMenuBar Cells(Row, 3) = "Menu Bar" Case msoBarTypePopUp Cells(Row, 3) = "Shortcut" End Select Row = Row + 1 Next myCommandBar
End Sub
</source>
show/hide check symbol
<source lang="vb">
Sub MenuCommand2_OnAction()
With CommandBars.ActionControl If .State = msoButtonDown Then .State = msoButtonUp Else .State = msoButtonDown End If End With
End Sub
</source>
Shows or hides a command bar.
<source lang="vb">
Sub TestCommandBarUtilities()
ShowCommandBar "Borders", True
End Sub
Sub ShowCommandBar(sName As String, bShow As Boolean)
If CommandBarExists(sName) Then Application.rumandBars(sName).Visible = bShow End If
End Sub
</source>
simply copies the NumberFormat property of the ActiveCell to the Caption property of the button control.
<source lang="vb">
Sub UpdateToolbar()
On Error Resume Next CommandBars("Number Format").Controls(1).Caption = ActiveCell.NumberFormat If Err <> 0 Then CommandBars("Number Format").Controls(1).Caption = ""
End Sub
</source>
The custom toolbar is removed with this procedure
<source lang="vb">
Sub RemoveToolBar()
On Error Resume Next Application.rumandBars("ExcelVBADummies").Delete
End Sub
Sub Main()
Debug.Print FirstName()
End Sub
Function FirstName() Dim FullName As String Dim FirstSpace As Integer FullName = Application.userName FirstSpace = InStr(FullName, " ") If FirstSpace = 0 Then FirstName = FullName Else FirstName = Left(FullName, FirstSpace - 1) End If End Function </source>
The Protection constants are additive: apply different types of protection with a single command
<source lang="vb">
Sub commandBar()
Set cb = CommandBars("MyToolbar") cb.Protection = msoBarNoCustomize + msoBarNoMove
End Sub
</source>
The Protection property of a CommandBar object provides you with many options for protecting a CommandBar.
<source lang="vb">
Sub commdBar()
CommandBars("MyToolbar").Protection = msoBarNoCustomize
End Sub
</source>
This toolbar exists only when the cell pointer falls within a given range
<source lang="vb">
Sub CreateToolbar()
Dim myBar As commandBar Dim Button As CommandBarButton Set myBar = CommandBars.Add For i = 1 To 4 Set Button = myBar.Controls.Add(msoControlButton) With Button .OnAction = "Button" & i .FaceId = i + 37 End With Next i myBar.name = "myBar"
End Sub
</source>
To delete a control from a CommandBar object, use the Delete method of the Controls collection
<source lang="vb">
Sub delBar()
CommandBars("MyToolbar").Controls(1).Delete
End Sub
</source>
Translates a MsoBarPosition enumeration into a text description of the bar position.
<source lang="vb">
Sub Inventory()
Dim cb As commandBar For Each cb In Application.rumandBars Debug.Print TranslateCommandBarPosition(cb.Position) Next Set cb = Nothing
End Sub
Function TranslateCommandBarPosition(vType As MsoBarPosition) As String
Dim sPosition As String Select Case vType Case Is = MsoBarPosition.msoBarBottom sPosition = "Bottom" Case Is = MsoBarPosition.msoBarFloating sPosition = "Floating" Case Is = MsoBarPosition.msoBarLeft sPosition = "Left" Case Is = MsoBarPosition.msoBarMenuBar sPosition = "Menu Bar" Case Is = MsoBarPosition.msoBarPopup sPosition = "Popup" Case Is = MsoBarPosition.msoBarRight sPosition = "Right" Case Is = MsoBarPosition.msoBarTop sPosition = "Top" Case Else sPosition = "Unknown position" End Select TranslateCommandBarPosition = sPosition
End Function
</source>
Translates a MsoBarType enumeration into a text description of the bar type.
<source lang="vb">
Sub Inventory()
Dim cb As commandBar For Each cb In Application.rumandBars Debug.Print TranslateCommandBarType(cb.Type) Next Set cb = Nothing
End Sub
Function TranslateCommandBarType(vType As MsoBarType) As String
Dim sType As String Select Case vType Case Is = MsoBarType.msoBarTypeMenuBar sType = "Menu Bar" Case Is = MsoBarType.msoBarTypeNormal sType = "Normal" Case Is = MsoBarType.msoBarTypePopup sType = "Popup" Case Else sType = "Unknown type" End Select TranslateCommandBarType = sType
End Function
</source>
Translates a MsoControlType enumeration into a text description of the control type.
<source lang="vb">
Private Sub DisplayControlDetail()
Dim cb As CommandBar Dim cbc As CommandBarControl On Error Resume Next For Each cb In Application.rumandBars For Each cbc In cb.Controls Debug.Print cbc.Caption Debug.Print TranslateControlType(cbc.Type) Next Next Set cbc = Nothing
End Sub
Function TranslateControlType(vType As MsoControlType) As String
Dim sType As String Select Case vType Case Is = MsoControlType.msoControlActiveX sType = "ActiveX" Case Is = MsoControlType.msoControlAutoCompleteCombo sType = "Auto Complete Combo" Case Is = MsoControlType.msoControlButton sType = "Button" Case Is = MsoControlType.msoControlButtonDropdown sType = "Button Dropdown" Case Is = MsoControlType.msoControlButtonPopup sType = "Button Popup" Case Is = MsoControlType.msoControlComboBox sType = "Combo Box" Case Is = MsoControlType.msoControlCustom sType = "Custom" Case Is = MsoControlType.msoControlDropdown sType = "Dropdown" Case Is = MsoControlType.msoControlEdit sType = "Edit" Case Is = MsoControlType.msoControlExpandingGrid sType = "Expanding Grid" Case Is = MsoControlType.msoControlGauge sType = "Gauge" Case Is = MsoControlType.msoControlGenericDropdown sType = "Generic Dropdown" Case Is = MsoControlType.msoControlGraphicCombo sType = "Graphic Combo" Case Is = MsoControlType.msoControlGraphicDropdown sType = "Graphic Dropdown" Case Is = MsoControlType.msoControlGraphicPopup sType = "Graphic Popup" Case Is = MsoControlType.msoControlGrid sType = "Grid" Case Is = MsoControlType.msoControlLabel sType = "Label" Case Is = MsoControlType.msoControlLabelEx sType = "Label Ex" Case Is = MsoControlType.msoControlOCXDropdown sType = "OCX Dropdown" Case Is = MsoControlType.msoControlPane sType = "Pane" Case Is = MsoControlType.msoControlPopup sType = "Popup" Case Is = MsoControlType.msoControlSpinner sType = "Spinner" Case Is = MsoControlType.msoControlSplitButtonMRUPopup sType = "Split Button MRU Popup" Case Is = MsoControlType.msoControlSplitButtonPopup sType = "Split Button Popup" Case Is = MsoControlType.msoControlSplitDropdown sType = "Split Dropdown" Case Is = MsoControlType.msoControlSplitExpandingGrid sType = "Split Expanding Grid" Case Is = MsoControlType.msoControlWorkPane sType = "Work Pane" Case Else sType = "Unknown control type" End Select TranslateControlType = sType
End Function
</source>
<source lang="vb">
Sub ListShortCutMenus()
For Each myCommandBar In CommandBars If myCommandBar.Type = msoBarTypePopup Then Debug.Print myCommandBar.Index Debug.Print myCommandBar.name For col = 1 To myCommandBar.Controls.Count Debug.Print myCommandBar.Controls(col).Caption Next col End If Next myCommandBar
End Sub
</source>
Добрый день. Я тут решился попрактиковаться в создании пользовательских меню средствами VBA.
Открыл
первый попавшийся
мне по данной теме ресурс.
Тупо скопировал код
Код |
---|
Dim CstmBar As CommandBar Set CstmBar = CommandBars.Add(Name:="Головнoe меню", Position:=msoBarTop, MenuBar:=True, Temporary:=False) |
В простейшую процедурку, но не тут то было!
Началось все с не верного синтаксиса перенесения строк.
Подправил. За одно написал свои параметры.
Код |
---|
Set CstmBar = CommandBars.Add Name:="Меню", Position:=msoBarPopup, MenuBar:=False, Temporary:=True |
Такой синтаксис тоже ошибочен.
Заключил параметры в скобки.
Код |
---|
Set CstmBar = CommandBars.Add(Name:="Меню", Position:=msoBarPopup, MenuBar:=False, Temporary:=True) |
Редактор материться перестал, но лучше не стало, потому что теперь полезла 5я ошибка времени выполнения — неверные call параметры!
Решил убрать имена параметров и сделать короткую форму записи.
Код |
---|
Set CstmBar = CommandBars.Add("Меню", msoBarPopup, False, True) |
Все равно лезет 5я ошибка.
Чё ему надо?