Discussion:
Schriftfarbe ändern
(zu alt für eine Antwort)
Aiuto-Chris
2009-05-12 11:15:01 UTC
Permalink
Hallo,

kann man mittels VBA einstellen, dass nach dem Drücken eines Buttons eine
bestimmte Schriftfarbe ausgewählt wird?
Wenn ja, kann mir bitte jemand sagen, wie?

Vielen Dank im Voraus.

Gruß
Chris
stefan onken
2009-05-12 12:48:01 UTC
Permalink
Post by Aiuto-Chris
Hallo,
kann man mittels VBA einstellen, dass nach dem Drücken eines Buttons eine
bestimmte Schriftfarbe ausgewählt wird?
Wenn ja, kann mir bitte jemand sagen, wie?
Vielen Dank im Voraus.
Gruß
Chris
hallo Chris,
weisst du, wie man so einen Button erstellt? Falls nein:
ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b0129911.pdf
In XL 07 geht das allerdings etwas anders über das Entwicklertools-
Register (muss man über Optionen einblenden).


Nach dem erstellen kommst du nach doppelklick auf den button im VBA-
Editor zu so einer Codehülse:

Private Sub CommandButton1_Click()

End Sub


Dazwischen muss der Code für die Schriftfarbe, zB

Selection.Font.Color = vbRed

färbt die Schriftfarbe aller markierten Zellen rot. Es gibt weitere
Farbkonstanten (vbBlack, vbGreen etc). Andere Farben kann man sich
über RGB() zusammensetzen (wobei je nach Excelversion die angezeigte
Farbe eine andere sein kann). Desweiteren kann man einen ColorIndex
nutzen, etwa

Selection.Font.ColorIndex = 3

Macht dasselbe wie die Codezeile oben. Welche Farbe welchen ColorIndex
hat: http://excelabc.de/excel/et/excel.php?Seite=et00026

Gruß
stefan
Aiuto-Chris
2009-05-12 13:21:02 UTC
Permalink
Hallo Stefan,

vielen Dank für die Hilfe.
Button besteht, da müsste der Befehl, dass der Text rot werden soll dazu.
Aber es soll nicht der Befehl "selection..." sein, da nicht das aktuelle Feld
mit rotem Text gefüllt werden soll, sondern alle zukünftigen Eingaben. Die
schon vorhandenen Eingaben sollen aber in der Farbe (schwarz) bleiben, in der
sie sind.

Also vergleichbar mit dem Button "Schriftfarbe" in der Menüleiste.

Kann man das irgendwie realisieren.
Post by stefan onken
Post by Aiuto-Chris
Hallo,
kann man mittels VBA einstellen, dass nach dem Drücken eines Buttons eine
bestimmte Schriftfarbe ausgewählt wird?
Wenn ja, kann mir bitte jemand sagen, wie?
Vielen Dank im Voraus.
Gruß
Chris
hallo Chris,
ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b0129911.pdf
In XL 07 geht das allerdings etwas anders über das Entwicklertools-
Register (muss man über Optionen einblenden).
Nach dem erstellen kommst du nach doppelklick auf den button im VBA-
Private Sub CommandButton1_Click()
End Sub
Dazwischen muss der Code für die Schriftfarbe, zB
Selection.Font.Color = vbRed
färbt die Schriftfarbe aller markierten Zellen rot. Es gibt weitere
Farbkonstanten (vbBlack, vbGreen etc). Andere Farben kann man sich
über RGB() zusammensetzen (wobei je nach Excelversion die angezeigte
Farbe eine andere sein kann). Desweiteren kann man einen ColorIndex
nutzen, etwa
Selection.Font.ColorIndex = 3
Macht dasselbe wie die Codezeile oben. Welche Farbe welchen ColorIndex
hat: http://excelabc.de/excel/et/excel.php?Seite=et00026
Gruß
stefan
stefan onken
2009-05-12 13:57:23 UTC
Permalink
Post by Aiuto-Chris
Hallo Stefan,
vielen Dank für die Hilfe.
Button besteht, da müsste der Befehl, dass der Text rot werden soll dazu.
meinst du einen exceleigenen button? Den kann man so nicht erweitern,
du müsstest einen neuen button erstellen und für diesen die gewünschte
Funktionalität programmieren.
Post by Aiuto-Chris
Aber es soll nicht der Befehl "selection..." sein, da nicht das aktuelle Feld
mit rotem Text gefüllt werden soll, sondern alle zukünftigen Eingaben. Die
schon vorhandenen Eingaben sollen aber in der Farbe (schwarz) bleiben, in der
sie sind.
Also vergleichbar mit dem Button "Schriftfarbe" in der Menüleiste.
probiers mal mit

Cells.SpecialCells(xlCellTypeBlanks).Font.ColorIndex = 3

