Farbteppich über nicht ausgeblendeten Bereich

Bild

Betrifft: Farbteppich über nicht ausgeblendeten Bereich
von: Peter
Geschrieben am: 21.04.2015 17:38:18

Guten Tag
Mit nachfolgendem Code lege ich einen Farbteppich über die selektierten Zellen.
Nun möchte ich einen weiteres Makro, das mir im selektierten Bereich nur die eingeblendeten Zellen einfärbt.
Ich habe mir folgenden Lösungsansatz überlegt:
Zuweisung der nicht ausgeblendeten Zeilennummern des selektierten Bereichs an eine Variable
Zusätzlich die Farben 0-2-4-6 logisch in dieser Variable "verknüpfen" (die Zeilen 1-3-5 werden nicht eingefärbt)
dann die entsprechenden Zeilen, im Bereich der Selektion, einfärben.
Kann mir da jemand weiterhelfen - oder auf einen besseren Lösungsansatz hinweisen?
Danke und Gruss, Peter

Sub Farbteppich_Selection()
Dim rCell As Range, rBereich As Range
Set rBereich = Selection
      For Each rCell In rBereich
        Select Case rCell.Row Mod 6
             Case 2:     rCell.Interior.Color = 14994616     '''' hell-blaue Füllung
             Case 4:     rCell.Interior.Color = 10092543    ''' hell-gelbe Füllung
             Case 0:     rCell.Interior.Color = 11851260    ''' hell-braune Füllung
             Case Else:  rCell.Interior.Color = xlNone
            End Select
    Next
    'On Error GoTo 0
End Sub

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Michael
Geschrieben am: 21.04.2015 17:48:25
Hallo Peter,
Du fragst nach "hidden" ab:


    For Each rCell In rBereich
        If Not (rCell.Rows.Hidden Or rCell.Columns.Hidden) Then
        Select Case rCell.Row Mod 6
             Case 2:     rCell.Interior.Color = 14994616     '''' hell-blaue Füllung
             Case 4:     rCell.Interior.Color = 10092543    ''' hell-gelbe Füllung
             Case 0:     rCell.Interior.Color = 11851260    ''' hell-braune Füllung
             Case Else:  rCell.Interior.Color = xlNone
            End Select
        End If
    Next
Schöne Grüße,
Michael

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Nepumuk
Geschrieben am: 21.04.2015 17:49:41
Hallo,
so:

Option Explicit

