Felder Einfärben

Bild

Betrifft: Felder Einfärben
von: Ronny
Geschrieben am: 22.04.2015 09:34:23

Ich möchte Felder in verschiedenen Spalten nach verschiedenen Bedingungen einfärben.
In einer Spalte nach einer Bedingung klappt. Aber wie ich das Ausbaue weiss ich nicht.

Dim p, j As Long
For p = 5 To lz                                       
    If Cells(p, 4).Value < 2.0 Then                   
        For j = 4 To 4                                
            Cells(p, j).Select                        
                With Selection.Interior
                    .ColorIndex = 3
                    .Pattern = xlSolid
                End With
        Next
    End If
Next
Nun möchte ich für Spalte D alle Felder mit dem Wert grösser 2.0 und kleiner -2.0 orange einfärben und wenn der Wert grösser 4.0 oder kleiner -4.0 ist dann rot einfärben.
In der Spalte H, L und S möchte ich das gleiche auch machen.
Ev. möchte ich in anderen Spalten nach weiteren Bedingungen Zellen einfärben, weiss ich jedoch noch nicht.
Hat jemand eine Idee wie ich das löse?

Bild

Betrifft: AW: Bedingte Formatierung! oT
von: JoWE
Geschrieben am: 22.04.2015 09:50:30


Bild

Betrifft: AW: Bedingte Formatierung! oT
von: Ronny
Geschrieben am: 22.04.2015 12:52:16
Das ist mir klar, ich möchte das aber per Makro machen da ich eh schon Makros brauche.

Bild

Betrifft: AW: Na, dann mal los! oT
von: JoWe
Geschrieben am: 22.04.2015 13:48:06


Bild

Betrifft: AW: Na, dann mal los! oT
von: Ronny
Geschrieben am: 22.04.2015 14:43:10
Was genau soll mir diese Antwort jetzt bringen?? Willst du etwas damit sagen oder was es bloss ein Kommentar?

Bild

Betrifft: AW: Na, dann mal los! oT
von: JoWE
Geschrieben am: 22.04.2015 19:23:07
Huch, entschuldige.
Mit so einer mimosenhaften Reaktion hatte ich nicht gerechnet.
Aus meiner Sicht ist ein Makro stets Unsinn, wenn Excel eine Tabellenfunktion zur Lösung bereits beinhaltet. Daher meine Antwort verbunden mit dem (!)Ausrufungszeichen zur Signalisierung, dass die Frage wieder offen gestellt ist. Das sollte eine Aufforderung für andere Antworter darstellen, hier andere und bessere Lösungen anzubieten.
Melde mich jetzt erst, weil ich leider nicht wirklich Unmengen an Zeit für dieses tolle Forum habe.
Also nix für Ungut
Jochen

Bild

Betrifft: AW: Felder Einfärben
von: Jannik
Geschrieben am: 22.04.2015 18:03:06
So hier einige Zeilen für dein Problem. Ich denke das ist so aufgebaut, dass du es je nach Bedarf einfach erweitern kannst, wenn noch weitere Farben oder Spalten hinzukommen...

Sub farbe()
Dim p, j As Long, lz As Integer
'ich denke mal mit lz war letztezeile gemeint
lz = Cells(Rows.Count, 1).End(xlUp).Row
'wenn du mehr Spalten einbinden möchtest, füge weitere ElseIfs hinzu und erhöhe den Loop unten
i = 0
Do
i = i + 1
    If i = 1 Then
        spalte = "D"
    ElseIf i = 2 Then
        spalte = "H"
    ElseIf i = 3 Then
        spalte = "L"
    ElseIf i = 4 Then
        spalte = "S"
    End If
        For p = 5 To lz
            If Cells(p, spalte).Value < 2 Then
                        With Cells(p, spalte).Interior
                            .ColorIndex = 3
                            .Pattern = xlSolid
                        End With
            ElseIf Cells(p, spalte).Value > 2 And Cells(p, spalte).Value < 4 _
                Or Cells(p, spalte).Value < -2 And Cells(p, spalte).Value > -4 Then
                        With Cells(p, spalte).Interior
                            .ColorIndex = 4 'die Farben musst du noch zuordnen
                            .Pattern = xlSolid
                        End With
            Else
                        With Cells(p, spalte).Interior
                            .ColorIndex = 5 'die Farben musst du noch zuordnen
                            .Pattern = xlSolid
                        End With
            End If
        Next p