Gruß
stefan
Eberhard Funke
2009-05-12 12:53:07 UTC
Permalink
Post by Aiuto-Chris
kann man mittels VBA einstellen, dass nach dem Drücken eines Buttons eine
bestimmte Schriftfarbe ausgewählt wird?
Wenn ja, kann mir bitte jemand sagen, wie?
Hallo Chris,

nach Kopieren des Makro in ein "normales" Modul fügtst Du aus der
Symbolleiste "Formular" den Button ein und weist ihm das Makro
"Schrift_einfärben" zu.

Sub Schrift_färben()
'***für einen markierten Bereich:
Selection.Font.ColorIndex = 3
'***für das ganze Tabellenblatt'
'ActiveSheet.Cells.Font.ColorIndex = 3
End Sub

So wie es jetzt da steht, musst Du erst einen Bereich markieren und dann
den Button betätigen.
Willst Du die Schriftfarbe für die gesamte Tabelle vorgeben, dann setzt vor
die Zeile "Selection ....! ein Apostroph und entferne das Apostroph vor der
Zeile "ActiveSheet ..."

Colorindex=0 setzt auf "Keine Farbe" zurück.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Aiuto-Chris
2009-05-12 13:16:17 UTC
Permalink
Hallo Eberhard,

vielen Dank für deinen Tipp, der mir aber leider nicht weiterhilft.
Button besteht bereits, der eine andere Funktion ausführt.
An diesen Button, soll der Befehl, dass die Schriftfarbe rot sein soll,
angefügt werden.
Dieser Befehl soll aber nicht mit "Selection..." anfangen, da ich mit
"Selection..." das ausgewählte Feld ändere. Es müsste so sein, dass alle
zukünftigen Eingaben rot sein sollen.
Kann man auch sowas realisieren?

Gruß
Chris
Post by Eberhard Funke
Post by Aiuto-Chris
kann man mittels VBA einstellen, dass nach dem Drücken eines Buttons eine
bestimmte Schriftfarbe ausgewählt wird?
Wenn ja, kann mir bitte jemand sagen, wie?
Hallo Chris,
nach Kopieren des Makro in ein "normales" Modul fügtst Du aus der
Symbolleiste "Formular" den Button ein und weist ihm das Makro
"Schrift_einfärben" zu.
Sub Schrift_färben()
Selection.Font.ColorIndex = 3
'***für das ganze Tabellenblatt'
'ActiveSheet.Cells.Font.ColorIndex = 3
End Sub
So wie es jetzt da steht, musst Du erst einen Bereich markieren und dann
den Button betätigen.
Willst Du die Schriftfarbe für die gesamte Tabelle vorgeben, dann setzt vor
die Zeile "Selection ....! ein Apostroph und entferne das Apostroph vor der
Zeile "ActiveSheet ..."
Colorindex=0 setzt auf "Keine Farbe" zurück.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Eberhard Funke
2009-05-12 13:37:36 UTC
Permalink
Post by Aiuto-Chris
Button besteht bereits, der eine andere Funktion ausführt.
An diesen Button, soll der Befehl, dass die Schriftfarbe rot sein soll,
angefügt werden.
Dieser Befehl soll aber nicht mit "Selection..." anfangen, da ich mit
"Selection..." das ausgewählte Feld ändere. Es müsste so sein, dass alle
zukünftigen Eingaben rot sein sollen.
Kann man auch sowas realisieren?
Hallo Chris,

da müsst man den Code des Makro kennen, das durch den Button ausgelöst
wird.

Alternativ:

in das Modul des Tabellenblattes, in den das ganze passieren soll:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = 3
End Sub

Solange "schwarz" geschrieben werden soll, das Makro aufkommentieren.
Erst wenn alle folgenden Eintragungen "rot" geschrieben werden sollen, die
Apostrophe entfernen.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Aiuto-Chris
2009-05-12 13:53:02 UTC
Permalink
Hallo,

ich glaube, das mit dem "Target" hilft mir weiter. Kann es aber erst morgen
testen.
Melde mich dann wieder.

Vielen Dank schon mal.
Post by Eberhard Funke
Post by Aiuto-Chris
Button besteht bereits, der eine andere Funktion ausführt.
An diesen Button, soll der Befehl, dass die Schriftfarbe rot sein soll,
angefügt werden.
Dieser Befehl soll aber nicht mit "Selection..." anfangen, da ich mit
"Selection..." das ausgewählte Feld ändere. Es müsste so sein, dass alle
zukünftigen Eingaben rot sein sollen.
Kann man auch sowas realisieren?
Hallo Chris,
da müsst man den Code des Makro kennen, das durch den Button ausgelöst
wird.
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = 3
End Sub
Solange "schwarz" geschrieben werden soll, das Makro aufkommentieren.
Erst wenn alle folgenden Eintragungen "rot" geschrieben werden sollen, die
Apostrophe entfernen.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Eberhard Funke
2009-05-12 22:18:26 UTC
Permalink
Post by Aiuto-Chris
Button besteht bereits, der eine andere Funktion ausführt.
An diesen Button, soll der Befehl, dass die Schriftfarbe rot sein soll,
angefügt werden.
Hallo Chris,

