Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mein erstes Ribbon = Fehler

mein erstes Ribbon = Fehler
26.06.2016 07:25:19
Oberschlumpf
Moin Leute!
Ich bin dabei, mein erstes Ribbon zu erstellen.
Mit Hilfe des Custom UI Editors wird in meiner Excel-Datei in der Menüzeile als letzten Eintrag auch "Einfaerben" angezeigt.
Auch, wenn ich diesen Menüpunkt auswähle, werden, wie gewünscht, 5 farbliche Quadrate angezeigt.
Das Ziel ist, wenn ich eines dieser Quadrate anklicke, soll die aktuell markierte Zelle, oder auch der markierte Zellbereich mit eben genau der angeklickten Farbe eingefärbt werden. (der Hintergrund der Zelle, nicht der Text)
Es erscheint aber beim Anklicken eines der Quadrate diese Fehlermeldung:
"Argument ist nicht optional"
Es öffnet sich leider nicht automatisch der VBE, und es wird auch keine Codezeile gelb eingefärbt.
Hat von euch jemand eine Idee, was ich falsch mache?
Hier die Datei:
https://www.herber.de/bbs/user/106530.xlsm
Noch eine Frage:
Der Menüpunkt heißt zur Zeit "Einfaerben".
Kann ich das auch umbennen in "Einfärben" oder in "Farben setzen"?
Oder funktioniert dann auch alles nicht mehr, wegen Umlaute und/oder Leerzeichen im Menünamen?
Vielen Dank schon mal!
Ciao
Thorsten

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: was ist mit "else"? siehe Herber ..
26.06.2016 08:20:49
Oberschlumpf
auch der Zusatz
Case Else
liColor = 0
führt nicht zum Erfolg.
Gruß
Thorsten

AW: mein erstes Ribbon = Fehler
26.06.2016 08:22:43
Christian
hallo Thorsten
bei RibbonX kann man der OnAction-Eigenschaft keine Parameter übergeben.
Das musst du im VBA-Code umsetzen:
Bsp:

Public Sub sbClrGreen(control As IRibbonControl)
Call sbColors(10)
End Sub
Public Sub sbColors(lngClr As Long)
Selection.Interior.ColorIndex = lngClr
End Sub
und im XML entsprechend:
...
...button id="tgb05" label="gruen" imageMso="AppointmentColor3" onAction = "sbClrGreen" size=" _
large"...
...
zu 2:
Umlaute funktionieren, es gibt ja auch den Standard-Eintrag "Überprüfen". Ebenso Leerzeichen.
Gruß
Christian

Anzeige
AW: mein erstes Ribbon = Fehler
26.06.2016 08:41:09
Oberschlumpf
Hi Christian!
Yeahhhh! Dank deiner "Aufklärung" funktioniert nun alles! Danke schön :-)
Ich wollte es vermeiden, für jede Farbe eine eigene Sub schreiben zu müssen. Aus dem Grund wollte ich das label jedes Controls als Auswahlkriterium an die EINE Sub übergeben.
Aber es geht auch viel einfacher!
Übergeben wird ja das control an sich.
Und für mich ist dann control.ID interessant.
Mein korrigierter + nun auch funktionierender Code sieht nun so aus:
Public Sub sbColors(control As IRibbonControl)
Dim liColor As Integer
Select Case control.ID
Case "tgb01"
liColor = xlNone
Case "tgb02"
liColor = 3
Case "tgb03"
liColor = 6
Case "tgb04"
liColor = 5
Case "tgb05"
liColor = 10
End Select
Selection.Interior.ColorIndex = liColor
End Sub
Danke noch mal!
Ciao
Thorsten

Anzeige
Danke, da haste recht
26.06.2016 09:53:49
Christian
Hi Thorsten,
ja, da haste recht - und ich gar nicht dran gedacht.
Danke für die Rückmeldung
Christian

AW: mein erstes Ribbon = Fehler
26.06.2016 22:40:23
mumpel
Hallo!
Das Label-Attribut lässt sich in VBA generell nicht nutzen. Und die Rückrufroutine der einfachen Schaltflächen dürfen nur das Control-Attribut in der Klammer haben. Mehr als dieses eine Attribut darf in der Klammer nicht stehen. Allerdings muss es nicht zwingend "control" heissen, kann man auch anders benennen.
Du kannst aber auch das Tag-Attribut nutzen. Dann fällt Select Case weg und die Codezeilen werden kürzer.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onload">
   <ribbon>
      <tabs>
         <tab id="tab01" label="Einfaerben">
            <group id="grp01" label="Farben" >
               <button id="tgb01" label="weiss" tag="xlnone"
                       imageMso="AppointmentColor0" onAction = "sbColors" size="large"/>
               <button id="tgb02" label="rot" tag="3"
                       imageMso="AppointmentColor1" onAction = "sbColors" size="large"/>
               <button id="tgb03" label="gelb" tag="6"
                       imageMso="AppointmentColor10" onAction = "sbColors" size="large"/>
               <button id="tgb04" label="blau" tag="5"
                       imageMso="AppointmentColor2" onAction = "sbColors" size="large"/>
               <button id="tgb05" label="gruen" tag="10"
                       imageMso="AppointmentColor3" onAction = "sbColors" size="large"/>
            </group>
         </tab>
      </tabs>
   </ribbon>
</customUI>

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Public Sub sbColors(control As IRibbonControl)

  Dim liColor As Integer
  
  liColor = control.Tag
    
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0


Gruß, René

Anzeige
AW: mein erstes Ribbon = Fehler
27.06.2016 01:29:15
Oberschlumpf
Hi Rene
Und auch an dich Danke Schön!
Ja, deine Idee mit dem Tag ist wirklich kürzer.
Ich werde es morgen testen. Und ich glaube, ich kann vielleicht weiteren Code sparen; mit dieser Sub:
Public Sub sbColors(control As IRibbonControl)
Selection.Interior.ColorIndex = control.Tag
End Sub

So "spare" ich doch die Dim-Zeile und die Zuweisung an liColor, oder?
Ciao
Thorsten

AW: mein erstes Ribbon = Fehler
27.06.2016 08:48:55
mumpel
Müsste funktionieren. Es könnte aber sein dass Du die "Zahlen" aus dem Tag noch in richtige Zahlen umwandeln musst.
Selection.Interior.ColorIndex = IIf(control.Tag = "xlnone", xlNone, CInt(control.Tag))

Anzeige
AW: mein erstes Ribbon = Fehler
27.06.2016 18:19:14
Oberschlumpf
grins, danke, genau, das war ein Problem. IIf ist mir nicht eingefallen. Ich habe anstelle der Konstanten XlNone den Wert -4142 verwendet - so gehts dann auch (übrigens ohne Konvertierung)
Also - unterm Strich - es läuft! :-)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige