SUMMARY
The process of programmatically changing menus in Microsoft Excel 97 is
different than earlier versions of Microsoft Excel. The biggest change in
Microsoft Excel 97 is that toolbars, menu bars, and shortcut menus are
considered one type of object (called a command bar). Most Visual Basic for
Applications macros that you create in earlier versions of Microsoft Excel
that customize menus and toolbars work in Microsoft Excel 97. However, some
macros may fail. In this case, modify the macro code to work with the new
object type.
This article provides several examples that illustrate how to customize
menu bars, menus, and toolbars in Microsoft Excel 97.
NOTE: Many of the sample macros in this article use the ID number for a
particular control as an argument for the Add method. You must know
the ID number if you want to restore built-in menus that you deleted.
For additional information, please see the following article in the
Microsoft Knowledge Base:
159466
XL97: List of ID Numbers for Built-In Command Bar Controls
MORE INFORMATION
Microsoft provides programming examples for illustration only, without warranty either
expressed or implied, including, but not limited to, the implied warranties of
merchantability and/or fitness for a particular purpose. This article assumes
that you are familiar with the programming language being demonstrated and the
tools used to create and debug procedures. Microsoft support professionals can
help explain the functionality of a particular procedure, but they will not
modify these examples to provide added functionality or construct procedures to
meet your specific needs. If you have limited programming experience, you may
want to contact a Microsoft Certified Partner or the Microsoft fee-based
consulting line at (800) 936-5200. For more information about Microsoft Certified
Partners, please visit the following Microsoft Web site:
For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site:
Deleting an Entire Menu Bar
The following macro disables the Worksheet menu bar. After you run the
following macro, the Worksheet menu bar is not displayed when a worksheet
is active.
Sub Disable_Menu_Bar()
CommandBars("Worksheet Menu Bar").Enabled = False
End Sub
The following macro re-enables the Worksheet menu bar so that it is displayed
when a worksheet is active.
Sub Enable_Menu_Bar()
CommandBars("Worksheet Menu Bar").Enabled = True
End Sub
Deleting and Restoring a Menu on a Menu Bar
The following macro deletes the Help menu from the Worksheet menu bar.
Sub Delete_Help_Menu()
CommandBars("Worksheet Menu Bar").Controls("Help").Delete
End Sub
The following macro restores the Help menu to the Worksheet menu bar.
Sub Restore_Help_Menu()
set x = CommandBars("Worksheet Menu Bar")
x.Reset
End Sub
NOTE: This macro resets the entire Worksheet menu bar back to its default
settings. When you run this macro, all customizations that you made to the
Worksheet menu bar are lost.
Deleting and Restoring a Menu Command on a Menu
The following macro deletes the Contents And Index menu command on the Help
menu.
Sub Delete_Menu_Item()
Set x = CommandBars("Worksheet Menu Bar").Controls("Help")
x.Controls("Contents and Index").Delete
End Sub
The following macro restores the Contents And Index menu command on the
Help menu.
Sub Restore_Menu_Item()
Set x = CommandBars("Worksheet Menu Bar").Controls("Help")
x.Controls.Add Type:=msoControlButton, Id:=983, before:=2
End Sub
Deleting and Restoring a Submenu on a Menu
The following macro deletes the "Microsoft on the Web" submenu on the Help
menu.
Sub Delete_Submenu()
Set x = CommandBars("Worksheet Menu Bar").Controls("Help")
x.Controls("Microsoft on the Web").Delete
End Sub
The following macro restores the "Microsoft on the Web " submenu on the
Help menu.
Sub Restore_Submenu()
Set x = CommandBars("Worksheet Menu Bar").Controls("Help")
x.Controls.Add Type:=msoControlPopup, Id:=30222, before:=4
x.Reset
End Sub
Deleting and Restoring a Menu Command on a Submenu
The following macro deletes the Protect Sheet menu command on the
Protection submenu (on the Tools menu).
Sub Delete_Item_on_Submenu()
Set x = CommandBars("Tools").Controls("Protection")
x.Controls("Protect Sheet...").Delete
End Sub
The following macro restores the Protect Sheet menu command on the
Protection submenu (on the Tools menu).
Sub Restore_Item_on_Submenu()
Set x = CommandBars("Tools").Controls("Protection")
x.Controls.Add Type:=msoControlButton, Id:=893, before:=1
End Sub
Deleting and Restoring a Menu on a Toolbar
The following macro deletes the Draw menu on the Drawing toolbar.
Sub Delete_Menu_on_Toolbar()
CommandBars("Drawing").Controls("Draw").Delete
End Sub
The following macro restores the Draw menu on the Drawing toolbar.
Sub Restore_Menu_on_Toolbar()
Set x = CommandBars("Drawing")
x.Controls.Add Type:=msoControlPopup, Id:=30013, before:=1
x.Reset
End Sub
Deleting and Restoring a Menu Item on a Shortcut Menu
The following macro deletes the Insert Comment menu command on the
worksheet cell shortcut menu.
Sub Delete_Shortcut_menu_item()
CommandBars("Cell").Controls("Insert Comment").Delete
End Sub
The following macro restores the Insert Comment menu command on the
worksheet cell shortcut menu and restores the separator line that the
previous macro deleted.
Sub Restore_Shortcut_menu_item()
Set x = CommandBars("cell")
x.Controls.Add Type:=msoControlButton, Id:=2031, before:=8
Application.ShortcutMenus(xlWorksheetCell).MenuItems.Add _
Caption:="-", before:=9
End Sub