RibbonX-Workshop - 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.