VBA farbige Zellen vergleichen

mckodee

Newbie
Registriert
Apr. 2012
Beiträge
2
Hallo zusammen,

ich habe eine Herausforderung in VBA, bin blutiger Anfänger und hoffe ihr könnt mir helfen.

Ich habe eine Soll und eine Ist Tabelle. Vom Aufbau sind beide identisch. Nun sind aber in der Soll-Tabelle bestimmte Zellen rot eingefärbt. Die Zellenfarbe sollen nun per Makro in die IST-Tabelle übernommen werden. Also wenn D4 in der Soll-Tabelle rot ist, dann soll sie auch in der IST-Tabelle rot werden.

Nun sollen noch die Werte der roten Zellen miteinander verglichen werden. Sollte ein "roter" Wert in der IST-Tabelle gößer sein, als in der Soll-Tabelle, dann wird diese Zelle zu grün.

Die Farbe und die Bezeichnung aus der entsprechenden A-Spalte sollen in eine neue Tabelle geschrieben werden.

Mein Code sieht bisher so aus, aber ich komme einfach nicht weiter:
Code:
Private Sub cmdAktualisieren_Click() 
  
    Sheets("Matrix-Soll").Range("D7:AJ40").Copy 
    Sheets("Matrix-Ist").Range("D7").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ 
        SkipBlanks:=False, Transpose:=False 

    Dim Soll As Range 
    Dim Ist As Range 
    For Each Soll In Sheets("Matrix-Soll").Range("D7:AJ40") 
        For Each Ist In Sheets("Matrix-Ist").Range("D7:AJ40") 
            If Soll < Ist Then Ist.Interior.ColorIndex = 43 
        Next Ist 
    Next Soll 


End Sub

Vielen Dank für eure Zeit.
 
Code:
[LIST=1]
[*]Private Sub cmdAktualisieren_Click()
[*]    Sheets("Matrix-Soll").Range("D7:AJ40").Copy
[*]    Sheets("Matrix-Ist").Range("D7").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
[*]        SkipBlanks:=False, Transpose:=False
[*]    Dim Soll As Range
[*]    Dim Ist As Range
[*]    For Each Soll In Sheets("Matrix-Soll").Range("D7:AJ40")
[*]        For Each Ist In Sheets("Matrix-Ist").Range("D7:AJ40")
[*]            If Soll < Ist Then Ist.Interior.ColorIndex = 43
[*]            Else If Soll.Interior.ColorIndex = ROT Then
[*]                 Ist.Interior.ColorIndex = ROT
[*]            End If
[*]        Next Ist
[*]    Next Soll
[*]End Sub
[/LIST]
Also getestet hab ich es jetzt nicht aber sollte eigentlich funzen. Also Soll.Cells(x,y).Interior.Index sollte es wahrscheinlich jeweils heißen.

Ach ja für ROT musst du natürlich den ROT Code verwenden den kenn ich leider nicht auswendgi
 
Zuletzt bearbeitet:
Habe den Code ein wenig geändert:

Code:
Private Sub cmdAktualisieren_Click()

Sheets("Matrix-Ist").Range("D7:AJ40").Interior.ColorIndex = 0
Sheets("Matrix-Soll").Range("D7:AJ40").Copy
Sheets("Matrix-Ist").Range("D7").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False

Application.Goto (ActiveWorkbook.Sheets("Matrix-Ist").Range("D7"))


Dim TSoll As Range
Dim TIst As Range
For Each TSoll In Sheets("Matrix-Soll").Range("D7:AJ40")
    For Each TIst In Sheets("Matrix-Ist").Range("D7:AJ40")
        If TIst.Interior.ColorIndex = 3 Then
        If TIst > TSoll Then TIst.Interior.ColorIndex = 43

        End If
    Next TIst
Next TSoll

End Sub

Ich bekomme nun die richtigen Zellen eingefärbt, aber der Vergleich klappt noch nicht. Excel soll mir in Tabelle TIst nur die Zellen grün machen, welche einen größeren Wert haben als die in TSoll.

Wäre euch für einen Tipp dankbar.
 
Zuletzt bearbeitet:
Du musst von TIst und TSoll die .Value-Eigenschaft für den Vergleich verwenden, schließlich hast du in der Schleife ja das Cells-Objekt und nicht direkt den Wert der Zelle, andernfalls könntest du ja auch nicht die .Interior-Eigenschaft abfragen.
 
Zurück
Oben