Microsoft Excel

Herbers Excel/VBA-Archiv

Teilstring Farbig

Betrifft: Teilstring Farbig von: Max
Geschrieben am: 26.08.2014 15:29:25

Guten Tag alle zusammen,

ich habe mal wieder ein Problem.

Ich möchte gern von einen Teilstring die Farbe ändern.

Laut Internetrecherche und Makrorekorder sollte das mit folgendem Code funktionieren.

With ActiveCell.Characters(Start:=10, Length:=7).Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = -0.499984740745262
End With

Das Ergebnis ist allerdings nicht das gewünschte. Der Teilstring wird nicht farbig, sondern weiß und ist somit nicht mehr lesbar. Seltsam finde ich außerdem, dass der Code ohne Startwert die richtige Farbe einstellt, dann logischer weise jedoch für den kompletten string.

Hoffe mir kann jemand helfen, stehe hier grad voll auf dem Schlauch.

p.s. im fertigen Code soll die Zelle direkt adressiert werden, also ohne ActvieCell... ändert aber an dem eigentlichen Problem nichts

  

Betrifft: AW: Teilstring Farbig von: Klaus M.vdT.
Geschrieben am: 26.08.2014 15:35:43

Hallo Max,
schlag dich nicht mit den xl2007+ ThemeColors herum, mach es althergebracht:

    With ActiveCell.Characters(Start:=10, Length:=7).Font
        .ColorIndex = 10
    End With

Die Zahl von ColorIndex ändern für andere Farben (einfach ausprobieren).

Grüße,
Klaus M.vdT.


  

Betrifft: AW: Teilstring Farbig von: Max
Geschrieben am: 26.08.2014 15:41:00

Hallo Klaus,

erst einmal Danke für die Antwort. Damit wechselt wer dann tatsächlich die Farbe.

Nur kann ich irgendwo rausfinden, welche ColorIndex zu welcher Farbe gehört?
Da das ganze dem CI unterliegt muss die Farbe leider exakt sein.


  

Betrifft: AW: Teilstring Farbig von: Klaus M.vdT.
Geschrieben am: 26.08.2014 15:47:45

Hi Max,

lass das in einem leeren Blatt laufen:

Sub ColorIndexZeigen()
For i = 1 To 56
 With Range("A" & i)
    .Value = "Colorindex: " & i & " sieht so aus"
    .Font.ColorIndex = i
 End With
Next i
End Sub
Grüße,
Klaus M.vdT.


  

Betrifft: AW: Teilstring Farbig von: Max
Geschrieben am: 26.08.2014 15:51:25

Sehr gut genau sowas hab ich gesucht.

Hab vielen Dank!


  

Betrifft: AW: Teilstring Farbig von: Max
Geschrieben am: 27.08.2014 10:58:07

Hi @ all,

ich bekomme zwar jetzt einen Teilstring eingefärbt, allerdings nur solange der String nicht über eine Formel erzeugt wird.

Kann man das ändern?

(Ich will über eine Formel einen String erzeugen und anschließend einen Teil davon mit einer anderen Farbe hervorheben.)


  

Betrifft: AW: nicht bei Formeln ! von: Daniel
Geschrieben am: 27.08.2014 11:04:16

Hi
nein, geht nicht.
Bei durch Formeln erzeugten Texten haben alle Zeichen dieselbe Farbe.
Unterschiedliche Zeichenformatierungen innerhalb der Zelle sind nur bei festen Texten möglich.

Gruß Daniel


  

Betrifft: AW: nicht bei Formeln ! von: Max
Geschrieben am: 27.08.2014 11:10:47

Und wenn ich die Berechnung des Strings komplett in VBA vornehme und den fertigen String fest in die Zelle schreibe? Dann müsste ich doch zum gewünschten Ergebnis kommen, oder?


  

Betrifft: AW: dann ja. owt von: Daniel
Geschrieben am: 27.08.2014 11:12:53




  

Betrifft: AW: thx @ Daniel; owt von: Max
Geschrieben am: 27.08.2014 11:14:58




  

Betrifft: AW: Farbe CI-Konform von: Daniel
Geschrieben am: 26.08.2014 16:01:58

Hi

