Zeilen nach Bedingung Farbig

nach unten

Betrifft: Zeilen nach Bedingung Farbig
von: Dom
Geschrieben am: 04.08.2021 15:36:49

Hallo Zusammen,
ich habe eine Tabelle mit 9 Spalten:
Pro | Name | ID | App | DOC | CR | Version | VF | GNC

es soll, wenn in der Spalte G (Version) der Wert 1.0 steht, die Spalte F (CR) sowie Spalte G (Version) für alle Zeilen der Inhalt mit grüner Textfarbe geändert werden.
also wenn in Spalte G der Wert 1.0 steht dann ändere die Schriftfarbe, der Werte in den Zeilen, für Spalte G und F auf grün.
vielen Dank im Voraus

nach oben  nach unten

Betrifft: AW: nutze die bedingte Formatierung ...
von: neopa C
Geschrieben am: 04.08.2021 15:43:17

Hallo Dom,
... mehr dazu findest Du z.B. hier: https://www.online-excel.de/excel/singsel.php?f=74 und ff.
Gruß Werner
.. , - ...

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: SF
Geschrieben am: 04.08.2021 15:43:53

Hola,
als Formel in der bedingten Formatierung:
=$G2="1.0"
Gruß,
steve1da

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom
Geschrieben am: 04.08.2021 16:07:54

Danke für den Link
ich hab das Mal versucht zu schreiben nur es klappt leider nicht :(
Sub Version()

Dim lngZeile As Long
Dim lngZeileMax As Long

With Sheet1

lngZeileMax = .Range("G" & .Rows.Count).End(xlUp).Row

For lngZeile = 4 To lngZeileMax

    If .Range("G" & lngZeile).Value = "1.0" Then
    .Rows(lngZeile).Font.Color = -11480942
    
    End If

Next lngZeile

End With

End Sub

nach oben  nach unten

Betrifft: und warum nicht mit bedingter Formatierung? o.w.T.
von: Werner
Geschrieben am: 04.08.2021 16:16:06



nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Charly CNX
Geschrieben am: 05.08.2021 09:48:04

Hi Dom
Meine VBA Kenntnisse sind zwar sehr bescheiden, aber versuch mal so.
Bereich kannst du ja anpassen.
Sub Test_Version()

Dim cell As Object
Application.ScreenUpdating = False
    With Sheets(1)
    
        For Each cell In .Range("G4:G" & .Cells(Rows.Count, 7).End(xlUp).Row)
            If .Range(.Cells(cell.Row, 1), .Cells(cell.Row, 26)).Interior.Color = -11480942 Then
                .Range("A4:Z" & .Cells(Rows.Count, 7).End(xlUp).Row).Interior.Color = xlNone
            End If

            If cell = "1.0" Then .Range(.Cells(cell.Row, 1), .Cells(cell.Row, 26)).Interior.Color = -11480942
        Next cell
        
    End With
End Sub
Gruß Charly

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre
Geschrieben am: 05.08.2021 10:20:43

Hallo Dom,
1.
With Sheet1
heißt

With Sheets(1)
2. willst du nun die gesamte Zeile grün haben oder nur F & G?
Wenn du die gesamte Zeile färben willst, dann würde der Code an sich bis auf die Änderung unter 1. passen. Wenn wirklich nur F & G gefärbt werden sollen, dann brauchst du noch eine weitere kleine Anpassung:
If .Range("G" & lngZeile).Value = "1.0" Then
.Rows(lngZeile).Font.Color = -11480942
wird zu:
If .Range("G" & lngZeile).Value = "1.0" Then
.Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11480942
3. würde ich vielleicht noch ein ElseIf einbauen, damit die Schriftfarbe wieder schwarz wird, wenn der Eintrag 1.0 aus Spalte G gelöscht bzw. verändert wird. Ist das gewünscht? Wenn ja, dann einfach nach deinem If-Block nochmal den Gleichen mit ElseIf einfügen, nur hier nicht Value = sondern Value <>. Hier natürlich den Colorcode ändern.
Gruß Pierre
PS: Nächstes Mal vielleicht direkt mitteilen, dass du die Sache gerne über VBA lösen willst ;-)

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom
Geschrieben am: 06.08.2021 10:50:44

Hallo erstmal Danke das klappt soweit :)
jetzt habe ich noch ein Frage:
in meiner Tabelle in Spalte F steht cancelled: mit unterschiedlichem Text
Jedes Mal wenn in der Zeile das Keywort cancelled steht soll die Formatierung durchgeführt werden.
Nur wie schreib ich das in den Code ?
Beispiel :
cancelled: obsolete
cancelled: obsolete, replaced
cancelled: ....
Sub Version()

Dim lngZeile As Long
Dim lngZeileMax As Long

With Sheets(1)

lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

For lngZeile = 1 To lngZeileMax

    If .Range("F" & lngZeile).Value = "*??????cancelled*????" Then
    .Range("F" & lngZeile, "G" & lngZeile).Font.Colorindex = 3
    End If
    
Next lngZeile

End With

End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: GerdL
Geschrieben am: 06.08.2021 11:15:01

Moin,
zwei der Möglichkeiten:
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
If Instr(.Cells(lngZeile, 6), "cancelled") > 0 Then 
Gruß Gerd

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom
Geschrieben am: 06.08.2021 11:26:15