Public Sub Farbteppich_Selection()
    Dim rCell As Range
    For Each rCell In Selection.SpecialCells(xlCellTypeVisible)
        Select Case rCell.Row Mod 6
            Case 2: rCell.Interior.Color = 14994616 '''' hell-blaue Füllung
            Case 4: rCell.Interior.Color = 10092543 ''' hell-gelbe Füllung
            Case 0: rCell.Interior.Color = 11851260 ''' hell-braune Füllung
            Case Else: rCell.Interior.Color = xlNone
        End Select
    Next
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Peter
Geschrieben am: 22.04.2015 11:47:38
Hallo zusammen
Vielen Dank.
Ich habe in meinem Beitrag nicht ganz klar formuliert, was das Ziel ist. Dies ist aus der hochgeladenen Datei ersichtlich.
https://www.herber.de/bbs/user/97227.htm
Anwendungszweck:
Ich habe eine Liste, die ich nach unterschiedlichen Kriterien filtere. Anschliessend lege ich das Farbmuster über die gefilterte Liste. Dieser Farbteppich sollte dann immer gleich aussehen - egal welche Zeilen ausgeblendet sind.
Ist das möglich?
Grus, Peter

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Nepumuk
Geschrieben am: 22.04.2015 14:09:54
Hallo,
teste mal:

Public Sub Farbteppich_Selection()
    Dim objCell As Range, lngRow As Long, lngIndex As Long
    With Selection
        For lngRow = 1 To .Rows.Count
            If Not .Rows(lngRow).Hidden Then
                lngIndex = lngIndex + 1
                Select Case lngIndex Mod 6
                    Case 2: .Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 14994616 ''' hell-blaue Füllung
                    Case 4: .Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 10092543 ''' hell-gelbe Füllung
                    Case 0: .Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 11851260 ''' hell-braune Füllung
                    Case Else: .Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = xlNone ''' keine Füllung
                End Select
            End If
        Next
    End With
End Sub

Das sollte erheblich schneller sein als dein alter Code da ich nur die Zeilen durchlaufe und nicht die Spalten. Hat aber den Nachteil dass ausgeblendete Spalten, so es sie gibt, auch eingefärbt werden.
Gruß
Nepumuk

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Peter
Geschrieben am: 22.04.2015 14:31:49
Hallo Nepumuk
Danke. Das geht wirklich sehr schnell! Und es gibt mir auch eine Idee, wie ich meine gefilterten Daten doch noch so eingefärbt haben könnte, wie ich mir das vorstelle.
Allerdings stimmen die Bereiche noch nicht ganz
Wenn ich Q3:V9 selektiere und den Code laufen lasse, wird AG6:AL10 eingefärbt.
Gruss, Peter

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Nepumuk
Geschrieben am: 22.04.2015 14:54:47
Hallo,
mein Fehler, der Bezugspunkt vor Range muss weg:

Option Explicit

Public Sub Farbteppich_Selection()
    Dim objCell As Range, lngRow As Long, lngIndex As Long
    With Selection
        For lngRow = 1 To .Rows.Count
            If Not .Rows(lngRow).Hidden Then
                lngIndex = lngIndex + 1
                Select Case lngIndex Mod 6
                    Case 2: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 14994616 ''' hell-blaue Füllung
                    Case 4: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 10092543 ''' hell-gelbe Füllung
                    Case 0: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = 11851260 ''' hell-braune Füllung
                    Case Else: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior.Color = xlNone ''' keine Füllung
                End Select
            End If
        Next
    End With
End Sub

Gruß
Nepumuk

Bild

Betrifft: AW: perfekt, Danke (owT)
von: Peter
Geschrieben am: 22.04.2015 15:06:40


Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Peter
Geschrieben am: 22.04.2015 16:18:41
Hallo Nepumuk
So habe ich das Problem mit den ausgeblendeten Zeilen gelöst - damit der Farbteppich so aussieht, also gäbe es die ausgeblendeten Zeilen gar nicht.
Gruss, Peter

Public Sub Farbteppich_Selection_nur_gefilterte_Zeilen()
    Dim objCell As Range, lngRow As Long, lngIndex As Long, lngNotHidden As Long
    lngNotHidden = 0
    With Selection
        For lngRow = 1 To .Rows.Count
        
            If Not .Rows(lngRow).Hidden Then
            lngNotHidden = lngNotHidden + 1
                lngIndex = lngIndex + 1
                Select Case lngNotHidden Mod 6
                    Case 2: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior. _
Color = 14994616 ''' hell-blaue Füllung
                    Case 4: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior. _
Color = 10092543 ''' hell-gelbe Füllung
                    Case 0: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)).Interior. _
Color = 11851260 ''' hell-braune Füllung
                    Case Else: Range(.Cells(lngRow, 1), .Cells(lngRow, .Columns.Count)). _
Interior.Color = xlNone ''' keine Füllung
                End Select
            End If
        Next
    End With
End Sub


Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Nepumuk
Geschrieben am: 22.04.2015 16:42:13
Hallo,
außer einer zusätzlichen Variablen die du mitschleppst sehe ich keinen Unterschied lngIndex und lngNotHidden haben den selben Wert.
Gruß
Nepumuk

Bild

Betrifft: AW: Farbteppich über nicht ausgeblendeten Bereich
von: Peter
Geschrieben am: 22.04.2015 16:43:12
.. habe auch gerade gemerkt, dass ich einem Irrtum erlegen bin. Sorry.
Gruss, Peter

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Farbteppich über nicht ausgeblendeten Bereich"