Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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

Schriftfarbe

Schriftfarbe
18.02.2013 10:35:33
siegfried
Hallo zusammen,
ich möchte per VBA in dem Label einer UserForm Text farbig darstellen und dabei auf den Eintrag in einer Zelle eines Arbeitsblattes ( z.B. xlThemeColorDark2 oder xlThemeColorLight2 oder xlThemeColorAccent2 ) zurückgreifen.
Wie kann ich das realisieren?
Gruß Siegfried

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schriftfarbe
18.02.2013 11:19:17
JACKD
Hallo
Sigfried
UserForm1.Label1.BackColor = tabelle1.cells(1,1).value
so würd ich es probieren
Wenn du Keine Farben in der Zelle hast wirst du den Umweg über die Case anweisung machen müssen.
Also case xlThemeColorDark2 = Braun
grüße

AW: Schriftfarbe
18.02.2013 11:28:29
siegfried
Hi Jack,
ich wollte nicht den Hintergrund (BackColor), sondern die Schriftfarbe (ForeColor) verändern.
Gruß Siegfried

AW: Schriftfarbe
18.02.2013 11:42:35
JACKD
Dann mit
UserForm1.Label1.ForeColor = vbRed
grüße

AW: Schriftfarbe
18.02.2013 12:09:31
siegfried
Hi Jack,
Danke für Deinen Hinweis, damit müßte es auch gehen.
Gruß Siegfried

AW: Schriftfarbe
18.02.2013 12:20:11
JACKD
Der Farbindex für xldark2 ist übrigens 15
=)

Anzeige
Korrektur
18.02.2013 12:21:56
JACKD
19 nicht 15
So bekommst du es raus
Private Sub CommandButton2_Click()
UserForm1.Label1.ForeColor = vbCyan
Worksheets("Tabelle1").Cells(1, 1).Select
With Selection.Interior
.ThemeColor = xlThemeColorDark2
End With
farbe = Worksheets("Tabelle1").Cells(1, 1).Interior.ColorIndex
MsgBox farbe
End Sub

garantiert falsch
18.02.2013 12:48:48
Rudi
Hallo,
färb mal eine Zelle mit
Selection.interior.colorindex=19
Gruß
Rudi

AW: garantiert falsch
18.02.2013 12:53:31
siegfried
Hi Rudi,
alles, bloß keinen Ärger.
Du und Jack haben mir bis hier sehr geholfen.
Jetzt hoffe ich noch darauf, dass mir Jack das mit der Case-Anweisung konkreter sagen kann.
Gruß Siegfried

Anzeige
und? owT
18.02.2013 12:58:28
JACKD

AW: und?
18.02.2013 13:13:02
Rudi
Hallo,
nix und?
CD
3 Colorindex 19
4 xlThemeColorDark2

.Colorindex gibt für Farben, die keinen Colorindex haben, den zurück, der der Farbe am nächste kommt.
ColorIndexe gibt's nur 56 aber über 1 Mio Farben.
Gruß
Rudi

Anzeige
Wieder was dazu gelernt.
18.02.2013 13:41:00
JACKD
Danke dafür.
Grüße

AW: Schriftfarbe
18.02.2013 12:39:28
siegfried
Hi Jack,
wie meinst du das mit der Case-Anweisung. Könntest Du das für einen VBA-Laien konkreter sagen.
Interessant sind die Farben xlThemeColorDark1, xlThemeColorDark2, xlThemeColorLight1, xlThemeColorLight2, xlThemeColorAccent1, xlThemeColorAccent2, xlThemeColorAccent3, xlThemeColorAccent4, xlThemeColorAccent6, xlThemeColorAccent8
Gruß Siegfried

AW: Schriftfarbe
18.02.2013 12:52:11
JACKD
Nun ich hab mir folgendes vorgestellt
Du willst in einer Zelle die Themes haben und anhand dessen deine Labels füllen
Wie wir von Rudi erfahren haben, kann man Labels nicht direkt mit Themes ansprechen.
Also Basteln wir uns das zurecht.
Wir nehmen die Themes-Namen also als "variablen"
Und die kannst du mit der select Case anwendung ganz gut verwursten
Also

r = .cells(1,1).value ' Name des Themes im Arbeitsblatt
Select Case r
Case Is xldark2
font.color = 19
Case is xldark1
font.color = 11
Case is ....
End Select
so könnte ich mir das vorstellen

Anzeige
AW: Schriftfarbe
18.02.2013 14:31:19
siegfried
Hi Jack,
vielen Dank.
Jetzt habe ich die Wahl. Du oder Rudi?
Gruß Siegfried

