Microsoft Excel

Herbers Excel/VBA-Archiv

Bedingte Formatierung mit Platzhalter | Herbers Excel-Forum


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 Sub
Gruß, 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 Sub
Zu 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 !).

Gruß, NoNet


  

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 Sub
Gruß,
Jochen


  

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

Gruß Jochen


  

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

Gruß,
Jochen


  

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 Sub
schreiben. So alle geforderten Zahlen untereinander?

Gruß Wolle


  

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 Sub
Gruß, NoNet


  

Betrifft: nee von: JoWE
Geschrieben am: 21.01.2010 15:56:19




Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung mit Platzhalter"