Betrifft: Bedingte Formatierung mit Platzhalter
von: Wolle
Geschrieben am: 21.01.2010 11:32:14
Hallo Freunde aus dem Forum,
ich habe folgendes Problem:
Zelle A1= 9999037- 14587
Zelle A2= 9996037-65287
Zelle A3= 2300448-0632
Zelle A4= 10548-45899
Ich möchte die Zelle einfärben die mit 999 BEGINNEN und die Nachbarzelle (B) . Wie kann ich das mit VBA lösen? Stehe da total auf dem Schlauch.
Danke und Gruß
Wolfgang
Betrifft: Bedingte Formatierung per VBA
von: NoNet
Geschrieben am: 21.01.2010 11:36:59
Hallo Wolfgang,
so geht's :
Sub BedingteFormatierung() With Range("A1:B4") .FormatConditions.Delete .FormatConditions.Add Type:=xlExpression, Formula1:="=LINKS($A1;3)=""999""" .FormatConditions(1).Interior.ColorIndex = 40 'Orange End With End SubGruß, NoNet
Betrifft: AW: Bedingte Formatierung per VBA
von: Wolle
Geschrieben am: 21.01.2010 11:50:47
Hallo,
ja danke, das sieht guut aus.
Geht das auch wenn ich zB. die 9999 (4x9) in Orange haben möchte und die 999 (3x9) in grün?
Danke und gruß
Wolfgang
Betrifft: AW: Bedingte Formatierung per VBA
von: Wolle
Geschrieben am: 21.01.2010 12:02:49
Code läuft nicht.
Gruß Wolle
Betrifft: Zweite Bedingte Formatierung per VBA
von: NoNet
Geschrieben am: 21.01.2010 12:47:19
Hallo Wolle,
zu Frage1 : Du musst einfach eine weitere Bedingte Formatierung hinzufügen :
Sub BedingteFormatierung() With Range("A1:B4") .Select 'Bereich zuvor markieren 'Bedingte Formatierungen löschen : .FormatConditions.Delete 'Erste Bedingte Formatierung : .FormatConditions.Add Type:=xlExpression, Formula1:="=LINKS($A1;3)=""999""" .FormatConditions(1).Interior.ColorIndex = 40 'Orange 'Zweite Bedingte Formatierung : .FormatConditions.Add Type:=xlExpression, Formula1:="=LINKS($A1;4)=""2300""" .FormatConditions(2).Interior.ColorIndex = 4 'Hellgrün End With End SubZu Frage 2 : Wenn bei Ausführung des Makros ein anderer Bereich/Zelle markiert ist, dann werden die Zellbezüge wie relative Bezüge umgerechnet. Daher ist es sinnvoller, den relevanten Bereich im Makro gleich zu markieren (wie oben bereits geschehen !).
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: André
Geschrieben am: 21.01.2010 11:40:07
Moin Wolfgang,
muß es mit VBA sien, oder geht auch eine Bedingte Formattierung?
Markiere einfach die Zellen A1:B4 und erstelle eine neue Bedingte Regel als Formel:
=LINKS($A1;3)="999"Gruß, André
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: JoWE
Geschrieben am: 21.01.2010 11:41:16
Hallo Wolfgang,
zum Beispiel so für den genutzen Bereich:
Sub färben_wenn() For Each z In ActiveSheet.UsedRange If Left(Cells(z.Row, 1), 3) = "999" Then Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 3 End If Next End SubGruß,
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: Wolle
Geschrieben am: 21.01.2010 11:57:39
Ja das geht auch gut, Danke Dir. Was muss ich schreiben, wenn ich zB die 999 in rot haben möchte und die 2300 in Grün?
Geht das?
Danke und Gruß
Wolfgang
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: JoWE
Geschrieben am: 21.01.2010 12:09:44
siehe dazu http://www.mvps.org/dmcritchie/excel/colors.htm
Ror: colorindex = 3
Grün: colorindex = 4
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: Wolle
Geschrieben am: 21.01.2010 12:39:20
Danke Jochen, die Liste hatte ich schon ... habe mich vieleicht etwas falsch ausgedrückt.
ICh möchte 999 in Rot und 2300 in grün. Weiß aber nicht wie ich die die Abfrage in einem Code einbaue.
START
suche 999 und mache rot
suche 2300 und mache grün
ENDE
Geht das?
Danke und Gruß
Wolfgang
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: JoWE
Geschrieben am: 21.01.2010 13:00:09
Wolfgang,
klar geht das:
Sub färben_wenn() For Each z In ActiveSheet.UsedRange Select Case Left(Cells(z.Row, 1), 3) Case Is = "999" Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 3 End Select Select Case Left(Cells(z.Row, 1), 4) Case Is = "2300" Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 4 End Select Next End Sub
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: JoWE
Geschrieben am: 21.01.2010 13:14:29
...und so fort mit immer neuen Bedingungen:
Sub färben_wenn() For Each z In ActiveSheet.UsedRange Select Case Left(Cells(z.Row, 1), 3) * 1 Case Is = 999 Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 3 End Select Select Case Left(Cells(z.Row, 1), 4) * 1 Case Is = 9999 Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 5 Case Is = 2300 Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 4 End Select Select Case Left(Cells(z.Row, 1), 6) * 1 Case Is = 786234 Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 6 End Select Next End Sub
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: Wolle
Geschrieben am: 21.01.2010 14:51:00
Wow. Klasse. Ich danke Dir.
Gruß Wolfgang
Betrifft: AW: Bedingte Formatierung mit Platzhalter
von: Wolle
Geschrieben am: 21.01.2010 15:01:37
Eine Frage hätte ich noch:
Wenn jetzt 999 UND 2300 UND 777 in Farbe 3 sein soll, kann ich dann
Sub färben_wenn() For Each z In ActiveSheet.UsedRange Select Case Left(Cells(z.Row, 1), 3) Case Is = "999" Case Is = "2300" Case Is = "777" Range(Cells(z.Row, 1), Cells(z.Row, 2)).Interior.ColorIndex = 3 End Select Next End Subschreiben. So alle geforderten Zahlen untereinander?
Betrifft: Zellenhintergrund per VBA bedingt einfärben
von: NoNet
Geschrieben am: 21.01.2010 15:53:49
Hallo Jochen,
nein das geht SO nicht !
Wenn Du schon auf die "Bedingte Formatierung" verzichten möchtest und das stattdessen selbst per VBA programmieren möchtest, dann z.B. so :
Sub Zellen_FaerbenWenn() Dim rngZeile As Range, rngZelle As Range For Each rngZeile In ActiveSheet.UsedRange.Rows Set rngZelle = Cells(rngZeile.Row, 1) 'Spalte A zuweisen If rngZelle.Value Like "999*" Or _ rngZelle.Value Like "2300*" Or _ rngZelle.Value Like "777*" Then rngZelle.Resize(, 2).Interior.ColorIndex = 3 End If Next End SubGruß, NoNet
Betrifft: nee
von: JoWE
Geschrieben am: 21.01.2010 15:56:19