how can I disable a control in the ribbon at run time

I

irvy

As an example, in Excel 2007, I have 5 buttons on the ribbon. When I press a
button, it runs code and then it is meant to disable the button. Do you know
how I could do this? Any help would be appreciated.
 
I

Irvy

Hey Ron,
Thanks for the quick reply. I have checked out your examples. What
they do is actually make the controls invisible. I still want to see
the control but want it disabled. Is that possible?

irvy
 
R

Ron de Bruin

Hi Irvy

You can use getEnabled for a button but not for a group

If you change this in the RibbonX of my example workbook
Hide-Display-Group-Control
You see that it Enable/disable the button instead of hide/unhide it

<button id="customButton5" label="Caption 5" size="large" onAction="Macro5"
imageMso="AccountMenu" getEnabled="GetVisible" tag="MyPersonalControl" />
 
I

Irvy

Hi Ron,

I am still having some problems. I am just testing out the process
before I proceed with my actual code but I am getting this error:

"Runtime 91. Object variable or With block variable not set"

Can you tell me why I am getting this error?

Here is my xml code:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI onLoad="RibbonOnLoad" xmlns="http://schemas.microsoft.com/
office/2006/01/customui">
<ribbon>
<tabs>

<tab idMso="TabHome" >

<group id="grp1" label="Group1" tag="MyPersonalGroup" >
<button id="btn1" label="button1" size="large"
onAction="disableBtn1" getEnabled="GetEnabled"
imageMso="DirectRepliesTo" />
<button id="btn2" label="button2" size="large"
onAction="disableBtn2" getEnabled="GetEnabled" imageMso="AccountMenu" /</group>

</tab>

</tabs>
</ribbon>
</customUI>

and here is my vba code:

Option Explicit
Dim Rib As IRibbonUI

'Callback for customUI.onLoad
Sub RibbonOnLoad(ribbon As IRibbonUI)
Set Rib = ribbon
End Sub

'Callback for btn1 getEnabled
Sub GetEnabled(control As IRibbonControl, ByRef returnedVal)
returnedVal = True
End Sub

'Callback for btn1 onAction
Sub disableBtn1(control As IRibbonControl)
Dim Rib As IRibbonUI
Rib.InvalidateControl ("btn1")
End Sub

'Callback for btn2 onAction
Sub disableBtn2(control As IRibbonControl)
Dim Rib As IRibbonUI
Rib.InvalidateControl ("btn2")
End Sub
 

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