+ Reply to Thread
Results 1 to 10 of 10

Add standard excel button to custom toolbar menu

Hybrid View

  1. #1
    Gixxer_J_97
    Guest

    Add standard excel button to custom toolbar menu

    Hi all,

    i have the following code that creates my custom toolbar.
    I would like to add some standard toolbar buttons to it, but am having
    problems,

    The buttons i want to add are:

    Save
    Print Preview
    Print
    Zoom
    Center
    Borders
    Fill Color
    Font Color

    I tried to record a macro adding the buttons i wanted, but it gave me code
    like:

    Application.CommandBars("Custom Popup 942187").Controls.Add
    Type:=msoControlSplitButtonPopup, ID:=401, before:=1

    and this never worked when the code was run again - i'm thinking that
    "Custom Popup 942187" is a temporary ID for the target menu.

    I was thinking I could add these buttons to the "Workbook Tools" menu in the
    With MenuItm
    If Arr0(i) = "Wor&kbook Tools" Then
    '.Type = Arr2(i)(j)
    '.ID = Arr4(i)(j)
    '.Style = Arr2(i)(j)
    .FaceId = Arr4(i)(j)

    Else

    section - however when i try to set the .type and .id, i get a 'cannot set a
    read only property' error.

    any thoughts?

    tia

    J

    Here is my code:

    Public Sub CreateToolbar()
    ' create the custom toolbar for this application
    ' Arr0 contains the names of the buttons created
    ' Arr1 contains the tooltip text for the buttons in Arr0
    ' Arr0 - Arr5 must be the same dimensions 1xY
    ' Arr2 contains an array of arrays with the names of the submenu items
    ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is the
    ith element in
    ' Arr2 and j is the jth element in the inner array.
    ' Arr3 contains the names of the macros that the corresponding elements
    in Arr2 will
    ' refer to.
    ' Arr4 contains the FaceId of each element in Arr2 (ie the button image)
    ' Arr5 contains the tags of the buttons, used to determine which one was
    called (in lieu of passing arguments)

    ' Pre-dimension all variables that will be used
    Dim CBAR As CommandBar
    Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    SubMenuItm As CommandBarControl
    Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As Variant,
    Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    Dim i As Integer, j As Integer, widths As Integer
    Dim MenuName As String

    ' Define the menu name - flexibility to change the name only in one spot
    ' activeMenu defined in CONSTANTS
    MenuName = activeMenu
    ' If the toolbar exists, delete it and create it new.
    ' Used to prevent duplicates and erors
    On Error Resume Next
    Application.CommandBars(MenuName).Delete
    On Error GoTo 0
    ' Global name defined in 'Constants' - used for extensability in the
    future
    ' if further menus are needed (ie to turn on/off - delete the 'active'
    menu

    ' set the widths of the menus - keeps them uniform
    widths = 100

    Call TurnOffUpdates(True)

    ' Define the arrays that will be used to create the custom toolbar
    ' to add an element, add an entry in each of the arrays below
    ' make sure that the inserted elements are all inserted in their
    ' corresponding slots. ie to add a new menu at position 0
    ' make sure that it is the first element in Arr0-Arr5
    ' Arr0 - the Display name of the top level menu
    ' Arr1 - the tooltip text of the top level menu
    ' Arr2 - the Display name of the sub-menu items
    ' Arr3 - the name of the macro that will be called
    ' Arr4 - the integer value of the FaceId button that will be used
    ' Arr5 - the tags of the button used to switch pages

    Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    "Hel&p", "Wor&kbook Tools")
    Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    Management.", "Tools for Customer Management.", "Tools for Inventory
    Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    "Change the current document being viewed.", "Get Help!", "Tools for
    formatting the workbook")

    Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    "Check Order", "", "Reset Order", "", "Print..", "Publish Documents", "",
    "View Order"), _
    Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger Filters",
    "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls", "View
    Deposits"), _
    Array("Add Customer", "Edit Customer", "", "Remove Customer", "",
    "View Customers", "", "View Customer Orders", "View Sales Journal", "", "Fill
    Sales Journal", "Fix Links"), _
    Array("Add/Edit Product Line", "Remove Product Line", "", "Refresh
    Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "", "View
    Inventory", "View Inventory Costs"), _
    Array("Print Documents..", "E-Mail Documents"), _
    Array("Refresh Top Customers/Products", "", "View Summary"), _
    Array("View Order", "View Withdrawls", "View Deposits", "View
    Inventory", "View Inventory Costs", "View Customer Orders", "View Sales
    Journal", "View Master Price List", "View Wholesale Price List", "View
    Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    Array("General Help", "Error Code Help"), _
    Array(msoControlButton, msoControlButton, msoControlButton,
    msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    msoControlSplitButtonPopup, msoControlSplitButtonPopup))

    Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    "CheckOrder", "", "ResetOrder", "", "PrintDocuments", "PublishDocuments", "",
    "SwitchOut"), _
    Array("MakeWithdrawl", "MakeDeposit", "", "resetLedgerFilterRanges",
    "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    "SwitchOut"), _
    Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    "FixLinks"), _
    Array("AddProductLine", "RemoveProductLine", "",
    "RefreshInventory2", "refreshInventoryCosts", "", "resetOrderFilterRanges",
    "", "SwitchOut", "SwitchOut"), _
    Array("PrintDocuments", "EmailDocuments"), _
    Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    "SwitchOut", "SwitchOut", "", "SetOptions"), _
    Array("HelpGeneral", "HelpErrorCodes"))

    Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    2174), _
    Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010, 1100), _
    Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    Array(4, 24), _
    Array(2010, 1, 2174), _
    Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
    2174, 2174, 1, 2174), _
    Array(215, 215), _
    Array(3, 109, 4, 1733, 122, 203, 1691, 401))

    Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "", "Work
    Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    Order:A1"), _
    Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger", "",
    "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"), _
    Array("Inventory", "Inventory", "", "Inventory:Menu", "Inventory",
    "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    Array("Accountant", "Accountant"), _
    Array("Summary", "", "Summary:A1"), _
    Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    Array("Help", "Help"))

    ' create the actual toolbar - MenuName is the text at the top of the
    ' menu when it is floating
    Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)

    ' loop through the arrays to create the menus
    ' outer for loop loops through Arr0 to create the top level names
    ' inner for loop loops through Arr2 to create the sub-menu names
    For i = 0 To UBound(Arr0)
    ' add the NewMenu to the CommandBar
    Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    ' Create the display name for this top-level item
    NewMenu.Caption = Arr0(i)
    ' create the tooltip text for this top-level item
    NewMenu.TooltipText = Arr1(i)
    ' now add the sub-menu items
    For j = 0 To UBound(Arr2(i))
    ' add the sub-menu item to the NewMenu
    If Arr2(i)(j) = "" Then
    MenuItm.BeginGroup = True
    Else
    Set MenuItm = NewMenu.Controls.Add


    With MenuItm
    If Arr0(i) = "Wor&kbook Tools" Then
    '.Type = Arr2(i)(j)
    '.ID = Arr4(i)(j)
    '.Style = Arr2(i)(j)
    .FaceId = Arr4(i)(j)

    Else
    ' add the caption
    .Caption = Arr2(i)(j)
    ' set it to display both icon and text
    .Style = msoButtonIconAndCaption
    ' define the macro associated with it
    .OnAction = Arr3(i)(j)
    ' define the icon to be used
    .FaceId = Arr4(i)(j)
    ' tag to define which element
    .tag = Arr5(i)(j)
    ' define its width to keep it uniform
    .Width = widths
    End If
    End With

    End If
    Next

    Next
    ' set the bar to be docked with the rest of the toolbars at the top
    CBAR.Position = msoBarTop
    ' make it visibile so it can be used
    CBAR.Visible = True
    ' don't know
    DoEvents
    Call TurnOffUpdates(False)
    End Sub

  2. #2
    Bob Phillips
    Guest

    Re: Add standard excel button to custom toolbar menu

    Isn't your menu called by whatever value activeMenu holds?

    --
    HTH

    Bob Phillips

    (remove nothere from email address if mailing direct)

    "Gixxer_J_97" <[email protected]> wrote in message
    news:[email protected]...
    > Hi all,
    >
    > i have the following code that creates my custom toolbar.
    > I would like to add some standard toolbar buttons to it, but am having
    > problems,
    >
    > The buttons i want to add are:
    >
    > Save
    > Print Preview
    > Print
    > Zoom
    > Center
    > Borders
    > Fill Color
    > Font Color
    >
    > I tried to record a macro adding the buttons i wanted, but it gave me code
    > like:
    >
    > Application.CommandBars("Custom Popup 942187").Controls.Add
    > Type:=msoControlSplitButtonPopup, ID:=401, before:=1
    >
    > and this never worked when the code was run again - i'm thinking that
    > "Custom Popup 942187" is a temporary ID for the target menu.
    >
    > I was thinking I could add these buttons to the "Workbook Tools" menu in

    the
    > With MenuItm
    > If Arr0(i) = "Wor&kbook Tools" Then
    > '.Type = Arr2(i)(j)
    > '.ID = Arr4(i)(j)
    > '.Style = Arr2(i)(j)
    > .FaceId = Arr4(i)(j)
    >
    > Else
    >
    > section - however when i try to set the .type and .id, i get a 'cannot set

    a
    > read only property' error.
    >
    > any thoughts?
    >
    > tia
    >
    > J
    >
    > Here is my code:
    >
    > Public Sub CreateToolbar()
    > ' create the custom toolbar for this application
    > ' Arr0 contains the names of the buttons created
    > ' Arr1 contains the tooltip text for the buttons in Arr0
    > ' Arr0 - Arr5 must be the same dimensions 1xY
    > ' Arr2 contains an array of arrays with the names of the submenu items
    > ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is the
    > ith element in
    > ' Arr2 and j is the jth element in the inner array.
    > ' Arr3 contains the names of the macros that the corresponding

    elements
    > in Arr2 will
    > ' refer to.
    > ' Arr4 contains the FaceId of each element in Arr2 (ie the button

    image)
    > ' Arr5 contains the tags of the buttons, used to determine which one

    was
    > called (in lieu of passing arguments)
    >
    > ' Pre-dimension all variables that will be used
    > Dim CBAR As CommandBar
    > Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    > SubMenuItm As CommandBarControl
    > Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As

    Variant,
    > Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    > Dim i As Integer, j As Integer, widths As Integer
    > Dim MenuName As String
    >
    > ' Define the menu name - flexibility to change the name only in one

    spot
    > ' activeMenu defined in CONSTANTS
    > MenuName = activeMenu
    > ' If the toolbar exists, delete it and create it new.
    > ' Used to prevent duplicates and erors
    > On Error Resume Next
    > Application.CommandBars(MenuName).Delete
    > On Error GoTo 0
    > ' Global name defined in 'Constants' - used for extensability in the
    > future
    > ' if further menus are needed (ie to turn on/off - delete the 'active'
    > menu
    >
    > ' set the widths of the menus - keeps them uniform
    > widths = 100
    >
    > Call TurnOffUpdates(True)
    >
    > ' Define the arrays that will be used to create the custom toolbar
    > ' to add an element, add an entry in each of the arrays below
    > ' make sure that the inserted elements are all inserted in their
    > ' corresponding slots. ie to add a new menu at position 0
    > ' make sure that it is the first element in Arr0-Arr5
    > ' Arr0 - the Display name of the top level menu
    > ' Arr1 - the tooltip text of the top level menu
    > ' Arr2 - the Display name of the sub-menu items
    > ' Arr3 - the name of the macro that will be called
    > ' Arr4 - the integer value of the FaceId button that will be used
    > ' Arr5 - the tags of the button used to switch pages
    >
    > Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    > "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    > "Hel&p", "Wor&kbook Tools")
    > Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    > Management.", "Tools for Customer Management.", "Tools for Inventory
    > Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    > "Change the current document being viewed.", "Get Help!", "Tools for
    > formatting the workbook")
    >
    > Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    > "Check Order", "", "Reset Order", "", "Print..", "Publish Documents", "",
    > "View Order"), _
    > Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger

    Filters",
    > "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls", "View
    > Deposits"), _
    > Array("Add Customer", "Edit Customer", "", "Remove Customer", "",
    > "View Customers", "", "View Customer Orders", "View Sales Journal", "",

    "Fill
    > Sales Journal", "Fix Links"), _
    > Array("Add/Edit Product Line", "Remove Product Line", "", "Refresh
    > Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "",

    "View
    > Inventory", "View Inventory Costs"), _
    > Array("Print Documents..", "E-Mail Documents"), _
    > Array("Refresh Top Customers/Products", "", "View Summary"), _
    > Array("View Order", "View Withdrawls", "View Deposits", "View
    > Inventory", "View Inventory Costs", "View Customer Orders", "View Sales
    > Journal", "View Master Price List", "View Wholesale Price List", "View
    > Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    > Array("General Help", "Error Code Help"), _
    > Array(msoControlButton, msoControlButton, msoControlButton,
    > msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    > msoControlSplitButtonPopup, msoControlSplitButtonPopup))
    >
    > Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    > "CheckOrder", "", "ResetOrder", "", "PrintDocuments", "PublishDocuments",

    "",
    > "SwitchOut"), _
    > Array("MakeWithdrawl", "MakeDeposit", "",

    "resetLedgerFilterRanges",
    > "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    > "SwitchOut"), _
    > Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    > "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    > "FixLinks"), _
    > Array("AddProductLine", "RemoveProductLine", "",
    > "RefreshInventory2", "refreshInventoryCosts", "",

    "resetOrderFilterRanges",
    > "", "SwitchOut", "SwitchOut"), _
    > Array("PrintDocuments", "EmailDocuments"), _
    > Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    > Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",

    "SwitchOut",
    > "SwitchOut", "SwitchOut", "", "SetOptions"), _
    > Array("HelpGeneral", "HelpErrorCodes"))
    >
    > Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    > 2174), _
    > Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    > Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010, 1100),

    _
    > Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    > Array(4, 24), _
    > Array(2010, 1, 2174), _
    > Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
    > 2174, 2174, 1, 2174), _
    > Array(215, 215), _
    > Array(3, 109, 4, 1733, 122, 203, 1691, 401))
    >
    > Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "", "Work
    > Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    > Order:A1"), _
    > Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger", "",
    > "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    > Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    > "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"), _
    > Array("Inventory", "Inventory", "", "Inventory:Menu", "Inventory",
    > "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    > Array("Accountant", "Accountant"), _
    > Array("Summary", "", "Summary:A1"), _
    > Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    > "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    > Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    > "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    > Array("Help", "Help"))
    >
    > ' create the actual toolbar - MenuName is the text at the top of the
    > ' menu when it is floating
    > Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)
    >
    > ' loop through the arrays to create the menus
    > ' outer for loop loops through Arr0 to create the top level names
    > ' inner for loop loops through Arr2 to create the sub-menu names
    > For i = 0 To UBound(Arr0)
    > ' add the NewMenu to the CommandBar
    > Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    > ' Create the display name for this top-level item
    > NewMenu.Caption = Arr0(i)
    > ' create the tooltip text for this top-level item
    > NewMenu.TooltipText = Arr1(i)
    > ' now add the sub-menu items
    > For j = 0 To UBound(Arr2(i))
    > ' add the sub-menu item to the NewMenu
    > If Arr2(i)(j) = "" Then
    > MenuItm.BeginGroup = True
    > Else
    > Set MenuItm = NewMenu.Controls.Add
    >
    >
    > With MenuItm
    > If Arr0(i) = "Wor&kbook Tools" Then
    > '.Type = Arr2(i)(j)
    > '.ID = Arr4(i)(j)
    > '.Style = Arr2(i)(j)
    > .FaceId = Arr4(i)(j)
    >
    > Else
    > ' add the caption
    > .Caption = Arr2(i)(j)
    > ' set it to display both icon and text
    > .Style = msoButtonIconAndCaption
    > ' define the macro associated with it
    > .OnAction = Arr3(i)(j)
    > ' define the icon to be used
    > .FaceId = Arr4(i)(j)
    > ' tag to define which element
    > .tag = Arr5(i)(j)
    > ' define its width to keep it uniform
    > .Width = widths
    > End If
    > End With
    >
    > End If
    > Next
    >
    > Next
    > ' set the bar to be docked with the rest of the toolbars at the top
    > CBAR.Position = msoBarTop
    > ' make it visibile so it can be used
    > CBAR.Visible = True
    > ' don't know
    > DoEvents
    > Call TurnOffUpdates(False)
    > End Sub




  3. #3
    Gixxer_J_97
    Guest

    Re: Add standard excel button to custom toolbar menu

    if you mean that if 'activeMenu' contains the string value "Toolbox", then
    looking in to toolbars menu you will see 'Toolbox' there, then yes.


    "Bob Phillips" wrote:

    > Isn't your menu called by whatever value activeMenu holds?
    >
    > --
    > HTH
    >
    > Bob Phillips
    >
    > (remove nothere from email address if mailing direct)
    >
    > "Gixxer_J_97" <[email protected]> wrote in message
    > news:[email protected]...
    > > Hi all,
    > >
    > > i have the following code that creates my custom toolbar.
    > > I would like to add some standard toolbar buttons to it, but am having
    > > problems,
    > >
    > > The buttons i want to add are:
    > >
    > > Save
    > > Print Preview
    > > Print
    > > Zoom
    > > Center
    > > Borders
    > > Fill Color
    > > Font Color
    > >
    > > I tried to record a macro adding the buttons i wanted, but it gave me code
    > > like:
    > >
    > > Application.CommandBars("Custom Popup 942187").Controls.Add
    > > Type:=msoControlSplitButtonPopup, ID:=401, before:=1
    > >
    > > and this never worked when the code was run again - i'm thinking that
    > > "Custom Popup 942187" is a temporary ID for the target menu.
    > >
    > > I was thinking I could add these buttons to the "Workbook Tools" menu in

    > the
    > > With MenuItm
    > > If Arr0(i) = "Wor&kbook Tools" Then
    > > '.Type = Arr2(i)(j)
    > > '.ID = Arr4(i)(j)
    > > '.Style = Arr2(i)(j)
    > > .FaceId = Arr4(i)(j)
    > >
    > > Else
    > >
    > > section - however when i try to set the .type and .id, i get a 'cannot set

    > a
    > > read only property' error.
    > >
    > > any thoughts?
    > >
    > > tia
    > >
    > > J
    > >
    > > Here is my code:
    > >
    > > Public Sub CreateToolbar()
    > > ' create the custom toolbar for this application
    > > ' Arr0 contains the names of the buttons created
    > > ' Arr1 contains the tooltip text for the buttons in Arr0
    > > ' Arr0 - Arr5 must be the same dimensions 1xY
    > > ' Arr2 contains an array of arrays with the names of the submenu items
    > > ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is the
    > > ith element in
    > > ' Arr2 and j is the jth element in the inner array.
    > > ' Arr3 contains the names of the macros that the corresponding

    > elements
    > > in Arr2 will
    > > ' refer to.
    > > ' Arr4 contains the FaceId of each element in Arr2 (ie the button

    > image)
    > > ' Arr5 contains the tags of the buttons, used to determine which one

    > was
    > > called (in lieu of passing arguments)
    > >
    > > ' Pre-dimension all variables that will be used
    > > Dim CBAR As CommandBar
    > > Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    > > SubMenuItm As CommandBarControl
    > > Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As

    > Variant,
    > > Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    > > Dim i As Integer, j As Integer, widths As Integer
    > > Dim MenuName As String
    > >
    > > ' Define the menu name - flexibility to change the name only in one

    > spot
    > > ' activeMenu defined in CONSTANTS
    > > MenuName = activeMenu
    > > ' If the toolbar exists, delete it and create it new.
    > > ' Used to prevent duplicates and erors
    > > On Error Resume Next
    > > Application.CommandBars(MenuName).Delete
    > > On Error GoTo 0
    > > ' Global name defined in 'Constants' - used for extensability in the
    > > future
    > > ' if further menus are needed (ie to turn on/off - delete the 'active'
    > > menu
    > >
    > > ' set the widths of the menus - keeps them uniform
    > > widths = 100
    > >
    > > Call TurnOffUpdates(True)
    > >
    > > ' Define the arrays that will be used to create the custom toolbar
    > > ' to add an element, add an entry in each of the arrays below
    > > ' make sure that the inserted elements are all inserted in their
    > > ' corresponding slots. ie to add a new menu at position 0
    > > ' make sure that it is the first element in Arr0-Arr5
    > > ' Arr0 - the Display name of the top level menu
    > > ' Arr1 - the tooltip text of the top level menu
    > > ' Arr2 - the Display name of the sub-menu items
    > > ' Arr3 - the name of the macro that will be called
    > > ' Arr4 - the integer value of the FaceId button that will be used
    > > ' Arr5 - the tags of the button used to switch pages
    > >
    > > Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    > > "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    > > "Hel&p", "Wor&kbook Tools")
    > > Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    > > Management.", "Tools for Customer Management.", "Tools for Inventory
    > > Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    > > "Change the current document being viewed.", "Get Help!", "Tools for
    > > formatting the workbook")
    > >
    > > Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    > > "Check Order", "", "Reset Order", "", "Print..", "Publish Documents", "",
    > > "View Order"), _
    > > Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger

    > Filters",
    > > "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls", "View
    > > Deposits"), _
    > > Array("Add Customer", "Edit Customer", "", "Remove Customer", "",
    > > "View Customers", "", "View Customer Orders", "View Sales Journal", "",

    > "Fill
    > > Sales Journal", "Fix Links"), _
    > > Array("Add/Edit Product Line", "Remove Product Line", "", "Refresh
    > > Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "",

    > "View
    > > Inventory", "View Inventory Costs"), _
    > > Array("Print Documents..", "E-Mail Documents"), _
    > > Array("Refresh Top Customers/Products", "", "View Summary"), _
    > > Array("View Order", "View Withdrawls", "View Deposits", "View
    > > Inventory", "View Inventory Costs", "View Customer Orders", "View Sales
    > > Journal", "View Master Price List", "View Wholesale Price List", "View
    > > Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    > > Array("General Help", "Error Code Help"), _
    > > Array(msoControlButton, msoControlButton, msoControlButton,
    > > msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    > > msoControlSplitButtonPopup, msoControlSplitButtonPopup))
    > >
    > > Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    > > "CheckOrder", "", "ResetOrder", "", "PrintDocuments", "PublishDocuments",

    > "",
    > > "SwitchOut"), _
    > > Array("MakeWithdrawl", "MakeDeposit", "",

    > "resetLedgerFilterRanges",
    > > "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    > > "SwitchOut"), _
    > > Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    > > "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    > > "FixLinks"), _
    > > Array("AddProductLine", "RemoveProductLine", "",
    > > "RefreshInventory2", "refreshInventoryCosts", "",

    > "resetOrderFilterRanges",
    > > "", "SwitchOut", "SwitchOut"), _
    > > Array("PrintDocuments", "EmailDocuments"), _
    > > Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    > > Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",

    > "SwitchOut",
    > > "SwitchOut", "SwitchOut", "", "SetOptions"), _
    > > Array("HelpGeneral", "HelpErrorCodes"))
    > >
    > > Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    > > 2174), _
    > > Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    > > Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010, 1100),

    > _
    > > Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    > > Array(4, 24), _
    > > Array(2010, 1, 2174), _
    > > Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,
    > > 2174, 2174, 1, 2174), _
    > > Array(215, 215), _
    > > Array(3, 109, 4, 1733, 122, 203, 1691, 401))
    > >
    > > Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "", "Work
    > > Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    > > Order:A1"), _
    > > Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger", "",
    > > "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    > > Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    > > "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"), _
    > > Array("Inventory", "Inventory", "", "Inventory:Menu", "Inventory",
    > > "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    > > Array("Accountant", "Accountant"), _
    > > Array("Summary", "", "Summary:A1"), _
    > > Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    > > "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    > > Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    > > "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    > > Array("Help", "Help"))
    > >
    > > ' create the actual toolbar - MenuName is the text at the top of the
    > > ' menu when it is floating
    > > Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)
    > >
    > > ' loop through the arrays to create the menus
    > > ' outer for loop loops through Arr0 to create the top level names
    > > ' inner for loop loops through Arr2 to create the sub-menu names
    > > For i = 0 To UBound(Arr0)
    > > ' add the NewMenu to the CommandBar
    > > Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    > > ' Create the display name for this top-level item
    > > NewMenu.Caption = Arr0(i)
    > > ' create the tooltip text for this top-level item
    > > NewMenu.TooltipText = Arr1(i)
    > > ' now add the sub-menu items
    > > For j = 0 To UBound(Arr2(i))
    > > ' add the sub-menu item to the NewMenu
    > > If Arr2(i)(j) = "" Then
    > > MenuItm.BeginGroup = True
    > > Else
    > > Set MenuItm = NewMenu.Controls.Add
    > >
    > >
    > > With MenuItm
    > > If Arr0(i) = "Wor&kbook Tools" Then
    > > '.Type = Arr2(i)(j)
    > > '.ID = Arr4(i)(j)
    > > '.Style = Arr2(i)(j)
    > > .FaceId = Arr4(i)(j)
    > >
    > > Else
    > > ' add the caption
    > > .Caption = Arr2(i)(j)
    > > ' set it to display both icon and text
    > > .Style = msoButtonIconAndCaption
    > > ' define the macro associated with it
    > > .OnAction = Arr3(i)(j)
    > > ' define the icon to be used
    > > .FaceId = Arr4(i)(j)
    > > ' tag to define which element
    > > .tag = Arr5(i)(j)
    > > ' define its width to keep it uniform
    > > .Width = widths
    > > End If
    > > End With
    > >
    > > End If
    > > Next
    > >
    > > Next
    > > ' set the bar to be docked with the rest of the toolbars at the top
    > > CBAR.Position = msoBarTop
    > > ' make it visibile so it can be used
    > > CBAR.Visible = True
    > > ' don't know
    > > DoEvents
    > > Call TurnOffUpdates(False)
    > > End Sub

    >
    >
    >


  4. #4
    Bob Phillips
    Guest

    Re: Add standard excel button to custom toolbar menu

    So isn't that the commandbar you should use?

    --
    HTH

    Bob Phillips

    (remove nothere from email address if mailing direct)

    "Gixxer_J_97" <[email protected]> wrote in message
    news:[email protected]...
    > if you mean that if 'activeMenu' contains the string value "Toolbox", then
    > looking in to toolbars menu you will see 'Toolbox' there, then yes.
    >
    >
    > "Bob Phillips" wrote:
    >
    > > Isn't your menu called by whatever value activeMenu holds?
    > >
    > > --
    > > HTH
    > >
    > > Bob Phillips
    > >
    > > (remove nothere from email address if mailing direct)
    > >
    > > "Gixxer_J_97" <[email protected]> wrote in message
    > > news:[email protected]...
    > > > Hi all,
    > > >
    > > > i have the following code that creates my custom toolbar.
    > > > I would like to add some standard toolbar buttons to it, but am having
    > > > problems,
    > > >
    > > > The buttons i want to add are:
    > > >
    > > > Save
    > > > Print Preview
    > > > Print
    > > > Zoom
    > > > Center
    > > > Borders
    > > > Fill Color
    > > > Font Color
    > > >
    > > > I tried to record a macro adding the buttons i wanted, but it gave me

    code
    > > > like:
    > > >
    > > > Application.CommandBars("Custom Popup 942187").Controls.Add
    > > > Type:=msoControlSplitButtonPopup, ID:=401, before:=1
    > > >
    > > > and this never worked when the code was run again - i'm thinking that
    > > > "Custom Popup 942187" is a temporary ID for the target menu.
    > > >
    > > > I was thinking I could add these buttons to the "Workbook Tools" menu

    in
    > > the
    > > > With MenuItm
    > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > '.Type = Arr2(i)(j)
    > > > '.ID = Arr4(i)(j)
    > > > '.Style = Arr2(i)(j)
    > > > .FaceId = Arr4(i)(j)
    > > >
    > > > Else
    > > >
    > > > section - however when i try to set the .type and .id, i get a 'cannot

    set
    > > a
    > > > read only property' error.
    > > >
    > > > any thoughts?
    > > >
    > > > tia
    > > >
    > > > J
    > > >
    > > > Here is my code:
    > > >
    > > > Public Sub CreateToolbar()
    > > > ' create the custom toolbar for this application
    > > > ' Arr0 contains the names of the buttons created
    > > > ' Arr1 contains the tooltip text for the buttons in Arr0
    > > > ' Arr0 - Arr5 must be the same dimensions 1xY
    > > > ' Arr2 contains an array of arrays with the names of the submenu

    items
    > > > ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is

    the
    > > > ith element in
    > > > ' Arr2 and j is the jth element in the inner array.
    > > > ' Arr3 contains the names of the macros that the corresponding

    > > elements
    > > > in Arr2 will
    > > > ' refer to.
    > > > ' Arr4 contains the FaceId of each element in Arr2 (ie the button

    > > image)
    > > > ' Arr5 contains the tags of the buttons, used to determine which

    one
    > > was
    > > > called (in lieu of passing arguments)
    > > >
    > > > ' Pre-dimension all variables that will be used
    > > > Dim CBAR As CommandBar
    > > > Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    > > > SubMenuItm As CommandBarControl
    > > > Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As

    > > Variant,
    > > > Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    > > > Dim i As Integer, j As Integer, widths As Integer
    > > > Dim MenuName As String
    > > >
    > > > ' Define the menu name - flexibility to change the name only in

    one
    > > spot
    > > > ' activeMenu defined in CONSTANTS
    > > > MenuName = activeMenu
    > > > ' If the toolbar exists, delete it and create it new.
    > > > ' Used to prevent duplicates and erors
    > > > On Error Resume Next
    > > > Application.CommandBars(MenuName).Delete
    > > > On Error GoTo 0
    > > > ' Global name defined in 'Constants' - used for extensability in

    the
    > > > future
    > > > ' if further menus are needed (ie to turn on/off - delete the

    'active'
    > > > menu
    > > >
    > > > ' set the widths of the menus - keeps them uniform
    > > > widths = 100
    > > >
    > > > Call TurnOffUpdates(True)
    > > >
    > > > ' Define the arrays that will be used to create the custom toolbar
    > > > ' to add an element, add an entry in each of the arrays below
    > > > ' make sure that the inserted elements are all inserted in their
    > > > ' corresponding slots. ie to add a new menu at position 0
    > > > ' make sure that it is the first element in Arr0-Arr5
    > > > ' Arr0 - the Display name of the top level menu
    > > > ' Arr1 - the tooltip text of the top level menu
    > > > ' Arr2 - the Display name of the sub-menu items
    > > > ' Arr3 - the name of the macro that will be called
    > > > ' Arr4 - the integer value of the FaceId button that will be used
    > > > ' Arr5 - the tags of the button used to switch pages
    > > >
    > > > Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    > > > "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    > > > "Hel&p", "Wor&kbook Tools")
    > > > Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    > > > Management.", "Tools for Customer Management.", "Tools for Inventory
    > > > Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    > > > "Change the current document being viewed.", "Get Help!", "Tools for
    > > > formatting the workbook")
    > > >
    > > > Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    > > > "Check Order", "", "Reset Order", "", "Print..", "Publish Documents",

    "",
    > > > "View Order"), _
    > > > Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger

    > > Filters",
    > > > "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls",

    "View
    > > > Deposits"), _
    > > > Array("Add Customer", "Edit Customer", "", "Remove Customer",

    "",
    > > > "View Customers", "", "View Customer Orders", "View Sales Journal",

    "",
    > > "Fill
    > > > Sales Journal", "Fix Links"), _
    > > > Array("Add/Edit Product Line", "Remove Product Line", "",

    "Refresh
    > > > Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "",

    > > "View
    > > > Inventory", "View Inventory Costs"), _
    > > > Array("Print Documents..", "E-Mail Documents"), _
    > > > Array("Refresh Top Customers/Products", "", "View Summary"), _
    > > > Array("View Order", "View Withdrawls", "View Deposits", "View
    > > > Inventory", "View Inventory Costs", "View Customer Orders", "View

    Sales
    > > > Journal", "View Master Price List", "View Wholesale Price List", "View
    > > > Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    > > > Array("General Help", "Error Code Help"), _
    > > > Array(msoControlButton, msoControlButton, msoControlButton,
    > > > msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    > > > msoControlSplitButtonPopup, msoControlSplitButtonPopup))
    > > >
    > > > Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    > > > "CheckOrder", "", "ResetOrder", "", "PrintDocuments",

    "PublishDocuments",
    > > "",
    > > > "SwitchOut"), _
    > > > Array("MakeWithdrawl", "MakeDeposit", "",

    > > "resetLedgerFilterRanges",
    > > > "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    > > > "SwitchOut"), _
    > > > Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    > > > "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    > > > "FixLinks"), _
    > > > Array("AddProductLine", "RemoveProductLine", "",
    > > > "RefreshInventory2", "refreshInventoryCosts", "",

    > > "resetOrderFilterRanges",
    > > > "", "SwitchOut", "SwitchOut"), _
    > > > Array("PrintDocuments", "EmailDocuments"), _
    > > > Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    > > > Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > > "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",

    > > "SwitchOut",
    > > > "SwitchOut", "SwitchOut", "", "SetOptions"), _
    > > > Array("HelpGeneral", "HelpErrorCodes"))
    > > >
    > > > Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    > > > 2174), _
    > > > Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    > > > Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010,

    1100),
    > > _
    > > > Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    > > > Array(4, 24), _
    > > > Array(2010, 1, 2174), _
    > > > Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,

    2174,
    > > > 2174, 2174, 1, 2174), _
    > > > Array(215, 215), _
    > > > Array(3, 109, 4, 1733, 122, 203, 1691, 401))
    > > >
    > > > Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "",

    "Work
    > > > Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    > > > Order:A1"), _
    > > > Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger",

    "",
    > > > "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    > > > Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    > > > "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"),

    _
    > > > Array("Inventory", "Inventory", "", "Inventory:Menu",

    "Inventory",
    > > > "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    > > > Array("Accountant", "Accountant"), _
    > > > Array("Summary", "", "Summary:A1"), _
    > > > Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    > > > "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    > > > Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    > > > "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    > > > Array("Help", "Help"))
    > > >
    > > > ' create the actual toolbar - MenuName is the text at the top of

    the
    > > > ' menu when it is floating
    > > > Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)
    > > >
    > > > ' loop through the arrays to create the menus
    > > > ' outer for loop loops through Arr0 to create the top level names
    > > > ' inner for loop loops through Arr2 to create the sub-menu names
    > > > For i = 0 To UBound(Arr0)
    > > > ' add the NewMenu to the CommandBar
    > > > Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    > > > ' Create the display name for this top-level item
    > > > NewMenu.Caption = Arr0(i)
    > > > ' create the tooltip text for this top-level item
    > > > NewMenu.TooltipText = Arr1(i)
    > > > ' now add the sub-menu items
    > > > For j = 0 To UBound(Arr2(i))
    > > > ' add the sub-menu item to the NewMenu
    > > > If Arr2(i)(j) = "" Then
    > > > MenuItm.BeginGroup = True
    > > > Else
    > > > Set MenuItm = NewMenu.Controls.Add
    > > >
    > > >
    > > > With MenuItm
    > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > '.Type = Arr2(i)(j)
    > > > '.ID = Arr4(i)(j)
    > > > '.Style = Arr2(i)(j)
    > > > .FaceId = Arr4(i)(j)
    > > >
    > > > Else
    > > > ' add the caption
    > > > .Caption = Arr2(i)(j)
    > > > ' set it to display both icon and text
    > > > .Style = msoButtonIconAndCaption
    > > > ' define the macro associated with it
    > > > .OnAction = Arr3(i)(j)
    > > > ' define the icon to be used
    > > > .FaceId = Arr4(i)(j)
    > > > ' tag to define which element
    > > > .tag = Arr5(i)(j)
    > > > ' define its width to keep it uniform
    > > > .Width = widths
    > > > End If
    > > > End With
    > > >
    > > > End If
    > > > Next
    > > >
    > > > Next
    > > > ' set the bar to be docked with the rest of the toolbars at the

    top
    > > > CBAR.Position = msoBarTop
    > > > ' make it visibile so it can be used
    > > > CBAR.Visible = True
    > > > ' don't know
    > > > DoEvents
    > > > Call TurnOffUpdates(False)
    > > > End Sub

    > >
    > >
    > >




  5. #5
    Gixxer_J_97
    Guest

    Re: Add standard excel button to custom toolbar menu

    i am, the problem i am having is adding those standard excel buttons to the
    menu called "Workbook Tools"


    "Bob Phillips" wrote:

    > So isn't that the commandbar you should use?
    >
    > --
    > HTH
    >
    > Bob Phillips
    >
    > (remove nothere from email address if mailing direct)
    >
    > "Gixxer_J_97" <[email protected]> wrote in message
    > news:[email protected]...
    > > if you mean that if 'activeMenu' contains the string value "Toolbox", then
    > > looking in to toolbars menu you will see 'Toolbox' there, then yes.
    > >
    > >
    > > "Bob Phillips" wrote:
    > >
    > > > Isn't your menu called by whatever value activeMenu holds?
    > > >
    > > > --
    > > > HTH
    > > >
    > > > Bob Phillips
    > > >
    > > > (remove nothere from email address if mailing direct)
    > > >
    > > > "Gixxer_J_97" <[email protected]> wrote in message
    > > > news:[email protected]...
    > > > > Hi all,
    > > > >
    > > > > i have the following code that creates my custom toolbar.
    > > > > I would like to add some standard toolbar buttons to it, but am having
    > > > > problems,
    > > > >
    > > > > The buttons i want to add are:
    > > > >
    > > > > Save
    > > > > Print Preview
    > > > > Print
    > > > > Zoom
    > > > > Center
    > > > > Borders
    > > > > Fill Color
    > > > > Font Color
    > > > >
    > > > > I tried to record a macro adding the buttons i wanted, but it gave me

    > code
    > > > > like:
    > > > >
    > > > > Application.CommandBars("Custom Popup 942187").Controls.Add
    > > > > Type:=msoControlSplitButtonPopup, ID:=401, before:=1
    > > > >
    > > > > and this never worked when the code was run again - i'm thinking that
    > > > > "Custom Popup 942187" is a temporary ID for the target menu.
    > > > >
    > > > > I was thinking I could add these buttons to the "Workbook Tools" menu

    > in
    > > > the
    > > > > With MenuItm
    > > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > > '.Type = Arr2(i)(j)
    > > > > '.ID = Arr4(i)(j)
    > > > > '.Style = Arr2(i)(j)
    > > > > .FaceId = Arr4(i)(j)
    > > > >
    > > > > Else
    > > > >
    > > > > section - however when i try to set the .type and .id, i get a 'cannot

    > set
    > > > a
    > > > > read only property' error.
    > > > >
    > > > > any thoughts?
    > > > >
    > > > > tia
    > > > >
    > > > > J
    > > > >
    > > > > Here is my code:
    > > > >
    > > > > Public Sub CreateToolbar()
    > > > > ' create the custom toolbar for this application
    > > > > ' Arr0 contains the names of the buttons created
    > > > > ' Arr1 contains the tooltip text for the buttons in Arr0
    > > > > ' Arr0 - Arr5 must be the same dimensions 1xY
    > > > > ' Arr2 contains an array of arrays with the names of the submenu

    > items
    > > > > ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is

    > the
    > > > > ith element in
    > > > > ' Arr2 and j is the jth element in the inner array.
    > > > > ' Arr3 contains the names of the macros that the corresponding
    > > > elements
    > > > > in Arr2 will
    > > > > ' refer to.
    > > > > ' Arr4 contains the FaceId of each element in Arr2 (ie the button
    > > > image)
    > > > > ' Arr5 contains the tags of the buttons, used to determine which

    > one
    > > > was
    > > > > called (in lieu of passing arguments)
    > > > >
    > > > > ' Pre-dimension all variables that will be used
    > > > > Dim CBAR As CommandBar
    > > > > Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    > > > > SubMenuItm As CommandBarControl
    > > > > Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As
    > > > Variant,
    > > > > Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    > > > > Dim i As Integer, j As Integer, widths As Integer
    > > > > Dim MenuName As String
    > > > >
    > > > > ' Define the menu name - flexibility to change the name only in

    > one
    > > > spot
    > > > > ' activeMenu defined in CONSTANTS
    > > > > MenuName = activeMenu
    > > > > ' If the toolbar exists, delete it and create it new.
    > > > > ' Used to prevent duplicates and erors
    > > > > On Error Resume Next
    > > > > Application.CommandBars(MenuName).Delete
    > > > > On Error GoTo 0
    > > > > ' Global name defined in 'Constants' - used for extensability in

    > the
    > > > > future
    > > > > ' if further menus are needed (ie to turn on/off - delete the

    > 'active'
    > > > > menu
    > > > >
    > > > > ' set the widths of the menus - keeps them uniform
    > > > > widths = 100
    > > > >
    > > > > Call TurnOffUpdates(True)
    > > > >
    > > > > ' Define the arrays that will be used to create the custom toolbar
    > > > > ' to add an element, add an entry in each of the arrays below
    > > > > ' make sure that the inserted elements are all inserted in their
    > > > > ' corresponding slots. ie to add a new menu at position 0
    > > > > ' make sure that it is the first element in Arr0-Arr5
    > > > > ' Arr0 - the Display name of the top level menu
    > > > > ' Arr1 - the tooltip text of the top level menu
    > > > > ' Arr2 - the Display name of the sub-menu items
    > > > > ' Arr3 - the name of the macro that will be called
    > > > > ' Arr4 - the integer value of the FaceId button that will be used
    > > > > ' Arr5 - the tags of the button used to switch pages
    > > > >
    > > > > Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    > > > > "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    > > > > "Hel&p", "Wor&kbook Tools")
    > > > > Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    > > > > Management.", "Tools for Customer Management.", "Tools for Inventory
    > > > > Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    > > > > "Change the current document being viewed.", "Get Help!", "Tools for
    > > > > formatting the workbook")
    > > > >
    > > > > Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    > > > > "Check Order", "", "Reset Order", "", "Print..", "Publish Documents",

    > "",
    > > > > "View Order"), _
    > > > > Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger
    > > > Filters",
    > > > > "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls",

    > "View
    > > > > Deposits"), _
    > > > > Array("Add Customer", "Edit Customer", "", "Remove Customer",

    > "",
    > > > > "View Customers", "", "View Customer Orders", "View Sales Journal",

    > "",
    > > > "Fill
    > > > > Sales Journal", "Fix Links"), _
    > > > > Array("Add/Edit Product Line", "Remove Product Line", "",

    > "Refresh
    > > > > Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "",
    > > > "View
    > > > > Inventory", "View Inventory Costs"), _
    > > > > Array("Print Documents..", "E-Mail Documents"), _
    > > > > Array("Refresh Top Customers/Products", "", "View Summary"), _
    > > > > Array("View Order", "View Withdrawls", "View Deposits", "View
    > > > > Inventory", "View Inventory Costs", "View Customer Orders", "View

    > Sales
    > > > > Journal", "View Master Price List", "View Wholesale Price List", "View
    > > > > Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    > > > > Array("General Help", "Error Code Help"), _
    > > > > Array(msoControlButton, msoControlButton, msoControlButton,
    > > > > msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    > > > > msoControlSplitButtonPopup, msoControlSplitButtonPopup))
    > > > >
    > > > > Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    > > > > "CheckOrder", "", "ResetOrder", "", "PrintDocuments",

    > "PublishDocuments",
    > > > "",
    > > > > "SwitchOut"), _
    > > > > Array("MakeWithdrawl", "MakeDeposit", "",
    > > > "resetLedgerFilterRanges",
    > > > > "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    > > > > "SwitchOut"), _
    > > > > Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    > > > > "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    > > > > "FixLinks"), _
    > > > > Array("AddProductLine", "RemoveProductLine", "",
    > > > > "RefreshInventory2", "refreshInventoryCosts", "",
    > > > "resetOrderFilterRanges",
    > > > > "", "SwitchOut", "SwitchOut"), _
    > > > > Array("PrintDocuments", "EmailDocuments"), _
    > > > > Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    > > > > Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > > > "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > > "SwitchOut",
    > > > > "SwitchOut", "SwitchOut", "", "SetOptions"), _
    > > > > Array("HelpGeneral", "HelpErrorCodes"))
    > > > >
    > > > > Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    > > > > 2174), _
    > > > > Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    > > > > Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010,

    > 1100),
    > > > _
    > > > > Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    > > > > Array(4, 24), _
    > > > > Array(2010, 1, 2174), _
    > > > > Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,

    > 2174,
    > > > > 2174, 2174, 1, 2174), _
    > > > > Array(215, 215), _
    > > > > Array(3, 109, 4, 1733, 122, 203, 1691, 401))
    > > > >
    > > > > Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "",

    > "Work
    > > > > Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    > > > > Order:A1"), _
    > > > > Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger",

    > "",
    > > > > "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    > > > > Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    > > > > "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"),

    > _
    > > > > Array("Inventory", "Inventory", "", "Inventory:Menu",

    > "Inventory",
    > > > > "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    > > > > Array("Accountant", "Accountant"), _
    > > > > Array("Summary", "", "Summary:A1"), _
    > > > > Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    > > > > "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    > > > > Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    > > > > "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    > > > > Array("Help", "Help"))
    > > > >
    > > > > ' create the actual toolbar - MenuName is the text at the top of

    > the
    > > > > ' menu when it is floating
    > > > > Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)
    > > > >
    > > > > ' loop through the arrays to create the menus
    > > > > ' outer for loop loops through Arr0 to create the top level names
    > > > > ' inner for loop loops through Arr2 to create the sub-menu names
    > > > > For i = 0 To UBound(Arr0)
    > > > > ' add the NewMenu to the CommandBar
    > > > > Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    > > > > ' Create the display name for this top-level item
    > > > > NewMenu.Caption = Arr0(i)
    > > > > ' create the tooltip text for this top-level item
    > > > > NewMenu.TooltipText = Arr1(i)
    > > > > ' now add the sub-menu items
    > > > > For j = 0 To UBound(Arr2(i))
    > > > > ' add the sub-menu item to the NewMenu
    > > > > If Arr2(i)(j) = "" Then
    > > > > MenuItm.BeginGroup = True
    > > > > Else
    > > > > Set MenuItm = NewMenu.Controls.Add
    > > > >
    > > > >
    > > > > With MenuItm
    > > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > > '.Type = Arr2(i)(j)
    > > > > '.ID = Arr4(i)(j)
    > > > > '.Style = Arr2(i)(j)
    > > > > .FaceId = Arr4(i)(j)
    > > > >
    > > > > Else
    > > > > ' add the caption
    > > > > .Caption = Arr2(i)(j)
    > > > > ' set it to display both icon and text
    > > > > .Style = msoButtonIconAndCaption
    > > > > ' define the macro associated with it
    > > > > .OnAction = Arr3(i)(j)
    > > > > ' define the icon to be used
    > > > > .FaceId = Arr4(i)(j)
    > > > > ' tag to define which element
    > > > > .tag = Arr5(i)(j)
    > > > > ' define its width to keep it uniform
    > > > > .Width = widths
    > > > > End If
    > > > > End With
    > > > >
    > > > > End If
    > > > > Next
    > > > >
    > > > > Next
    > > > > ' set the bar to be docked with the rest of the toolbars at the

    > top


  6. #6
    Gixxer_J_97
    Guest

    Re: Add standard excel button to custom toolbar menu

    if i use this:
    Application.CommandBars("Toolbox").Controls.Add
    Type:=msoControlSplitButtonPopup, ID:=401, before:=1

    it does work, however it adds the button to the top level of the toolbar,
    not to the drop-down menu "Workbook Tools"


    "Gixxer_J_97" wrote:

    > i am, the problem i am having is adding those standard excel buttons to the
    > menu called "Workbook Tools"
    >
    >
    > "Bob Phillips" wrote:
    >
    > > So isn't that the commandbar you should use?
    > >
    > > --
    > > HTH
    > >
    > > Bob Phillips
    > >
    > > (remove nothere from email address if mailing direct)
    > >
    > > "Gixxer_J_97" <[email protected]> wrote in message
    > > news:[email protected]...
    > > > if you mean that if 'activeMenu' contains the string value "Toolbox", then
    > > > looking in to toolbars menu you will see 'Toolbox' there, then yes.
    > > >
    > > >
    > > > "Bob Phillips" wrote:
    > > >
    > > > > Isn't your menu called by whatever value activeMenu holds?
    > > > >
    > > > > --
    > > > > HTH
    > > > >
    > > > > Bob Phillips
    > > > >
    > > > > (remove nothere from email address if mailing direct)
    > > > >
    > > > > "Gixxer_J_97" <[email protected]> wrote in message
    > > > > news:[email protected]...
    > > > > > Hi all,
    > > > > >
    > > > > > i have the following code that creates my custom toolbar.
    > > > > > I would like to add some standard toolbar buttons to it, but am having
    > > > > > problems,
    > > > > >
    > > > > > The buttons i want to add are:
    > > > > >
    > > > > > Save
    > > > > > Print Preview
    > > > > > Print
    > > > > > Zoom
    > > > > > Center
    > > > > > Borders
    > > > > > Fill Color
    > > > > > Font Color
    > > > > >
    > > > > > I tried to record a macro adding the buttons i wanted, but it gave me

    > > code
    > > > > > like:
    > > > > >
    > > > > > Application.CommandBars("Custom Popup 942187").Controls.Add
    > > > > > Type:=msoControlSplitButtonPopup, ID:=401, before:=1
    > > > > >
    > > > > > and this never worked when the code was run again - i'm thinking that
    > > > > > "Custom Popup 942187" is a temporary ID for the target menu.
    > > > > >
    > > > > > I was thinking I could add these buttons to the "Workbook Tools" menu

    > > in
    > > > > the
    > > > > > With MenuItm
    > > > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > > > '.Type = Arr2(i)(j)
    > > > > > '.ID = Arr4(i)(j)
    > > > > > '.Style = Arr2(i)(j)
    > > > > > .FaceId = Arr4(i)(j)
    > > > > >
    > > > > > Else
    > > > > >
    > > > > > section - however when i try to set the .type and .id, i get a 'cannot

    > > set
    > > > > a
    > > > > > read only property' error.
    > > > > >
    > > > > > any thoughts?
    > > > > >
    > > > > > tia
    > > > > >
    > > > > > J
    > > > > >
    > > > > > Here is my code:
    > > > > >
    > > > > > Public Sub CreateToolbar()
    > > > > > ' create the custom toolbar for this application
    > > > > > ' Arr0 contains the names of the buttons created
    > > > > > ' Arr1 contains the tooltip text for the buttons in Arr0
    > > > > > ' Arr0 - Arr5 must be the same dimensions 1xY
    > > > > > ' Arr2 contains an array of arrays with the names of the submenu

    > > items
    > > > > > ' Arr2 - Arr5 are accessed by Arr#(i)(j), where # is 2-4 and i is

    > > the
    > > > > > ith element in
    > > > > > ' Arr2 and j is the jth element in the inner array.
    > > > > > ' Arr3 contains the names of the macros that the corresponding
    > > > > elements
    > > > > > in Arr2 will
    > > > > > ' refer to.
    > > > > > ' Arr4 contains the FaceId of each element in Arr2 (ie the button
    > > > > image)
    > > > > > ' Arr5 contains the tags of the buttons, used to determine which

    > > one
    > > > > was
    > > > > > called (in lieu of passing arguments)
    > > > > >
    > > > > > ' Pre-dimension all variables that will be used
    > > > > > Dim CBAR As CommandBar
    > > > > > Dim NewMenu As CommandBarControl, MenuItm As CommandBarButton,
    > > > > > SubMenuItm As CommandBarControl
    > > > > > Dim Arr0 As Variant, Arr1 As Variant, Arr2 As Variant, Arr3 As
    > > > > Variant,
    > > > > > Arr4 As Variant, Arr5 As Variant, Arr6 As Variant
    > > > > > Dim i As Integer, j As Integer, widths As Integer
    > > > > > Dim MenuName As String
    > > > > >
    > > > > > ' Define the menu name - flexibility to change the name only in

    > > one
    > > > > spot
    > > > > > ' activeMenu defined in CONSTANTS
    > > > > > MenuName = activeMenu
    > > > > > ' If the toolbar exists, delete it and create it new.
    > > > > > ' Used to prevent duplicates and erors
    > > > > > On Error Resume Next
    > > > > > Application.CommandBars(MenuName).Delete
    > > > > > On Error GoTo 0
    > > > > > ' Global name defined in 'Constants' - used for extensability in

    > > the
    > > > > > future
    > > > > > ' if further menus are needed (ie to turn on/off - delete the

    > > 'active'
    > > > > > menu
    > > > > >
    > > > > > ' set the widths of the menus - keeps them uniform
    > > > > > widths = 100
    > > > > >
    > > > > > Call TurnOffUpdates(True)
    > > > > >
    > > > > > ' Define the arrays that will be used to create the custom toolbar
    > > > > > ' to add an element, add an entry in each of the arrays below
    > > > > > ' make sure that the inserted elements are all inserted in their
    > > > > > ' corresponding slots. ie to add a new menu at position 0
    > > > > > ' make sure that it is the first element in Arr0-Arr5
    > > > > > ' Arr0 - the Display name of the top level menu
    > > > > > ' Arr1 - the tooltip text of the top level menu
    > > > > > ' Arr2 - the Display name of the sub-menu items
    > > > > > ' Arr3 - the name of the macro that will be called
    > > > > > ' Arr4 - the integer value of the FaceId button that will be used
    > > > > > ' Arr5 - the tags of the button used to switch pages
    > > > > >
    > > > > > Arr0 = Array("O&rder Tools", "&Ledger Tools", "&Customer Tools",
    > > > > > "I&nventory Tools", "&Accountant Tools", "&Summary", "Chan&ge Sheet",
    > > > > > "Hel&p", "Wor&kbook Tools")
    > > > > > Arr1 = Array("Tools for Order Management.", "Tools for Ledger
    > > > > > Management.", "Tools for Customer Management.", "Tools for Inventory
    > > > > > Management.", "Tools for Accountant Documents.", "Summary worksheet.",
    > > > > > "Change the current document being viewed.", "Get Help!", "Tools for
    > > > > > formatting the workbook")
    > > > > >
    > > > > > Arr2 = Array(Array("Save Order", "Open Order", "Cancel Order", "",
    > > > > > "Check Order", "", "Reset Order", "", "Print..", "Publish Documents",

    > > "",
    > > > > > "View Order"), _
    > > > > > Array("Make Withdrawl", "Make Deposit", "", "Reset Ledger
    > > > > Filters",
    > > > > > "", "Check Overdue Invoices", "", "Print...", "", "View Withdrawls",

    > > "View
    > > > > > Deposits"), _
    > > > > > Array("Add Customer", "Edit Customer", "", "Remove Customer",

    > > "",
    > > > > > "View Customers", "", "View Customer Orders", "View Sales Journal",

    > > "",
    > > > > "Fill
    > > > > > Sales Journal", "Fix Links"), _
    > > > > > Array("Add/Edit Product Line", "Remove Product Line", "",

    > > "Refresh
    > > > > > Inventory", "Refresh Inventory Costs", "", "Reset Filter Ranges", "",
    > > > > "View
    > > > > > Inventory", "View Inventory Costs"), _
    > > > > > Array("Print Documents..", "E-Mail Documents"), _
    > > > > > Array("Refresh Top Customers/Products", "", "View Summary"), _
    > > > > > Array("View Order", "View Withdrawls", "View Deposits", "View
    > > > > > Inventory", "View Inventory Costs", "View Customer Orders", "View

    > > Sales
    > > > > > Journal", "View Master Price List", "View Wholesale Price List", "View
    > > > > > Customers", "View Summary", "View Data Sheet", "", "View Options"), _
    > > > > > Array("General Help", "Error Code Help"), _
    > > > > > Array(msoControlButton, msoControlButton, msoControlButton,
    > > > > > msoControlComboBox, msoControlButton, msoControlSplitButtonPopup,
    > > > > > msoControlSplitButtonPopup, msoControlSplitButtonPopup))
    > > > > >
    > > > > > Arr3 = Array(Array("SaveOrder", "OpenOrder", "CancelOrder", "",
    > > > > > "CheckOrder", "", "ResetOrder", "", "PrintDocuments",

    > > "PublishDocuments",
    > > > > "",
    > > > > > "SwitchOut"), _
    > > > > > Array("MakeWithdrawl", "MakeDeposit", "",
    > > > > "resetLedgerFilterRanges",
    > > > > > "", "CheckOverdueInvoice", "", "PrintDocuments", "", "SwitchOut",
    > > > > > "SwitchOut"), _
    > > > > > Array("AddCustomer", "EditCustomer", "", "RemoveCustomer", "",
    > > > > > "SwitchOut", "", "SwitchOut", "SwitchOut", "", "FillSalesJournal",
    > > > > > "FixLinks"), _
    > > > > > Array("AddProductLine", "RemoveProductLine", "",
    > > > > > "RefreshInventory2", "refreshInventoryCosts", "",
    > > > > "resetOrderFilterRanges",
    > > > > > "", "SwitchOut", "SwitchOut"), _
    > > > > > Array("PrintDocuments", "EmailDocuments"), _
    > > > > > Array("refreshSummaryPivotTables", "", "SwitchOut"), _
    > > > > > Array("SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > > > > "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut", "SwitchOut",
    > > > > "SwitchOut",
    > > > > > "SwitchOut", "SwitchOut", "", "SetOptions"), _
    > > > > > Array("HelpGeneral", "HelpErrorCodes"))
    > > > > >
    > > > > > Arr4 = Array(Array(271, 270, 1592, 1, 1100, 1, 2010, 1, 4, 610, 1,
    > > > > > 2174), _
    > > > > > Array(368, 369, 1, 2010, 1, 1100, 1, 4, 1, 2174, 2174), _
    > > > > > Array(3199, 3203, 1, 1671, 1, 2174, 1, 2174, 2174, 1, 2010,

    > > 1100),
    > > > > _
    > > > > > Array(743, 1019, 1, 2010, 2010, 1, 2010, 1, 2174, 2174), _
    > > > > > Array(4, 24), _
    > > > > > Array(2010, 1, 2174), _
    > > > > > Array(2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174, 2174,

    > > 2174,
    > > > > > 2174, 2174, 1, 2174), _
    > > > > > Array(215, 215), _
    > > > > > Array(3, 109, 4, 1733, 122, 203, 1691, 401))
    > > > > >
    > > > > > Arr5 = Array(Array("Work Order", "Work Order", "Work Order", "",

    > > "Work
    > > > > > Order", "", "Work Order", "", "Work Order", "Work Order", "", "Work
    > > > > > Order:A1"), _
    > > > > > Array("Withdrawls", "Deposits", "", "Ledger", "", "Ledger",

    > > "",
    > > > > > "Ledger", "", "Withdrawls:B3", "Deposits:M3"), _
    > > > > > Array("New", "Edit", "", "Customers", "", "Customers:A1", "",
    > > > > > "Customer Orders:A1", "Sales Journal:A1", "", "Fill SJ", "Fix Links"),

    > > _
    > > > > > Array("Inventory", "Inventory", "", "Inventory:Menu",

    > > "Inventory",
    > > > > > "", "Inventory", "", "Inventory:A1", "Inventory Costs:A1"), _
    > > > > > Array("Accountant", "Accountant"), _
    > > > > > Array("Summary", "", "Summary:A1"), _
    > > > > > Array("Work Order:A1", "Withdrawls:B3", "Deposits:B3",
    > > > > > "Inventory:A1", "Inventory Costs:A1", "Customer Orders:A1", "Sales
    > > > > > Journal:A1", "Master Price List:A1", "Wholesale Price List:A1",
    > > > > > "Customers:A2", "Summary:A1", "Data:A1", "", ""), _
    > > > > > Array("Help", "Help"))
    > > > > >
    > > > > > ' create the actual toolbar - MenuName is the text at the top of

    > > the
    > > > > > ' menu when it is floating
    > > > > > Set CBAR = Application.CommandBars.Add(MenuName, temporary:=False)
    > > > > >
    > > > > > ' loop through the arrays to create the menus
    > > > > > ' outer for loop loops through Arr0 to create the top level names
    > > > > > ' inner for loop loops through Arr2 to create the sub-menu names
    > > > > > For i = 0 To UBound(Arr0)
    > > > > > ' add the NewMenu to the CommandBar
    > > > > > Set NewMenu = CBAR.Controls.Add(msoControlPopup)
    > > > > > ' Create the display name for this top-level item
    > > > > > NewMenu.Caption = Arr0(i)
    > > > > > ' create the tooltip text for this top-level item
    > > > > > NewMenu.TooltipText = Arr1(i)
    > > > > > ' now add the sub-menu items
    > > > > > For j = 0 To UBound(Arr2(i))
    > > > > > ' add the sub-menu item to the NewMenu
    > > > > > If Arr2(i)(j) = "" Then
    > > > > > MenuItm.BeginGroup = True
    > > > > > Else
    > > > > > Set MenuItm = NewMenu.Controls.Add
    > > > > >
    > > > > >
    > > > > > With MenuItm
    > > > > > If Arr0(i) = "Wor&kbook Tools" Then
    > > > > > '.Type = Arr2(i)(j)
    > > > > > '.ID = Arr4(i)(j)
    > > > > > '.Style = Arr2(i)(j)
    > > > > > .FaceId = Arr4(i)(j)
    > > > > >
    > > > > > Else
    > > > > > ' add the caption
    > > > > > .Caption = Arr2(i)(j)
    > > > > > ' set it to display both icon and text
    > > > > > .Style = msoButtonIconAndCaption
    > > > > > ' define the macro associated with it
    > > > > > .OnAction = Arr3(i)(j)
    > > > > > ' define the icon to be used
    > > > > > .FaceId = Arr4(i)(j)
    > > > > > ' tag to define which element
    > > > > > .tag = Arr5(i)(j)
    > > > > > ' define its width to keep it uniform
    > > > > > .Width = widths
    > > > > > End If
    > > > > > End With
    > > > > >


+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1