RibbonX-Workshop - Checkbox

In diesem Teil wollen wir eine Checkbox erstellen. Hierfür wird folgender RibbonX-Code verwendet. Der Beispielcode erstellt eine Checkbox.

Das folgende Beispiel erstellt eine Checkbox. Mit dieser wird geprüft, ob die aktive Tabelle geschützt ist.

Erstellen Sie eine neue Arbeitsmappe. Fügen Sie den folgenden VBA-Code in den Codebereich einer jeden Tabelle ein. Dieser Code ist notwendig, um den Schutzzustand beim Aktivieren des Tabellenblattes auslesen zu können.

Private Sub worksheet_activate()
    On Error Resume Next
    objRibbon.Invalidate
End Sub


Fügen Sie jetzt ein neues Modul ein und in dieses die folgenden Makros.

Option Private Module
Public objRibbon As IRibbonUI

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

Public Sub Checkbox_onAction(control As IRibbonControl, pressed As Boolean)
    If pressed = True Then
       ActiveSheet.Protect
       objRibbon.Invalidate
    Else
       ActiveSheet.Unprotect
       objRibbon.Invalidate
    End If
End Sub

Public Sub Checkbox_getLabel(control As IRibbonControl, ByRef label)
    If ActiveSheet.ProtectContents = False Then
       label = "Tabelle freigegeben"
    Else
       label = "Tabelle geschützt"
    End If
End Sub

Public Sub Checkbox_getPressed(control As IRibbonControl, ByRef returnValue)
    If ActiveSheet.ProtectContents = True Then returnValue = 1
End Sub


Anschließend speichern Sie die Arbeitsmappe und schließen sie. Öffnen Sie jetzt die Arbeitsmappe mit dem CustomUI-Editor und fügen folgenden Code in das Codefenster ein.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="rx_onLoad">
   <ribbon startFromScratch="true">
     <tabs>
        <tab id="tab01" label="Checkbox">
          <group id="grpCBX" label="Checkbox" >
             <checkBox id="cbx" getLabel="Checkbox_getLabel" onAction="Checkbox_onAction" getPressed="Checkbox_getPressed" />
          </group>
        </tab>
     </tabs>
   </ribbon>
</customUI		 


Speichern Sie nun die Änderung und schließen den Editor. Öffnen Sie nun die Arbeitsmappe und testen Sie die Makros. Beim Öffnen wird nun geprüft, ob das aktive Tabellenblatt geschützt ist und setzt den Wert "returnValue" bei geschützter Tabelle auf 1. Bei 1 ist die Checkbox aktiv (Haken gesetzt. Beim Wechsel in eine andere Tabelle wird die Prüfung (objRibbon.Invalidate) erneut durchgeführt.

Beschreibung:

id: Gibt die control.ID an
getPressed: Ruft beim Öffnen der Arbeitsmappe das Makro auf, welches den definierten Zustand abfragt.
onAction: Das aufzurufende Makro.
getlabel: Das Makro, welches die Beschriftung des Labels an den definierten Zustand anpasst.