Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mittels RibbonX Zellfarbe ändern

Forumthread: Mittels RibbonX Zellfarbe ändern

Mittels RibbonX Zellfarbe ändern
12.08.2024 16:27:41
David
Guten Tag,

ich möchte mittels eigener erstellter Icons mit Ribbon X die Zellfarben einzelner Zellen ändern. Dafür hab ich mir mit Ribbon X eine neue Gruppe (Füllfarben) in den Tab Start eingefügt. Die entsprechenden Farben werden auch angezeigt in Tab Start. Allerdings besteht mein Problem darin, dass ich die Icons nicht mit einem Makro verbinden kann. Wo liegt mein Fehler?

In RibbonX hab ich die Farben wie folgt definiert:

customUI xmlns=http://schemas.microsoft.com/office/2009/07/customui
ribbon
tabs
tab idMso="TabHome"
group id="owncolors" label="Füllfarben" insertBeforeQ="Format"
button id="Button1" size="normal" image="light_blue" onAction="Fuellfarbe_l_blue"
button id="Button2" size="normal" image="blue" onAction="Fuellfarbe_blue"
button id="Button3" size="normal" image="dark_blue" onAction="Fuellfarbe_d_blue"
button id="Button4" size="normal" image="light_green" onAction="Fuellfarbe_l_green"
button id="Button5" size="normal" image="green" onAction="Fuellfarbe_green"
button id="Button6" size="normal" image="dark_green" onAction="Fuellfarbe_d_green"
group
tab
tabs
ribbon


Mein Makro im Excel sieht wie folgt aus:

'---------------------------------------------------------------------------------------------------------------------------------------------------------------

'Farben neu-----------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_l_blue(control As IRibbonControl) ' hellblau
Selection.Interior.ColorIndex = 37
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_blue(control As IRibbonControl) ' blau
Selection.Interior.ColorIndex = 5
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_d_blue(control As IRibbonControl) ' dunkel blau
Selection.Interior.ColorIndex = 11
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_l_green(control As IRibbonControl) ' hellgrün
Selection.Interior.ColorIndex = 35
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_green(control As IRibbonControl) ' grün
Selection.Interior.ColorIndex = 4
End Sub
'---------------------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_d_green(control As IRibbonControl) ' dunkelgrün
Selection.Interior.ColorIndex = 51
End Sub



Besten Dank
Gruss David
Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
12.08.2024 17:04:18
Alwin Weisangler
Hallo David,

wenn ich deine Frage richtig verstanden habe, soll im Ribbon-Button das Icon gewechselt werden. Im Button geht das nicht. Man muss sich eine Krücke bauen.
Es gibt die Möglichkeit via GetVisible = True/False den gewünschten Button zu sichtbar/unsichtbar zu stellen.
Anbei mal ein Beispiel (Zelle A1: Gelb/Rot).
https://www.herber.de/bbs/user/171590.xlsm

Gruß Uwe
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
12.08.2024 18:31:56
volti
Hallo Uwe,
mal 'ne Frage.

Wenn ich in Unterlagen mit Hinweisen zu Ribbon herumblättere, wird die getImage-Funktion wie auch die getImageMso-Funktion als Attribut für Button angegeben.
Somit sollte eigentlich der Wechsel von Bildern auf Buttons funktionieren.

Implantiere ich getImageMso im Ribbon gibt mir Validate des CostumUI dieses Attribut als nicht unterstützt heraus.

Implantiere ich getImage im Ribbon scheint alles ok, nur wechselt die VBA-Funktion (sie wird auch eindeutig durchlaufen) leider nicht die Bilder bzw. zeigt erst gar keins an, sondern bleibt ohne Fehler wirkungslos. Hatte mal Deine Datei dafür benutzt und entsprechend angepasst.

Ist Dir dieses Verhalten vielleicht bekannt? Weißt Du da mehr?

<button id="Button1" label="Farbe Gelb" getImage="getImage_Button1" size="large" onAction="onAction_Button1" />

Wird durchlaufen:
Public Sub getImage_Button1(control As IRibbonControl, ByRef image)

If Tabelle1.Cells(1, 1) = "Gelb" Then
image = "Farbpicker_x0020_gelb"
Else
image = "Farbpicker_x0020_rot"
End If
End Sub


Gruß
Karl-Heinz
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 08:12:24
David
Hallo Alwin,

Besten Dank für deine Antwort. Vielleicht habe ich mich etwas unglücklich ausgedrückt. Ich möchte mit Ribbon X eine neue Gruppe in der Menüleiste einfügen, mit der ich Zellen in einer bestimmten Farbe füllen kann. Wie du aus dem Bild im Anhang entnehmen kannst, konnte ich die Icons mit den Farben erstellen, allerdings kann ich die Icons nicht mit den Makros ansteuern und ich weiss nicht wo der Fehler ist. Des Weiteren möchte ich das die neue Gruppe mit den Füllfarben neben der Gruppe Format angezeigt wird. Das funktioniert auch nicht so richtig.

Userbild

Besten Dank für die Hilfe

Gruss
David


Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:18:03
volti
Hallo David,