dann probier mal, an Deinen bestehenden Code anzuhängen:

EinAus = 3

Vor Dein Makro, also ganz oben, fügst Du ein:

Public EinAus As Integer


und in das Modul des Tabellenblattes kommt der Code:

Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = EinAus
End Sub

Jetzt wird aber *jede* Eingabe nach Betätigen Deines Buttons rot
geschrieben.

--------------------

Eine andere Möglichkeit:

Public EinAus As Variant

Sub Farbe()
MsgBox "mein Code"
If EinAus = 0 Then
EinAus = 3
Else
EinAus = 0
End If
End Sub

Diesem Makro weist Du einen separaten Button zu (der Code im Modul des
Tabellenblattes bleibt wie oben). Beim Öffnen der Tabelle wird schwarz
geschrieben. Nach Betätigen des neuen Buttons wechselt die Schriftfarbe für
neue Eingaben auf Rot. Bei erneutem Betätigen des Buttons auf Schwarz usw.,
also hin und her.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Eberhard Funke
2009-05-12 22:47:21 UTC
Permalink
Post by Eberhard Funke
Public EinAus As Variant
Sub Farbe()
MsgBox "mein Code" <--- war nur zu Testzwecken drin, löschen!
If EinAus = 0 Then
EinAus = 3
Else
EinAus = 0
End If
End Sub
Das lässt sich noch verkürzen:

Sub Farbe()
EinAus = (Not EinAus) + 4
End Sub

(je länger der Abend, desto häufiger die Fehler)
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
m***@spam.unerwuenscht
2009-05-13 08:12:09 UTC
Permalink
Hallo Eberhard,
Post by Eberhard Funke
Post by Eberhard Funke
Public EinAus As Variant
Sub Farbe()
MsgBox "mein Code" <--- war nur zu Testzwecken drin, löschen!
If EinAus = 0 Then
EinAus = 3
Else
EinAus = 0
End If
End Sub
Sub Farbe()
EinAus = (Not EinAus) + 4
End Sub
Ich kann's noch kürzer ;-)

Sub Farbe()
EinAus = 3 - EinAus
End Sub

Ehrlich gesagt: mir ist's bei meiner Formel wesentlich klarer, was passiert.
Aber das mag persönliche Geschmacksache sein.
Allerdings ist die ausführliche Fassung mit dem IF die sicherste, sollte
nebenher mit der Variable EinAus was Unvorhergesehenes passieren.

Gruß
Bernhard Sander
Bernhard Sander
2009-05-13 08:15:44 UTC
Permalink
Hallo Eberhard,
Post by Eberhard Funke
Post by Eberhard Funke
Public EinAus As Variant
Sub Farbe()
MsgBox "mein Code" <--- war nur zu Testzwecken drin, löschen!
If EinAus = 0 Then
EinAus = 3
Else
EinAus = 0
End If
End Sub
Sub Farbe()
EinAus = (Not EinAus) + 4
End Sub
Ich kann's noch kürzer ;-)

Sub Farbe()
EinAus = 3 - EinAus
End Sub

Ehrlich gesagt: mir ist's bei meiner Formel wesentlich klarer, was passiert.
Aber das mag persönliche Geschmacksache sein.
Allerdings ist die ausführliche Fassung mit dem IF die sicherste, sollte
nebenher mit der Variable EinAus was Unvorhergesehenes passieren.

Gruß
Bernhard Sander
Aiuto-Chris
2009-05-13 10:21:01 UTC
Permalink
Hallo Eberhard,

vielen Dank! Die Möglichkeit mit dem Target löst genau mein Problem.
Echt klasse!!!

Gruß
Chris
Post by Eberhard Funke
Post by Aiuto-Chris
Button besteht bereits, der eine andere Funktion ausführt.
An diesen Button, soll der Befehl, dass die Schriftfarbe rot sein soll,
angefügt werden.
Hallo Chris,
EinAus = 3
Public EinAus As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Font.ColorIndex = EinAus
End Sub
Jetzt wird aber *jede* Eingabe nach Betätigen Deines Buttons rot
geschrieben.
--------------------
Public EinAus As Variant
Sub Farbe()
MsgBox "mein Code"
If EinAus = 0 Then
EinAus = 3
Else
EinAus = 0
End If
End Sub
Diesem Makro weist Du einen separaten Button zu (der Code im Modul des
Tabellenblattes bleibt wie oben). Beim Öffnen der Tabelle wird schwarz
geschrieben. Nach Betätigen des neuen Buttons wechselt die Schriftfarbe für
neue Eingaben auf Rot. Bei erneutem Betätigen des Buttons auf Schwarz usw.,
also hin und her.
--
Mit freundlichen Grüssen Eberhard
XP home XL 2000
Eberhard(punkt)W(punkt)Funke(at)t-online.de
Lesen Sie weiter auf narkive:
Loading...