Loop Until i = 4
End Sub


Bild

Betrifft: AW: Felder Einfärben
von: Jannik
Geschrieben am: 22.04.2015 18:03:22
So hier einige Zeilen für dein Problem. Ich denke das ist so aufgebaut, dass du es je nach Bedarf einfach erweitern kannst, wenn noch weitere Farben oder Spalten hinzukommen...

Sub farbe()
Dim p, j As Long, lz As Integer
'ich denke mal mit lz war letztezeile gemeint
lz = Cells(Rows.Count, 1).End(xlUp).Row
'wenn du mehr Spalten einbinden möchtest, füge weitere ElseIfs hinzu und erhöhe den Loop unten
i = 0
Do
i = i + 1
    If i = 1 Then
        spalte = "D"
    ElseIf i = 2 Then
        spalte = "H"
    ElseIf i = 3 Then
        spalte = "L"
    ElseIf i = 4 Then
        spalte = "S"
    End If
        For p = 5 To lz
            If Cells(p, spalte).Value < 2 Then
                        With Cells(p, spalte).Interior
                            .ColorIndex = 3
                            .Pattern = xlSolid
                        End With
            ElseIf Cells(p, spalte).Value > 2 And Cells(p, spalte).Value < 4 _
                Or Cells(p, spalte).Value < -2 And Cells(p, spalte).Value > -4 Then
                        With Cells(p, spalte).Interior
                            .ColorIndex = 4 'die Farben musst du noch zuordnen
                            .Pattern = xlSolid
                        End With
            Else
                        With Cells(p, spalte).Interior
                            .ColorIndex = 5 'die Farben musst du noch zuordnen
                            .Pattern = xlSolid
                        End With
            End If
        Next p
Loop Until i = 4
End Sub


Bild

Betrifft: AW: Felder Einfärben
von: Ronny
Geschrieben am: 22.04.2015 20:42:08
Hallo Jannik
Das funktioniert super. Ich habe kleinere Anpassungen gemacht das es für meine Anwendung passt.
Besten Dank für deine Hilfe! Ist ne tolle Sache!

Bild

Betrifft: AW: Felder Einfärben
von: hary
Geschrieben am: 23.04.2015 07:57:50
Moin Ronny
Was heisst:"kleinere Anpassungen gemacht"?
Hab auch noch was.
Bezogen auf Janniks Loesung:

Dim strSpalte
Dim i As Long
Dim lz As Long
Dim zelle As Range
Dim farbe As Integer
lz = Cells(Rows.Count, 1).End(xlUp).Row
 strSpalte = Split("D,H,L,S", ",") 'hier die Spalten
  For i = LBound(strSpalte) To UBound(strSpalte)
     For Each zelle In Cells(5, strSpalte(i)).Resize(lz - 5, 1)
        If zelle < 2 Then
          farbe = 3
        ElseIf (zelle > 2 And zelle < 4) Or (zelle < -2 And zelle > -4) Then
          farbe = 4
        Else
          farbe = 5
        End If
      zelle.Interior.ColorIndex = farbe
     Next
  Next

Evtl meinst du es auch so!?
Dim strSpalte
Dim i As Long
Dim lz As Long
Dim zelle As Range
Dim farbe As Integer
lz = Cells(Rows.Count, 1).End(xlUp).Row
 strSpalte = Split("D,H,L,S", ",")
  For i = LBound(strSpalte) To UBound(strSpalte)
     For Each zelle In Cells(5, strSpalte(i)).Resize(lz - 5, 1)
     Select Case Abs(zelle)
       Case Is < 2: farbe = 3
       Case Is < 4: farbe = 4
       Case Else: farbe = 5
     End Select
      zelle.Interior.ColorIndex = farbe
     Next
  Next
End Sub

gruss hary

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Felder Einfärben"