die Position der Gruppe wird durch die Position im Ribbon-XML festgelegt. Vielleicht solltest Du mal Deine (Beispiel)-Datei hier hochladen. Da kann man besser gucken, was Du gemacht hast.

"Icons nicht mit den Makros ansteuern" verstehe ich nicht wirklich. Im ersten Beitrag sind doch die einzelnen Sub's dargestellt, die durch Klick auf die Buttons angesteuert werden und jetzt die gewünschte Funktionalität ausführen können.

Wobei ich persönlich bei vielen Objekten meistens eine Sammel-Sub erstelle und die einzelnen Buttonklicks dann über die ID rausfiltere.

Im Ribbon alle Button mit je passender ID auf eine Sub lenken.....
<button id="blue" size="normal" image="light_blue" onAction="SetzeFuellfarbe" />

Sub SetzeFuellfarbe(control As IRibbonControl)

With Selection.Interior
Select Case control.id
Case blue: .ColorIndex = 11
Case red: .ColorIndex = 12
Case Black: .ColorIndex = 13
' usw.
End Select
End With
End Sub


Wobei man die ID ja sogar noch anders gestalten könnte: id="F11" usw. Kürzer geht es dann nicht mehr :-)

Selection.Interior.ColorIndex = Val(MID$(control.id,2))

Gruß
Karl-Heinz

Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:26:43
David
Hallo volti,

Besten Dank für deine Nachricht. Ich habe den Fehler gefunden. Bei mir fehlte im Makro das (control As IRibbonControl) jetzt funktioniert das so wie gewünscht. Danke nochmals für die Hilfe.

Noch eine Frage, vielleicht kannst du mir dabei helfen. ich möchte mein benutzerdefiniertes RibbonX im customui.xml in der Personal.xlsb einfügen, damit die Icons in jeder Excel-Arbeitsmappe (auch von Kollegen) beim öffnen enthalten sind.

Ist das möglich? Ich hab die icons bereits in die xlsb eingefügt, allerdings werden sie beim öffnen nicht angezeigt.

Beste Grüsse
David
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:31:01
Oberschlumpf
hä David???

in deinem ersten Beitrag steht (unter anderem):

Mein Makro im Excel sieht wie folgt aus:

'---------------------------------------------------------------------------------------------------------------------------------------------------------------

'Farben neu-----------------------------------------------------------------------------------------------------------------------------------------------------
Sub Fuellfarbe_l_blue(control As IRibbonControl) ' hellblau
Selection.Interior.ColorIndex = 37
End Sub


Da ist doch das "control As IRibbonControl" enthalten, obwohl du es als fehlend bezeichnest...versteh ich nich...bitte erklär mal

Ciao
Thorsten
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 16:59:49
mumpel
Hallo!

Du kannst alles in ein Add-In (xlam) packen und dieses über den Add-In-Manager einbinden.

Gruß, René
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:46:23
David
Hallo Thorsten,

da war ich wohl zu schnell beim schreiben. Sorry für das Missverständnis. Das Problem lag im UIEditor. Dort fehlte bei onAction das "Personal.xlsb!"

Sorry übrigens für die falsche Darstellung des Codes vom Editor. Der Code wird allerdings nicht richtig dargestellt, wenn ich ihn hier im Forum mit dem Code-Button erstelle.

customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
ribbon
tabs
tab idMso="TabHome"
group id="owncolors" label="Füllfarben" insertAfterQ="Add-Ins"
button id="Button1" size="normal" image="light_blue" onAction="Personal.xlsb!Fuellfarbe_l_blue" />
button id="Button2" size="normal" image="blue" onAction="Personal.xlsb!Fuellfarbe_blue" />
button id="Button3" size="normal" image="dark_blue" onAction="Personal.xlsb!Fuellfarbe_d_blue" />
button id="Button4" size="normal" image="light_green" onAction="Personal.xlsb!Fuellfarbe_l_green" />
button id="Button5" size="normal" image="green" onAction="Personal.xlsb!Fuellfarbe_green" />
button id="Button6" size="normal" image="dark_green" onAction="Personal.xlsb!Fuellfarbe_d_green" />
button id="Button7" size="normal" image="light_red" onAction="Personal.xlsb!Fuellfarbe_l_red" />
button id="Button8" size="normal" image="red" onAction="Personal.xlsb!Fuellfarbe_red" />
button id="Button9" size="normal" image="dark_red" onAction="Personal.xlsb!Fuellfarbe_d_red" />
button id="Button10" size="normal" image="light_grey" onAction="Personal.xlsb!Fuellfarbe_l_grey" />
button id="Button11" size="normal" image="grey" onAction="Personal.xlsb!Fuellfarbe_grey" />
button id="Button12" size="normal" image="dark_grey" onAction="Personal.xlsb!Fuellfarbe_d_grey" />
button id="Button13" size="normal" image="light_yellow" onAction="Personal.xlsb!Fuellfarbe_l_yellow"/>
button id="Button14" size="normal" image="yellow" onAction="Personal.xlsb!Fuellfarbe_yellow" />
button id="Button15" size="normal" image="gold" onAction="Personal.xlsb!Fuellfarbe_gold" />
button id="Button16" size="normal" image="lavendel" onAction="Personal.xlsb!Fuellfarbe_lavendel"/>
button id="Button17" size="normal" image="magenta" onAction="Personal.xlsb!Fuellfarbe_magenta" />
button id="Button18" size="normal" image="pink" onAction="Personal.xlsb!Fuellfarbe_pink" />
button id="Button19" size="normal" image="light_orange" onAction="Personal.xlsb!Fuellfarbe_l_orange"/>
button id="Button20" size="normal" image="orange" onAction="Personal.xlsb!Fuellfarbe_orange" />
button id="Button21" size="normal" image="cyan" onAction="Personal.xlsb!Fuellfarbe_cyan" />
button id="Button22" size="normal" image="brown" onAction="Personal.xlsb!Fuellfarbe_brown" />
button id="Button23" size="normal" image="white" onAction="Personal.xlsb!Fuellfarbe_white" />
button id="Button24" size="normal" image="black" onAction="Personal.xlsb!Fuellfarbe_black" />
/group
/tab
/tabs
/ribbon
/customUI