Seit Excel 2007 kannst du jedem Objekt (Schrift, Hintergrund, Rahmen, Grafik usw) direkt eine RGB-Farbe zuweisen:

With ActiveCell.Characters(Start:=10, Length:=7).Font
         .Color = RGB(200, 100, 50)
End With
Der Colorindex ist ein Relikt von 2003, bis dahin waren maximal 56 verschiedene Farben auf einem Blatt möglich.
Dh man hat erst die Farben einem der 56 Farbindexen zugewiesen (oder auch nicht, wenn man mit den Excelstandardfarben gearbeitet hat) und das über den ColorIndex aus diesen 56 Farben einen ausgewählt.

das ColorTheme ist im prinzip sowas ähnliches wie der Farbindex.
Nur das man hier nicht einzelne Farben definiert, sondern ein Farbschema für Hintergrund und Schrift gleichzeitig.
Dh färbst dann die ganze Zelle mit dem selben Farbschema (dh Hintergrund und Schrift), dh dass beim Hintergrund eine Dunkle und für die Schrift eine helle Farbe verwendet wird.

Wenn eure IT auf extrem Zack ist, hat sie eure Farbschemen als Vorlage installiert und du kannst diese auswählen.
Da ich das aber für sehr unwahrscheinlich halte, fährst du besser, wenn du dir die RGB-Werte eures Farbschemas besorgst und die Zellen direkt darüber einfärbst.


Gruß Daniel


  

Betrifft: AW: Teilstring Farbig von: Luschi
Geschrieben am: 26.08.2014 15:48:00

Hallo Max & Klaus,

auch in Excel 2013 hat sich die Situation mit 'ThemeColors' nicht verändert.
Auch hier macht der Vba-Code von Max die ostfriesische Nationalfahne
(weißer Adler auf weißen Grund)



Gruß von Luschi
aus klein-Paris


  

Betrifft: Es wurde ja schon richtig empfohlen, ... von: Luc:-?
Geschrieben am: 26.08.2014 17:23:04

…die RGB-Farbe zu verwenden, Max,
ansonsten hier noch eine ergänzende Erläuterung zu ThemeColor, das mit dem jeweils eingestellten Theme (Standard ist in Xl12 Larissa) aufeinander abgestimmte FarbIndizes (in grundfarblich variierenden IndexTabellen*) bereitstellt, deren Farben über TintAndShade außerdem noch akzentuiert wdn können. Dabei sind einige Farben GestaltungsGrundElementen zugeordnet, was ihre speziellen Namen erklärt. Sie alle entsprechen natürlich bestimmten RGB-Farben.
*Die jeweilige IndexTabelle enthält darüber hinaus noch einige allgemeine GrundFarben.
Gruß, Luc :-?

Besser informiert mit …


  

Betrifft: AW: Zur Info von: Ewald
Geschrieben am: 27.08.2014 00:33:35

Hallo,

wer RGB nicht mag, kann auch die Farbnummer(RGBlong) verwenden.

Leider lassen sich nicht alle Farbnummern darstellen (laufen hier ins Limit verschiedene Formate in einer Datei). eine Auflistung ist möglich aber nur in etwa 17 Spalten.

Für Zellen sollte ThemeColor nicht verwendet werden,sie sind eigentlich für Shapes gedacht.außerdem sind sie in der Schreibweise xlThemeColorDark1 begrenzt, es gibt viel mehr ThemeColor.

Für die gewünschte Farbe wäre die Farbnummer 8421504

Gruß Ewald


  

Betrifft: Es gibt viele Themes (ca 2 Dtzd vorgefertigt) ... von: Luc:-?
Geschrieben am: 27.08.2014 03:35:04