AW: Schriftfarbe
18.02.2013 14:47:54
JACKD
Die von Rudi ist die schönere
ist zwar gleich vom Lösungsansatz aber die Programmierung ist sauberer
Meine Lösung ist eher etwas für Hausfrauen und Kranführer =)
Grüße

AW: Schriftfarbe
18.02.2013 11:24:49
Rudi
Hallo,
Labels unterstützen keine ThemeColors.
Gruß
Rudi

AW: Schriftfarbe
18.02.2013 11:36:14
siegfried
Hi Rudi,
genau das habe ich beim testen auch gemerkt, hatte aber gehofft, dass es unter Füchsen eine Möglichkeit gibt.
Kann ich dann aber über ein anderes Steuerelement die Schriftfarbe manipulieren?
Bei einer normalen TextBox habe ich das gleiche festgestellt. Bei einer RichTextBox habe ich den Test abgebrochen, weil ich ungewollte Kontrollfragen erhalten habe.
Gruß Siegfried

Anzeige
AW: Schriftfarbe
18.02.2013 11:40:08
Rudi
Hallo,
sicher kannst du die Schriftfarbe beeinflussen. Setz einfach die .ForeColor-Eigenschaft wie gewünscht.
z.B. Label1.ForeColor=RGB(255,0,0) für rot.
Gruß
Rudi

AW: Schriftfarbe
18.02.2013 11:57:13
siegfried
Hi Rudi,
die Möglichkeit mit RGB oder mit Kennzahlen (z.B. -167772538) zu manipulieren wollte ich vermeiden, weil ich in beiden Fällen nur über ausprobieren eine bestimmte Farbe (z.B. xlThemeColorDark2) erzeugen kann.
Daher die Anfrage, ob man auch über den Namen der Farbe arbeiten kann.
Gruß Siegfried

AW: Schriftfarbe
18.02.2013 12:10:32
Rudi
Hallo,
weil ich in beiden Fällen nur über ausprobieren eine bestimmte Farbe (z.B. xlThemeColorDark2) erzeugen kann.
Wieso ausprobieren?
Färb dir doch einfach eine Zelle wie gewünscht ein und lies die Farbe aus.
Im Direktfenster: ?Selection.Interior.Color
Gruß
Rudi

Anzeige
per Function
18.02.2013 13:53:11
Rudi
Hallo,
in der UF z.B.
Private Sub CommandButton1_Click()
Label1.ForeColor = Theme2Color(Sheets(1).Range("A1"))
End Sub

In ein Modul:
Function Theme2Color(sTheme As String)
Dim arrTheme, arrColor
arrTheme = Array("xlThemeColorLight1", "xlThemeColorLight2", "xlThemeColorDark1", _
"xlThemeColorDark2", "xlThemeColorAccent1", "xlThemeColorAccent2", _
"xlThemeColorAccent3", "xlThemeColorAccent4", "xlThemeColorAccent5", _
"xlThemeColorAccent6")
arrColor = Array(0, 8210719, 16777215, _
14806254, 12419407, 5066944, _
5880731, 10642560, 13020235, _
4626167)
On Error Resume Next
Theme2Color = arrColor(Application.Match(sTheme, arrTheme, 0) - 1)
End Function

Gruß
Rudi

Anzeige
AW: per Function
18.02.2013 14:29:42
siegfried
Hi Rudi,
vielen Dank, so klappts
Gruß Siegfried

