AW: Code auf mehrere Button anwenden
10.05.2024 15:15:05
Alwin Weisangler
Hallo,
bin mal einen ganz anderen Weg gegangen. So was kann man besser im Ribbon erschlagen.
ins Ribbon:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="rx_onLoad">
<ribbon startFromScratch="false">
<tabs>
<tab id="tab01" label="Dein Menü" insertBeforeMso="TabHome">
<group id="grpCBX_2021" label="Spaltenauswaahl" >
<checkBox id="cbx1" getLabel="Checkbox1_getLabel"
onAction="Checkbox1_onAction" />
<checkBox id="cbx2" getLabel="Checkbox2_getLabel"
onAction="Checkbox2_onAction" />
<checkBox id="cbx3" getLabel="Checkbox3_getLabel"
onAction="Checkbox3_onAction" />
<checkBox id="cbx4" getLabel="Checkbox4_getLabel"
onAction="Checkbox4_onAction" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
in ein allgemienes Modul:
Option Private Module
Public objRibbon As IRibbonUI, aktiv As Boolean
Public Sub rx_onload(ribbon As IRibbonUI)
Set objRibbon = ribbon
End Sub
' Spalte B
Public Sub Checkbox1_onAction(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
aktiv = True
TT 2
objRibbon.Invalidate
Else
aktiv = False
delTT 2
objRibbon.Invalidate
End If
End Sub
Public Sub Checkbox1_getLabel(control As IRibbonControl, ByRef label)
If aktiv = True Then
label = "Spalte B höchster Wert aktiv"
Else
label = "Spalte B höchster Wert inaktiv"
End If
End Sub
' Spalte E
Public Sub Checkbox2_onAction(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
aktiv = True
TT 5
objRibbon.Invalidate
Else
aktiv = False
delTT 5
objRibbon.Invalidate
End If
End Sub
Public Sub Checkbox2_getLabel(control As IRibbonControl, ByRef label)
If aktiv = True Then
label = "Spalte E höchster Wert aktiv"
Else
label = "Spalte E höchster Wert inaktiv"
End If
End Sub
' Spalte G
Public Sub Checkbox3_onAction(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
aktiv = True
TT 7
objRibbon.Invalidate
Else
aktiv = False
delTT 7
objRibbon.Invalidate
End If
End Sub
Public Sub Checkbox3_getLabel(control As IRibbonControl, ByRef label)
If aktiv = True Then
label = "Spalte G höchster Wert aktiv"
Else
label = "Spalte G höchster Wert inaktiv"
End If
End Sub
' Spalte I
Public Sub Checkbox4_onAction(control As IRibbonControl, pressed As Boolean)
If pressed = True Then
aktiv = True
TT 9
objRibbon.Invalidate
Else
aktiv = False
delTT 9
objRibbon.Invalidate
End If
End Sub
Public Sub Checkbox4_getLabel(control As IRibbonControl, ByRef label)
If aktiv = True Then
label = "Spalte I höchster Wert aktiv"
Else
label = "Spalte I höchster Wert inaktiv"
End If
End Sub
Sub TT(Spa As Long)
Dim MaxZeile As Long, MinZeile As Long
MaxZeile = Application.Match(Application.Max(Columns(Spa)), Columns(Spa), 0)
Columns(Spa).Interior.ColorIndex = xlNone
Cells(MaxZeile, Spa).Interior.ColorIndex = 36
End Sub
Sub delTT(Spa As Long)
Columns(Spa).Interior.ColorIndex = xlNone
End Sub
https://www.herber.de/bbs/user/169385.xlsm
Gruß Uwe