Besten Dank

Gruss
David
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:58:37
Oberschlumpf
Hi David,

das Problem mit "falsche Darstellung des Codes" ist bekannt, ist ein Problem der Forumssoftware.

Aber wenn ich deine vielen, vielen Einzelmakros sehe, bin ich ja mal neugierig, ob du auch meine andere Antwort beachtest, in der nur ein einziges Makro notwendig ist.

Ciao
Thorsten
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 11:04:58
David
Hi Thorsten,

deine Nachricht mit dem einzigen Makro hab ich natürlich gesehen und bin schon dabei dies umzusetzen. Dauert bei mir immer ein wenig länger, da ich nicht der geborene Programmierer bin :D. Möchte auch immer die Codes verstehen, die die Forums-Mitglieder hier ergänzen.

Besten Dank

Gruss
David
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 11:14:05
volti
Hallo David,

ein einziges Makro für die Klickumsetzung hatte ich ja auch vorgeschlagen, allerdings nur mit der ID. Die ist ja frei und muss nicht zwangsläufig "Button..." heißen.

Mit der Personal.xlsb kenne ich mich nicht aus. Habe ich noch nie verwendet.

Für die Darstellung von < und > musst Du diese Zeichen durch den HTML-Text & lt; und & gt; (Leerzeichen raus) ersetzen. Das ist in den meisten Foren so, denn die Software kann ja nicht wissen, ob < als Tag-Bestandteil umgesetzt oder nur angezeigt werden soll.

Gruß
KH
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 10:26:24
Oberschlumpf
Hi David,

du musst das control.tag verwenden, und verwende nur ein einziges Makro.

Änder deine Zeilen im Custom UI Editor um wie folgt:

button id="Button1" tag="37" size="normal" image="light_blue" onAction="sbColors"
button id="Button2" tag="5" size="normal" image="blue" onAction="sbColors"
...usw

37 bzw 5 ist der jeweilige .Interior.ColorIndex-Eintrag.

Das nur einzig notwendige Makro sieht dann so aus:


Public Sub sbColors(control As IRibbonControl)

If Workbooks.Count = 0 Then Exit Sub

Selection.Interior.ColorIndex = control.Tag

End Sub


Bei mir funktionierts.
Bei dir auch?
Nein? Dann zeig bitte per Upload keine Bilder, sondern bitte eine Excel-Bsp-Datei, in der dein eigenes Ribbon enthalten ist.

Zu deinem anderen Wunsch "...das die neue Gruppe mit den Füllfarben neben der Gruppe Format angezeigt wird..." kenn ich leider keine Antwort, aber ich weiß, dass auch das möglich ist ;-)

Ciao
Thorsten
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 12:22:10
Alwin Weisangler
Hallo David.

um deine eigene Gruppe im Tab "Home" (Start) vor den Formatvorlagen zu bekommen braucht es insertBevoreMso
beispielhaft so:


<group id="Group1" label="Eigene Aktionen" insertBeforeMso="GroupStyles">


Gruß Uwe
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
12.08.2024 20:07:47
Alwin Weisangler
Hallo Karl-Heinz,

das funktioniert nur mit imageMSO. Warum man da lediglich den String aus Ribbon zu VBA übergibt und dann kein Objekt zurückgegeben werden kann - keine Ahnung.
Ich habe das auch mal mit den bereits von mir im Ribbon eigebetteten Grafiken getestet. Da wäre ja der String denkbar aber die werden trotzdem nicht akzeptiert(nur keine Fehlermeldung).
https://www.herber.de/bbs/user/171593.xlsm

Gruß Uwe
Anzeige
AW: Mittels RibbonX Zellfarbe ändern
13.08.2024 09:55:46
volti
Danke Uwe,
für Deine Ausführung.

Das getImageMso funktioniert dann ja doch. Habe mich wohl durch die Validate-Meldung (Attribut ist nicht definiert) bremsen lassen, und es gar nicht weiter ausprobiert.

Gruß
KH
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige