ACC97: Only One Menu Bar Can Be Visible at a Time Using CodeID: Q167663
|
When you create a new menu bar in Visual Basic for Applications code, or
when you set the Visible property of an existing menu bar to True, the
current menu bar disappears. However, if you create a new menu bar or view
an existing menu bar by pointing to Toolbars on the View menu, and then
clicking Customize, the current menu bar remains visible along with the new
one.
This article assumes that you are familiar with Visual Basic for
Applications and with creating Microsoft Access applications using the
programming tools provided with Microsoft Access. For more information
about Visual Basic for Applications, please refer to the "Building
Applications with Microsoft Access 97" manual.
You can set the Visible property of any existing menu bar in code to make
it visible, but this method only allows you to display one menu bar at a
time. When you set the Visible property of any menu bar to True, Microsoft
Access automatically sets the Visible property of all other menu bars to
False.
For example, assume your database contains two menu bars: MenuBar1 and
MenuBar2. If MenuBar1 is displayed on your screen, the following line of
code automatically sets the Visible property of MenuBar1 to False:
CommandBars("MenuBar2").Visible = True
If MenuBar2 is displayed on your screen, the following line of code
automatically sets the Visible property of MenuBar2 to False:
CommandBars("MenuBar1").Visible = True
In order to display more than one menu bar at a time, you must create your
new menu bar or view an existing one through the user interface as follows:
This behavior is by design.
Public strCurrentMenuName As String
'*******************************************************************
' This procedure creates a new menu bar and makes it visible.
'*******************************************************************
Sub CreateMenuBar(strNewMenuName as String)
Dim cmdNewMenu As CommandBar
' Set Global strCurrentMenuName to existing menu for use later when
' toggling.
strCurrentMenuName = CommandBars.ActiveMenuBar.Name
' Create a new menu bar.
Set cmdNewMenu = Application.CommandBars.Add(strNewMenuName, _
msoBarFloating, True, False)
With cmdNewMenu
' Set Protection property to no protection so users can customize
' it.
.Protection = msoBarNoProtection
' Show new menu.
.Visible = True
End With
End Sub
CreateMenuBar "ExampleMenu"A new floating menu bar is displayed on the screen, and the original menu bar is hidden from view.
Run-time error '5':
Invalid procedure call or argument
CommandBars(strCurrentMenuName).Visible = TrueNote that the original menu bar reappears, and your custom menu bar disappears.
For more information about menu bars, search the Help Index for "menu
bars," or ask the Microsoft Access 97 Office Assistant.
For more information about the Protection property of command bars, search
the Help Index for "Protection property."
For more information about creating command bars in code, please see the
following article in the Microsoft Knowledge Base:
Q159692 ACC97: How to Create Command Bars Using Visual Basic CodeFor more information on how to programmatically add and remove items on command bars, please see the following article(s) in the Microsoft Knowledge Base:
Q172300 ACC97: Command Bar Wizard Available on MSL
Additional query words: Cmdbar menubar commandbar display show hide invisible disappear appear
Keywords : kbui PgmObj UifMenub
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbprb
Last Reviewed: August 5, 1999