…und außerdem kann man wohl auch eigene anlegen (Daniel hatte das bereits angedeutet), Ewald u.A.;
zu jedem Theme gibt's dann 10 ThemeColors, davon 4 (lt Benennung) für Gestaltungs­Elemente und 6 sog Akzente (Accent1…6), alle 10 mittels TintAndShade modifizierbar (prozentualer Weiß/Schwarz- resp Grau-Anteil). Da diese auch in den pro Theme vorgefertigten Tabellen­Designs auftauchen, sind sie von MS wohl auch für ZellFarben gedacht und ersetzen nicht nur die alten ColorScheme-Farben, die tatsächlich nur für Shapes bestimmt waren.
Außerdem können (auch in Zellen!) 1…2-farbige FarbVerläufe* dargestellt wdn (auch mittels BedingtFormatierung!), was früher (falls überhpt) auch nur in Shapes möglich war.
* Dabei enthalten die 1farbigen Verläufe eine Grau-Komponente als ZweitFarbe. (Übrigens lässt sich so etwas seit einiger Zeit auch relativ einfach in HTML darstellen, ohne dass ein HG-Bild geladen wdn muss.)
Morrn, Luc :-?


  

Betrifft: AW: Es gibt viele Themes (ca 2 Dtzd vorgefertigt) ... von: Ewald
Geschrieben am: 27.08.2014 14:18:16

Hallo Luc,

eine Theme besteht aus 3 Unterthemen

Colortheme,Effekttheme und Fonttheme

es gibt 21 vorgefertigte Theme, benutzerdefinierte Theme können erstellt werden.

Eine ColorTheme besteht aus 12 Grundfarben, wobei 10 verwendet werden können (mit VBA alle 12)

Außerdem gibt es 50 Farben für eine Colortheme die aber hartkodiert sind (lassen sich nicht ändern).

Sie beruhen auf den Grundfarben und sind harmonisch abgestuft (wie immer man dies deuten will)

In VBA sind mit xlthemeColor nur alle 12 Grundfarben erreichbar, die weiteren nur mit zusätzlich TintandShade.

Zu dem oben erwähnten Fehlverhalten, hier liegt ein Bug vor (der auch noch in 2010 ist)

mit

    With ActiveCell.Interior	
        .ThemeColor = xlThemeColorDark1	
        .TintAndShade = 0.599963377788629	
    End With
wird nicht schwarz sondern weiss gefärbt

mit
    With ActiveCell.Interior	
        .ThemeColor = xlThemeColorLight1	
        .TintAndShade = 0.599963377788629	
    End With
wird schwarz und nicht weiss gefärbt

der Index ist vertauscht.

Weitere Infos zu Farben in Excel mal nach Farben.xlsm suchen,läßt sich hier nicht hochladen

Gruß Ewald





  

Betrifft: Zum Bug kann'ch nichts sagen, denn bisher biete... von: Luc:-?
Geschrieben am: 27.08.2014 14:52:50

…ich nur die FarbAuswertung nach ThemeColor an, Ewald,
und dabei ist mir das wohl noch nicht aufgefallen. Allerdings operiert TintAndShade wohl auch mit negativen Werten. Möglicherweise ist das also ein LogikFehler. FontTheme dürfte das Ggstück zu ColorTheme sein, falls es genauso aufgebaut ist, nur halt auf Letzteres abgestimmt, während EffectTheme wohl analog abgestimmte FarbEffekte enthält. Aber soweit bin ich noch nicht in diese Design-Möglichkeiten eingedrungen.
Auf jeden Fall macht das bestimmte Auswertungen nun nicht gerade leichter… ;-)
Gruß, Luc :-?


  

Betrifft: AW: Zum Bug kann'ch nichts sagen, denn bisher biete... von: Ewald
Geschrieben am: 27.08.2014 15:20:16

Hallo Luc,

mit den oben genannten Makros läßt sich der Bug ja nachvollziehen.

TintandShade kann auch negative Werte haben.

hier einmal ein Beispiel mit den Werten der Hartcodierung.

 ABCDEFGHIJKLMNOPQRSTU
130                     
131 1 2 3 4 5 6 7 8 9 10 
132                     
133                     
134                     
135Die darunter plazierten 50 Farben bilden jeweils eine harmonische Reihe zu je einer Designfarbe mit festen Tönungsstufen                    
136                     
137 -0,05 0,5 -0,1 0,8 0,8 0,8 0,8 0,8 0,8 0,8 
138                     
139 -0,15 0,35 -0,25 0,6 0,6 0,6 0,6 0,6 0,6 0,6 
140                     
141 -0,25 0,25 -0,5 0,4 0,4 0,4 0,4 0,4 0,4 0,4 
142                     
143 -0,35 0,15 -0,75 -0,25 -0,25 -0,25 -0,25 -0,25 -0,25 -0,25 
144                     
145 -0,5 0,05 -0,9 -0,5 -0,5 -0,5 -0,5 -0,5 -0,5 -0,5 
146                     
Gruß Ewald


  

