Hallo Hubertus,
Du hast Dich leider nicht an meine und Rene's Empfehlung gehalten...
Außerdem hast Du auch den zweiten Button mit der Aktiv-Schaltemöglichkeit versehen, ohne die entsprechenden Variablen but1 und but2 beim Öffnen der Mappe auf true zu setzen.
Dadurch waren beide Button inaktiv und eine Einschaltmöglichkeit nicht mehr gegeben.
Die Invalidate-Funktion muss nach jeder but1/2 -Änderung gestartet werden, damit die Callbacks wieder ausgeführt werden und nicht nur beim Starten der Mappe.
Nachfolgend mal Dein Code für eine Toggleschaltung angepasst (Vorschlag).
Ich empfehle Dir auch, spätestens beim Wirkbetrieb sprechende Callbackfunktionsnamen zu verwenden. Makro1 und Makro2 fällt sicher nicht darunter.
Hinweis: Wenn beim Aufbau Deiner weiteren Programmierung Deines Tools ein Fehler auftreten sollte, ist auch die Variable gobjRibbon kaputt und kein Zugriff auf die Button mehr möglich. Dann muss ds Tool neu gestartet werden.
Code:
Option Private Module
Option Explicit
Public gobjRibbon As IRibbonUI
Public but1 As Boolean
Public but2 As Boolean
Public Sub OnRibbonLoad(Ribbon As IRibbonUI)
Set gobjRibbon = Ribbon
End Sub
'Callback for but1 getEnabled
Sub GetEnabled_but1(control As IRibbonControl, ByRef returnedVal)
returnedVal = but1
End Sub
'Callback for but2 getEnabled
Sub GetEnabled_but2(control As IRibbonControl, ByRef returnedVal)
returnedVal = but2
End Sub
Sub Makro1(control As IRibbonControl)
but1 = False
but2 = True
gobjRibbon.Invalidate
End Sub
Sub Makro2(control As IRibbonControl)
but1 = True
but2 = False
gobjRibbon.Invalidate
End Sub
Private Sub Workbook_Open()
but1 = True
but2 = True
End Sub
_________
viele Grüße
Karl-Heinz