Danke :)
wie kann ich die beiden Sub's in eine schreiben ?
Wenn in der Spalte 7, in den Zeilen "1.0" steht dann wird der Text in Spalte 6 und 7 grün formatiert.
Wenn in der Spalte 6 das KeyWort cancelled steht dann wird der Text in Spalte 6 und 7 rot formatiert.
Sub Version()

Dim lngZeile As Long
Dim lngZeileMax As Long

With Sheets(1)

lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

For lngZeile = 1 To lngZeileMax

    If .Cells(lngZeile, 7).Value Like "1.0" Then
    .Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11489280
    End If
    
Next lngZeile

End With

End Sub
Sub Version2()

Dim lngZeile As Long
Dim lngZeileMax As Long

With Sheets(1)

lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

For lngZeile = 1 To lngZeileMax

    If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
    .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
    End If
    
Next lngZeile

End With

End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre
Geschrieben am: 06.08.2021 11:35:47

Hallo Dom,
ohne Test, sollte aber gehen:
If .Cells(lngZeile, 7).Value Like "1.0" Then
    .Range("F" & lngZeile, "G" & lngZeile).Font.Color = -11489280
    If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
    .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
End If
End If
Das muss in deinem 1. Code zwischen die For-Next-Schleife, der Rest bleibt so stehen wie es ist.
Übrigens würde ich persönlich mich für eines entscheiden, entweder Color oder ColorIndex ;-)
Möchtest du meinen Vorschlag bzgl. Farblöschung nicht umsetzen? Musst du natürlich auch nicht, ich sehe diesen nur nicht in deinem Code.
Gruß Pierre

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Dom
Geschrieben am: 06.08.2021 12:46:35

Danke Pierre :)
das mit dem ifelse klappt noch nicht. Bekomme einen compile Fehler <>
Sub formatierung()

Dim lngZeile As Long
Dim lngZeileMax As Long

With Sheets(1)

lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

For lngZeile = 1 To lngZeileMax

If .Cells(lngZeile, 7).Value Like "1.0" Then

    .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 10
    
ifElse

.Cells(lngZeile, 7).Value <> "1.0" Then

.Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1

End If

        If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
            .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3
            .Range("B" & lngZeile).Font.ColorIndex = 3
    
        End If

Next lngZeile

End With

End Sub

nach oben  nach unten

Betrifft: AW: Zeilen nach Bedingung Farbig
von: Pierre
Geschrieben am: 06.08.2021 13:05:32

Wie kommst du darauf, den Code so aufzubauen? o.O
  
Sub Version()
  
Dim lngZeile As Long
Dim lngZeileMax As Long
  
With Sheets(1)
  
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
  
For lngZeile = 1 To lngZeileMax
  
    If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
     .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3  'rot
    ElseIf .Cells(lngZeile, 6).Value <> "*cancelled*" Then
     .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
        If .Cells(lngZeile, 7).Value Like "1.0" Then
         .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 43  'grün!
        ElseIf .Cells(lngZeile, 7).Value <> "1.0" Then
          .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
         End If
    End If
      
Next lngZeile
  
End With
  
End Sub
Versuch es so. Für mich übersichtlicher ist es (da der Code ja nun keine 100.000 Zeilen hat), die If-Blöcke zu trennen:
Würde dann so aussehen:
 
If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
   .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 3  'rot
    ElseIf .Cells(lngZeile, 6).Value <> "*cancelled*" Then
 .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
End If

If .Cells(lngZeile, 7).Value Like "1.0" Then
       .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 43  'grün!
    ElseIf .Cells(lngZeile, 7).Value <> "1.0" Then
 .Range("F" & lngZeile, "G" & lngZeile).Font.ColorIndex = 1 'schwarz!
End If

Ob das jetzt mit den Jokern und dem Like funktioniert, weiß ich nicht, habe ich nicht getestet!
Gruß Pierre
PS: Das heißt, wie du fett gedruckt sehen kannst, ElseIf und nicht IfElse!

nach oben  nach unten

Betrifft: noch etwas:
von: Pierre
Geschrieben am: 06.08.2021 13:08:39

Entscheide dich am Besten für entweder
Cells(lngZeile, 6)
ODER

Range("F" & lngZeile)
Ich bin nur zu faul, das für dich zu ändern ;-)

nach oben  nach unten

Betrifft: AW: Schrift in Zellen nach Bedingung farbig
von: GerdL
Geschrieben am: 06.08.2021 13:59:22

Moin
Sub Unit()
  
  
    Dim lngZeile As Long
      
    
    With Sheets(1)
          
          .Columns("F:G").Font.ColorIndex = 1
          
          For lngZeile = 1 To Application.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, .Cells(.Rows.Count, 7).End(xlUp).Row)
            
                  If .Cells(lngZeile, 6).Value Like "*cancelled*" Then
                                .Cells(lngZeile, 6).Resize(1, 2).Font.ColorIndex = 3
                      
                  ElseIf .Cells(lngZeile, 7).Text = "1.0" Then
                                .Cells(lngZeile, 6).Resize(1, 2).Font.Color = -11480942
                  End If
          
          Next lngZeile
    
    End With
  
  
End Sub
Gruß Gerd

Excel-Beispiele zum Thema "Zeilen nach Bedingung Farbig"