Custom commandbar (1 works, 1 doesn't)

D

Dale Fye

HELP. Maybe someone else can see what I'm missing. I've got two custom
(popup) command bars in my application. These are commandbars are created in
a forms Initialize event, using the following code (I've removed a bunch of
the other options to test this, and it still is not working).

Sub FileMenu()

Dim CmdBar As Office.CommandBar
Dim CmdBarSub As CommandBarControl
Dim ctrl As Office.CommandBarControl

On Error Resume Next
Application.CommandBars("MyFile").Delete
On Error GoTo FileMenuError

Set CmdBar = Application.CommandBars.Add(Name:="MyFile", _
Position:=msoBarPopup, _
temporary:=True)
'Create the File Print menu options
Set CmdBarSub = CmdBar.Controls.Add(Type:=msoControlPopup)
With CmdBarSub
.Caption = "Print"
End With
Set ctrl = CmdBarSub.Controls.Add(Type:=msoControlButton)
With ctrl
.Caption = "Preview before print"
.OnAction = "FilePrintPreview"
.Tag = "FilePrintPreview"
'.State = msoButtonUp
End With

FileMenuExit:
Debug.Print "File menu built, no errors!"
Exit Sub

FileMenuError:
Debug.Print "File menu error!"

End Sub

Sub OptionsMenu()

Dim CmdBar As Office.CommandBar
Dim ctrl As Office.CommandBarControl

On Error Resume Next
Application.CommandBars("MyOptions").Delete
On Error GoTo 0

Set CmdBar = Application.CommandBars.Add(Name:="MyOptions", _
Position:=msoBarPopup, _
temporary:=True)

Set ctrl = CmdBar.Controls.Add(Type:=msoControlButton)
With ctrl
.Caption = "Use default POC data"
.OnAction = "Use_POC_Defaults"
.Tag = "Use_POC_Defaults"
End With

Set ctrl = CmdBar.Controls.Add(Type:=msoControlButton)
With ctrl
.Caption = "Display warnings!"
.OnAction = "Display_warnings"
.Tag = "Display_warnings"
End With

Exit Sub

OptionsMenuError:
Debug.Print Err.Number, Err.Description

End Sub

Both of these initialize properly and display properly when the user clicks
on one of two labels on my userform. However, the Options menu is working
properly and the File menu is not. They are displayed using the following
lines of code when a user clicks on one of two labels (that works properly).
I realize that the

Application.Commandbars("MyFile").ShowPopup
Application.Commandbars("MyOptions").ShowPopup

In the Options menu, when I click on the Use_POC_Defaults or
Display_warnings items, it toggles the state of that option correctly (see
code below), and the checkmark in front of the commandbarbutton is either
checked or unchecked the next time I open that commandbar. However, in the
File menu, when I click on "Print", and then select "Preview before print"
the FilePrintPreview subroutine fires, it changes the state value of that
command bar item (I've tested this by printing the state value before and
after that line of code), but does not visibly show the check mark in front
of the "Preview before print" item.

I've exported the text to VB, and imported it into another workbook to test
it there, and both menus function identically in the new workbook as well.

Public Sub FilePrintPreview()

Dim ctrl As CommandBarButton

'Changes the buttons state from Down->Up or Up->Down
Set ctrl = Application.CommandBars.FindControl(Tag:="FilePrintPreview")
ctrl.State = IIf(ctrl.State = msoButtonDown, msoButtonUp, msoButtonDown)

End Sub

Public Sub Use_POC_Defaults()

Dim ctrl As CommandBarButton

'Changes the buttons state from Down->Up or Up->Down
Set ctrl = Application.CommandBars.FindControl(Tag:="Use_POC_Defaults")
ctrl.State = IIf(ctrl.State = msoButtonDown, msoButtonUp, msoButtonDown)

End Sub
Public Sub Display_warnings()

Dim ctrl As CommandBarButton

'Changes the buttons state from Down->Up or Up->Down
Set ctrl = Application.CommandBars.FindControl(Tag:="Display_warnings")
ctrl.State = IIf(ctrl.State = msoButtonDown, msoButtonUp, msoButtonDown)

End Sub
 
D

Dave D-C

Dale,
When I put the following into a standard module, they work.
I get error 400 when they are in the userform module.
Public Sub FilePrintPreview()
Public Sub Use_POC_Defaults()
Public Sub Display_warnings()
D-C Dave
 
D

Dale Fye

Dave,

As it sits now, they are in a standard code module. When you say they work,
do you mean that when you run the FileMenu sub and then pop it up, that the
Print Preview command button gets checked? If so, I don't know what is
going on. What version are you using? I'm in 2003.

Dale
 
D

Dave D-C

Dale,
The module placement was a shot in the dark -- didn't pan out.
The PP command button does not get checked, the other two
(1st level) buttons do get checked. I added a Textbox and code
which just confirms your problem.
I'm XL97/WIN98. Good luck, Dave

If ctrl.State = msoButtonDown Then
UserForm1.TextBox1 = "down"
ElseIf ctrl.State = msoButtonUp Then
UserForm1.TextBox1 = "up"
Else
UserForm1.TextBox1 = "other"
End If
 
D

Dave D-C

1st level -- that's probably the key, right?
Buttons on CommandBars (msoBarPopup's) work (show state), but
for some reason buttons on CommandBarControls (msoControlPopup's)
on CommandBars don't work.

Which isn't helpful, is it?

Dave D-C said:
The PP command button does not get checked, the other two
(1st level) buttons do get checked.
 
D

Dale Fye

Had not thought of that.

So maybe I just create a Print menu and when they click on the Print on the
top level menu, I popup the print menu as a separate menu. I'll give it a
try and see what happens.

--
Don''''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.
 
D

Dale Fye

Dave,

That did it. It obviously is not as elegant as the other method, but it
solves the immediate problem. Thanks for seeing what I couldn't.

Dale
--
Don''''t forget to rate the post if it was helpful!

email address is invalid
Please reply to newsgroup only.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top