Betrifft: Ja, so sieht das aus, ... von: Luc:-?
Geschrieben am: 27.08.2014 17:15:15

…Ewald,
habe nur noch nicht herausgefunden, wie man alle vorhandenen Themes durchgehen kann, falls mal eine Farbe, die einem anderen zugeordnet wdn könnte, auftauchen sollte. Aber das ist vermutlich auch gar nicht vorgesehen, weil es ja um (fein-)abgestimmtes Design geht (mit ein paar extra GrundFarben, was du ja ebenfalls erwähnt hast). Für Grund- und FremdFarben ist dann bisher eben keine ThemeColor-Angabe mit meiner einschlägigen UDF möglich, was hieß, dass ich dadurch (bei entsprd Verlangen) auftretende Fehler abfangen musste.
Luc :-?


  

Betrifft: AW: Ja, so sieht das aus, ... von: Ewald
Geschrieben am: 28.08.2014 01:36:19

Hallo Luc,

zunächst mal eine Berichtigung in Office2010 stehen insgesamt 41 Themes zur Verfügung.

Sie stehen im Ordner C:\Program Files\Microsoft Office\Document Themes 14\Theme Colors

Dort findest du aber nur 40 Themes (die StandardThemes(Larissa) ist dort nicht vorhanden.

Außerdem haben die Dateinamen die englische Schreibweise und durch die abenteuerliche Übersetzung der deutschen Schreibweise läßt sich nicht unbedingt auf den Dateinamen schließen.

Um eine Themes abzufragen mußt du sie laden.

Als Beispiel die Grauscala

ActiveWorkbook.Theme.ThemeColorScheme.Load ( _
        "C:\Program Files\Microsoft Office\Document Themes 14\Theme Colors\Grayscale.xml")
Da die StandardTheme aber nicht als Datei vorhanden ist, kannst du sie auch nicht mit oberen Code aufrufen.Der Aufruf lautet dann so
ActiveWorkbook.Theme.ThemeColorScheme.Load()
Die Grundfarben kannst du dann über den Index abrufen,die anderen nur mit Index und TintandShade.

Wie aber auf dem oben geposteten Bild zu sehen ist, sind die TintandShadewerte für die Abstufung nicht alle gleich.

Hierdurch ergibt sich ein ziemlicher Aufwand beim Programmieren.

Gruß Ewald


  

Betrifft: Aha, das hatte ich beinahe schon befürchtet, ... von: Luc:-?
Geschrieben am: 28.08.2014 16:04:45

…Ewald;
dann werde ich das wohl zugunsten wichtigerer Dinge auf die lange Bank schieben müssen… ;-)
Gruß, Luc :-?


  

Betrifft: AW: Aha, das hatte ich beinahe schon befürchtet, ... von: Ewald
Geschrieben am: 29.08.2014 01:01:12

Hallo Luc,

vielleicht gibt es noch eine andere Lösung.

da die Colortheme ja als XLM-Datei vorliegen, könnte man diese durchlaufen und die Hexwerte der 12 Grundfarben auslesen.

Nur weiß ich nicht wie man eine xml-Datei gezielt auslesen kann.sprich die Werte die in " " stehen

Es müßte dann zwar noch von Hex in Dec umgewandelt werden, aber das dürfte das kleinste Problem sein.

Gruß Ewald


  

Betrifft: Ja, danke, interessante Idee, ... von: Luc:-?
Geschrieben am: 29.08.2014 02:01:41

…die sicher durchführbar ist, Ewald,
aber bisher habe ich nur HTML-Dateien ausgelesen bzw diese und einfache XML-Dateien, wie man sie für MS' HTML-KomprimierungsPgm (.chm) für das Inhaltsverzeichnis (ToC) benötigt, (mit VBA) erzeugt. Da müsste ich mich auch erst hineinvertiefen… ;-)
Morrn, Luc :-?


 

Beiträge aus den Excel-Beispielen zum Thema "Teilstring Farbig"