UDF für TemeColor-Bestimmung
18.02.2013 15:36:01
Luc:-?
Hallo, Folks;
kann testen wer mag! ;-)
Rem Ermittelt d.Farben d.Stdd-Range-Prop-Objekte (nicht FmtCond-Obj)
'   Nur f.xlVss >=12! Kann nicht oW in AddIns bzw Module aufgenommen
'   wdn, d.(auch) unter früheren xlVss laufen sollen ->SyntaxFehler!
'   Hilfe zu Auslesen OfficeTheme so mies, dass es bislg unmögl war!
'   Vs1.2* -LSr -cd:20121010 -fpub: 20130218/herber -lupd:20121122t
Function ThColor(Optional ByVal Bereich As Range, Optional ByVal ObTyp = 1, _
Optional ByVal nurIdx As Boolean)
Dim bix As Integer, cix As Long, rix As Long, xb(), xCol() As Variant, _
xbo As Borders, xBer As Range, xr As Range
On Error GoTo fx
'    Application Volatile
If Bereich Is Nothing Then Set Bereich = ActiveWindow.RangeSelection
If Bereich.Count > 1 Then
Set xBer = Bereich
ReDim xCol(xBer.Rows.Count - 1, xBer.Columns.Count - 1)
For Each xr In xBer.Rows
cix = 0
For Each Bereich In xr.Columns
GoSub ew: xCol(rix, cix) = ThColor: cix = cix + 1
Next Bereich
rix = rix + 1
Next xr
ThColor = xCol
Else
ew:     With Bereich
Select Case ObTyp
Case 1, "ict", "zft":   ObTyp = 1
Case 3, "pct", "mft":   ObTyp = 3
Case 6, "fct", "sft":   ObTyp = 6
Case 9, "bct", "rft":   ObTyp = 9: Set xbo = .Borders
Case 12, "dct", "dft":  ObTyp = 12: Set xbo = .Borders
Case Else:              Err.Raise xlErrNA
End Select
On Error Resume Next
Select Case ObTyp
Case 1
With .Interior
If IsError(.ThemeColor) Then
GoTo ci
ElseIf CBool(.ThemeColor * .TintAndShade) Then
ThColor = IIf(nurIdx, .ThemeColor & Format(.TintAndShade, _
"+0%;-0%;"), .Color)
Else
ci:                     If .ColorIndex > 0 Then
ThColor = IIf(nurIdx, .ColorIndex, _
ActiveWorkbook.Colors(.ColorIndex))
Else: ThColor = .ColorIndex
End If
End If
End With
Case 3
With .Interior
If IsError(.ThemeColor) Then
GoTo cp
ElseIf CBool(.PatternThemeColor * .PatternTintAndShade) Then
ThColor = IIf(nurIdx, .PatternThemeColor & Format( _
.PatternTintAndShade, "+0%;-0%;"), .PatternColor)
Else
cp:                     If .PatternColorIndex > 0 Then
ThColor = IIf(nurIdx, .PatternColorIndex, _
ActiveWorkbook.Colors(.PatternColorIndex))
Else: ThColor = .PatternColorIndex
End If
End If
End With
Case 6
With .Font
If IsError(.ThemeColor) Then
GoTo cx
ElseIf CBool(.ThemeColor * .TintAndShade) Then
ThColor = IIf(nurIdx, .ThemeColor & Format( _
.TintAndShade, "+0%;-0%;"), .Color)
Else
cx:                     If .ColorIndex > 0 Then
ThColor = IIf(nurIdx, .ColorIndex, _
ActiveWorkbook.Colors(.ColorIndex))
Else: ThColor = .ColorIndex
End If
End If
End With
Case 9, 12
If IsError(xbo.ThemeColor) Then
GoTo ca
ElseIf Not (IsNull(.ThemeColor) Or IsNull(.TintAndShade)) Then
ReDim xb(3)
For bix = 0 To 3
With xbo(bix - CInt(ObTyp = 9) - _
CInt(ObTyp = 12) * (5 + 4 * CInt(bix > 1)))
If IsError(.ThemeColor) Then
If CBool(.TintAndShade) Then
xb(bix) = IIf(nurIdx, .ColorIndex & Format( _
.TintAndShade, "+0%;-0%;"), .Color)
Else: GoTo cb
End If
ElseIf CBool(.ThemeColor * .TintAndShade) Then
xb(bix) = IIf(nurIdx, .ThemeColor & Format( _
.TintAndShade, "+0%;-0%;"), .Color)
Else
cb:                             If .ColorIndex > 0 Then
xb(bix) = IIf(nurIdx, .ColorIndex, _
ActiveWorkbook.Colors(.ColorIndex))
Else: xb(bix) = .ColorIndex
End If
End If
End With
Next bix
ThColor = xb
Else
With xbo
If CBool(.ThemeColor * .TintAndShade) Then
ThColor = IIf(nurIdx, .ThemeColor & Format( _
.TintAndShade, "+0%;-0%;"), .Color)
Else
ca:                         With xbo
If .ColorIndex > 0 Then
ThColor = IIf(nurIdx, .ColorIndex, _
ActiveWorkbook.Colors(.ColorIndex))
Else: ThColor = .ColorIndex
End If
End With
End If
End With
End If
End Select
End With
If Not xBer Is Nothing Then Return
End If
GoTo ex
fx: If Err.Number  xlErrNA Then
ThColor = "#F" & Err.Number & ": " & Err.Description & "!"
Else: ThColor = CVErr(Err.Number)
End If
ex: Set Bereich = Nothing: Set xBer = Nothing: Set xbo = Nothing
End Function
Viel Spaß!
Gruß Luc :-?
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige