RibbonX-Workshop - Schaltflächen

In diesem Teil wollen wir einen Button erstellen. Hierfür wird folgender RibbonX-Code verwendet. Der Beispielcode erstellt zwei Schaltflächen. Erstellen Sie eine neue Arbeitsmappe und speichern Sie diese mit der Endung *.xlsm. Fügen Sie ein neues Modul ein, in welches Sie die folgenden Makros kopieren.



Option Private Module
Public objRibbon As IRibbonUI

Public Sub onload(ribbon As IRibbonUI)
    Set objRibbon = ribbon
End Sub

Sub Button1_OnAction(control As IRibbonControl)
  If ThisWorkbook.Sheets("Tabelle1").Columns("A:A").EntireColumn.Hidden = False Then
     ThisWorkbook.Sheets("Tabelle1").Columns("A:A").EntireColumn.Hidden = True
     MsgBox "Spalte A wurde ausgeblendet", vbOKOnly + vbInformation, "Hinweis"
  Else
     ThisWorkbook.Sheets("Tabelle1").Columns("A:A").EntireColumn.Hidden = False
     MsgBox "Spalte A wurde eingeblendet", vbOKOnly + vbInformation, "Hinweis"
  End If
End Sub

Sub Button2_getLabel(control As IRibbonControl, ByRef label)
    If ThisWorkbook.Sheets("Tabelle1").Columns("B:B").EntireColumn.Hidden = False Then
       label = "Spalte B eingeblendet"
    Else
       label = "Spalte B ausgeblendet"
    End If
End Sub

Sub Button2_OnAction(control As IRibbonControl)
    If ThisWorkbook.Sheets("Tabelle1").Columns("B:B").EntireColumn.Hidden = False Then
       ThisWorkbook.Sheets("Tabelle1").Columns("B:B").EntireColumn.Hidden = True
       objRibbon.Invalidate
       MsgBox "Spalte B wurde ausgeblendet", vbOKOnly + vbInformation, "Hinweis"
    Else
       ThisWorkbook.Sheets("Tabelle1").Columns("B:B").EntireColumn.Hidden = False
       objRibbon.Invalidate
       MsgBox "Spalte B wurde eingeblendet", vbOKOnly + vbInformation, "Hinweis"
    End If
End Sub
Anschließend beenden Sie Excel und Öffnen die Datei mit dem CustomUI-Editor. Fügen Sie in das Codefenster den folgenden Code ein.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="onload">
<ribbon startFromScratch="true">
   <tabs>
      <tab id="tab01" label="Schaltflächen">
         <group id="grp01" label="Spalte A" >
             <button id="tgb01" label="Spalte A" imageMso="ExchangeFolder"
                     onAction="Button1_onAction" size="large"/>
         </group>
         <group id="grp02" label="Spalte B" >
             <button id="tgb02" getLabel="Button2_getLabel" imageMso="ExchangeFolder"
                     onAction="Button2_onAction" size="large"/>
         </group>
      </tab>
   </tabs>
</ribbon>
</customUI>


Speichern Sie die Änderungen und schließen den Editor. Öffnen Sie die Datei mit Excel. Jetzt sollte ein Ribbon mit zwei Schaltflächen erscheinen. Die erste blendet Spalte A im wechsel ein oder aus. Die Schaltflächenbeschriftung ändert sich nicht. Schaltfläche 2 blendet Spalte B im Wechsel ein oder aus, wobei die Schaltflächenbeschriftung den jeweiligen Zustand anzeigt.

Schaltfläche 1:
Diese Schaltfläche hat eine feste Beschriftung.

Schaltfläche 2:
Diese Schaltfläche bezieht ihre Beschriftung aus dem Makro "Button2_getLabel".

Beschreibung:

id: Legt die control.ID fest.
onAction: Gibt das zu startende Makro an
label: Beschriftung der Schaltfläche (für Schaltfläche 1)
getLabel: Gibt das Makro an, welches die Beschriftung anhand bestimmter Einstellungen einträgt. Wichtig: Es ist immer nur eines möglich. Endweder label oder getLabel.
imageMso: Gibt das Icon an, welches genutzt werden soll.
size: gibt die Größe der Schaltfläche an. large=groß. normal=klein