RibbonX-Workshop - Menü

In diesem Teil beschäftigen wir uns mit dem Menü. In einem Menü können Schaltflächen, Umschaltflächen und Checkboxen und Trennstriche (Menüseparator) eingebaut werden.

Legen Sie jetzt eine neue Arbeitsmappe an und speichern diese als *.xlsm. Fügen Sie nun ein neues Modul und in dieses den folgenden Code ein.

Option Private Module
Public objRibbon As IRibbonUI

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

Sub Button01_onAction(control As IRibbonControl)
  Range("A2").Value = Range("A2").Value + 1
  MsgBox "Sie haben die Menüschaltfläche 1 gedrückt", vbInformation + vbOKOnly, "Hinweis"
End Sub

Sub Button02_onAction(control As IRibbonControl)
  Range("B2").Value = Range("B2").Value + 1
  MsgBox "Sie haben die Menüschaltfläche 2 gedrückt", vbInformation + vbOKOnly, "Hinweis"
End Sub

Sub Checkbox01_onAction(control As IRibbonControl, pressed As Boolean)
  If pressed = True Then
     MsgBox "Checkbox 1 aktiviert", vbInformation + vbOKOnly, "Hinweis"
     Range("C2").Value = 1
  Else
     MsgBox "Checkbox 1 deaktiviert", vbInformation + vbOKOnly
     Range("C2").Value = 0
  End If
End Sub

Sub Checkbox01_getPressed(control As IRibbonControl, ByRef returnValue)
    returnValue = ThisWorkbook.Sheets("Tabelle1").Range("C2")
End Sub

Sub ToggleButton01_onAction(control As IRibbonControl, pressed As Boolean)
  If pressed = True Then
     MsgBox "Umschaltlfäche 1 aktiviert", vbInformation + vbOKOnly, "Hinweis"
     Range("D2").Value = 1
 Else
     MsgBox "Umschaltfläche 1 deaktiviert", vbInformation + vbOKOnly
     Range("D2").Value = 0
 End If
End Sub

Sub ToggleButton01_getPressed(control As IRibbonControl, ByRef returnValue)
    returnValue = ThisWorkbook.Sheets("Tabelle1").Range("D2")
End Sub

Sub Checkbox02_onAction(control As IRibbonControl, pressed As Boolean)
  If pressed = True Then
     MsgBox "Checkbox 2 aktiviert", vbInformation + vbOKOnly, "Hinweis"
     Range("E2").Value = 1
  Else
     MsgBox "Checkbox 2 deaktiviert", vbInformation + vbOKOnly
     Range("E2").Value = 0
  End If
End Sub

Sub Checkbox02_getPressed(control As IRibbonControl, ByRef returnValue)
    returnValue = ThisWorkbook.Sheets("Tabelle1").Range("E2")
End Sub

Sub ToggleButton02_onAction(control As IRibbonControl, pressed As Boolean)
  If pressed = True Then
     MsgBox "Umschaltlfäche 2 aktiviert", vbInformation + vbOKOnly, "Hinweis"
     Range("F2").Value = 1
  Else
     MsgBox "Umschaltfläche 2 deaktiviert", vbInformation + vbOKOnly
     Range("F2").Value = 0
  End If
End Sub

Sub ToggleButton02_getPressed(control As IRibbonControl, ByRef returnValue)
    returnValue = ThisWorkbook.Sheets("Tabelle1").Range("F2")
End Sub



Speichern Sie die Änderungen und schließen Sie die Arbeitsmappe. Öffnen Sie selbige jetzt mit dem CustomUI-Editor. Fügen Sie dann den folgenden Code in das Codefenster ein.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="onLoad" >
  <ribbon startFromScratch="true">
    <tabs>
      <tab id="tab01" label="Menü">
        <group id="grp01" label="Menü">
          <menu id="mnu0" size="large" itemSize="normal" label="Menü" imageMso="FileSaveAsExcelXlsxMacro">
              <button id="menBtn01" label="Menüschaltfläche 1" onAction="Button01_OnAction" />
            <menuSeparator id="menSpt01" />
              <toggleButton id="menTgb01" label="Umschaltfläche 1" OnAction = "ToggleButton01_OnAction" getPressed="ToggleButton01_getPressed"/>
            <menuSeparator id="menSpt02" />
              <menu id="men02" itemSize="normal" label="Untermenü 1">
                 <button id="menBtn02" label="Menüschaltfläche 2" onAction="Button02_OnAction" />
               <menuSeparator id="menSpt03" />
                 <toggleButton id="menTgb02" label="Umschaltfläche 2" onAction="ToggleButton02_OnAction" getPressed="ToggleButton02_getPressed" />
               <menuSeparator id="menSpt04" />
                 <checkBox id="menCbx02" label="Checkbox 2" onAction="Checkbox02_OnAction" getPressed="Checkbox02_getPressed"/>
              </menu>
              <menuSeparator id="menSpt05" />
                 <checkBox id="menCbx01" label="Checkbox 1" onAction="Checkbox01_OnAction" getPressed="Checkbox01_getPressed" />
          </menu></group></tab>
    </tabs>
  </ribbon>
</customUI>


Speichern sie die Änderung und öffnen Sie die Arbeitsmappe. Jetzt wird ein neues Ribbon mit einem Menü angezeigt. Die Werte für die Checkboxen und Umschaltflächen (jeweils 2 Stück) werden in der Tabelle gespeichert. Idealer Weise sollten Sie die Werte in den DocumentProperties speichern. Gehen Sie hierzu so vor, wie Sie es in Teil "Die Umschaltfläche" gelernt haben. Für jede Checkbox und jede Umschaltfläche benötigen Sie einen eigenen Eintrag in den DocumentProperties.