killtec
Goto Top

Bedingte Formatierung Excel 2010 via Makro greift nicht bzw. ist falsch

Hallo zusammen,
ich habe ein Makro welches eine Bedingte Formatierung anwendet. Jetzt habe ich das Problem, das wenn ich das Makro laufen lasse, der zweite Bereich der bedingten Formatierungen nicht korrekt angewendet wird. Die Zellen werden also falsch eingefärbt.
Gebe ich die Bedingte Formatierung mit den selben Formeln per Hand ein, ist es ok.
Hier ist mein Code:
'Formatierung zurück setzen  
    Range("E3:E19").Select  
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
'Anwenden der Bedingten Formatierung  
'Bereich E3,E10,E11,E15,E18 und E19  
    strRange = "$E$3,$E$10,$E$11,$E$15,$E$18:$E$19"  
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=D3<(C3*0,9)")  
        .Font.Color = RGB(255, 255, 255) 'Weiß  
        .Interior.Color = RGB(255, 0, 0) 'Rot  
    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=UND(D3<C3;D3>=(C3*0,9))")  
        .Font.Color = RGB(0, 0, 0) ' schwarz  
        .Interior.Color = RGB(255, 255, 0) 'Gelb  
    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=UND(D3>=C3;D3<(C3*1,1))")  
        .Font.Color = RGB(0, 0, 0) 'schwarz  
        .Interior.Color = RGB(0, 255, 0) 'Grün  
    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=D3>=(C3*1,1)")  
        .Font.Color = RGB(255, 255, 255) 'weiß  
        .Interior.Color = RGB(0, 0, 255) ' Blau  
    End With

'Anwenden der Bedingten Formatierung der restlichen Bereiche  

    strRange = "$E$4,$E$5,$E$6,$E$7,$E$8,$E$9,$E$12,$E$13,$E$14,$E$16,$E$17"  
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=D3<(C3*0,9)")  
        'blau  
        .Font.Color = RGB(255, 255, 255) 'weiß  
        .Interior.Color = RGB(0, 0, 255) ' Blau  

    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=UND(D3<C3;D3>=(C3*0,9))")  
        'grün  
        .Font.Color = RGB(0, 0, 0) 'schwarz  
        .Interior.Color = RGB(0, 255, 0) 'Grün  

    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=UND(D3>=C3;D3<(C3*1,1))")  
        'gelb  
        .Font.Color = RGB(0, 0, 0) ' schwarz  
        .Interior.Color = RGB(255, 255, 0) 'Gelb  
    End With
    
    With Sheets(strSheet).Range(strRange).FormatConditions.Add(xlExpression, Formula1:="=D3>=(C3*1,1)")  
        'rot  
        .Font.Color = RGB(255, 255, 255) 'Weiß  
        .Interior.Color = RGB(255, 0, 0) 'Rot  
    End With

Gruß

Content-Key: 257714

Url: https://administrator.de/contentid/257714

Printed on: April 24, 2024 at 20:04 o'clock

Mitglied: 114757
114757 Dec 16, 2014 updated at 08:30:58 (UTC)
Goto Top
Moin,
meist liegt das an der falschen Reihenfolge oder an sich überschneidenden Formeln der bedingten Formatierungen ! Und verwende besser feste Zellbezüge($) in den Formeln wenn diese sich nicht ändern sollen.

Gruß jodel32
Mitglied: 116301
116301 Dec 16, 2014 updated at 10:32:12 (UTC)
Goto Top
Hallo killtec!

Versuchs mal so:
    Sheets(strSheet).Range("E3:E19").FormatConditions.Delete  

   'Anwenden der Bedingten Formatierung  
   'Bereich E3,E10,E11,E15,E18 und E19  
    strRange = "$E$3,$E$10,$E$11,$E$15,$E$18:$E$19"  
    
    For Each objCell In Sheets(strSheet).Range(strRange)
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D3<(C3*0,9)")  
            .Font.Color = RGB(255, 255, 255) 'Weiß  
            .Interior.Color = RGB(255, 0, 0) 'Rot  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=UND(D3<C3;D3>=(C3*0,9))")  
            .Font.Color = RGB(0, 0, 0) ' schwarz  
            .Interior.Color = RGB(255, 255, 0) 'Gelb  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=UND(D3>=C3;D3<(C3*1,1))")  
            .Font.Color = RGB(0, 0, 0) 'schwarz  
            .Interior.Color = RGB(0, 255, 0) 'Grün  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D3>=(C3*1,1)")  
            .Font.Color = RGB(255, 255, 255) 'weiß  
            .Interior.Color = RGB(0, 0, 255) ' Blau  
        End With
    Next
    
   'Anwenden der Bedingten Formatierung der restlichen Bereiche  

    strRange = "$E$4,$E$5,$E$6,$E$7,$E$8,$E$9,$E$12,$E$13,$E$14,$E$16,$E$17"  
    
    For Each objCell In Sheets(strSheet).Range(strRange)
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D3<(C3*0,9)")  
            'blau  
            .Font.Color = RGB(255, 255, 255) 'weiß  
            .Interior.Color = RGB(0, 0, 255) ' Blau  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=UND(D3<C3;D3>=(C3*0,9))")  
            'grün  
            .Font.Color = RGB(0, 0, 0) 'schwarz  
            .Interior.Color = RGB(0, 255, 0) 'Grün  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=UND(D3>=C3;D3<(C3*1,1))")  
            'gelb  
            .Font.Color = RGB(0, 0, 0) ' schwarz  
            .Interior.Color = RGB(255, 255, 0) 'Gelb  
        End With
        
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D3>=(C3*1,1)")  
            'rot  
            .Font.Color = RGB(255, 255, 255) 'Weiß  
            .Interior.Color = RGB(255, 0, 0) 'Rot  
        End With
    Next

Grüße Dieter

[edit] Codezeile 1 geändert (Sheet vergessen) [/edit]
Member: killtec
killtec Dec 16, 2014 at 09:13:31 (UTC)
Goto Top
Das Script hilft / ändert leider nichts.
Die Reinfolge ist soweit richtig angewendet.

Gruß
Mitglied: 116301
116301 Dec 16, 2014 at 10:44:56 (UTC)
Goto Top
Hallo killtec !

Versuchs nochmal, hatte in Codezeile 1 (oben geändert) die Sheet-Angabe vergessenface-sad

Grüße Dieter
Member: killtec
killtec Dec 22, 2014 at 07:57:28 (UTC)
Goto Top
Hi, das hat leider nicht geholfen.
Ich glaube das ist ein generelles Excel Problem.

Schöne Weihnachten.
Member: killtec
killtec Jan 16, 2015 at 08:18:20 (UTC)
Goto Top
Hi,
so, da Makro funktioniert nun. Der Fehler liegt im Detail:
Falsch:
 strRange = "$E$4,$E$5,$E$6,$E$7,$E$8,$E$9,$E$12,$E$13,$E$14,$E$16,$E$17"  
    
    For Each objCell In Sheets(strSheet).Range(strRange)
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D3<(C3*0,9)")  

richtig:
 strRange = "$E$4,$E$5,$E$6,$E$7,$E$8,$E$9,$E$12,$E$13,$E$14,$E$16,$E$17"  
    
    For Each objCell In Sheets(strSheet).Range(strRange)
        With objCell.FormatConditions.Add(xlExpression, Formula1:="=D4<(C4*0,9)")  

Die Formel muss auch beim ersten Punkt der Range anfangen. (Bin ich durch Zufall drauf gekommen....)

Gruß