Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Gezielte Änderung des Interior.ColorIndex
#11
Ja, für dieses (praxisfremde) Beispiel hast Du natürlich Recht.
Bis zu meiner Antwort #6 musste ich von einer "normalen" Tabelle ausgehen.
Meine Arbeitstabellen haben sämtlich Überschriften.
Insofern sehe mein Intersect()-Beispiel als praxisgerechte Variante, um die Überschrift auszuschließen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#12
@Hallo Andre,

also ich weiß nicht wie du deinen Code gemeint hast.

'Zelleinfärbung
Range("A1:A5").Interior.ColorIndex = 10 'Zum Test
'doch  mit
Range("A1:A10").Interior.ColorIndex = Range("A1:A11").Interior.ColorIndex + 5 * ((Range("a1").Interior.ColorIndex <> -4142) * -1)
gibt es keine selektive Auswahl und die Zelleinfärbungen verschwinden komplett.
Antworten Top
#13
Hallöchen,

Du hattest am Anfang geschrieben, dass Du nur die Zellen in den Colorindex 20 umfärben willst, die schon mit dem Colorindex 15 gefärbt sind.

Mein Code zeigt ein Prinzip, wie man das angehen kann. Allerdings weiß ich nicht, wieso das erst funktioniert hat und heute nicht. Ich habe das paar mal durchlaufen lassen weil ich mich anfangs selber gewundert hatte.

Hier mal eine Variante mit Schleife, außer der Wertung Smile :
Sub test2()
Dim iCnt%
Range("A1:A10").Interior.ColorIndex = xlNone
Range("A1:A5").Interior.ColorIndex = 15
For iCnt = 1 To 10
Cells(iCnt, 1).Interior.ColorIndex = Cells(iCnt, 1).Interior.ColorIndex + 5 * ((Cells(iCnt, 1).Interior.ColorIndex = 15) * -1)
Next
End Sub
Damit würde jede Zelle einzeln gefärbt. Gibt aber besseres, wie im Thread schon zu lesen war - Filtern nach Farbe und dann die sichtbaren ändern.

Hier mal das mit dem Farbfilter in der "intelligenten" Tabelle. Ich habe zum Test eine Tabelle im Bereich A1:B6 erstellt, mit Überschriften.

Code:
Sub test()
'Zellen einfaerben
Cells(3, 1).Interior.ColorIndex = 15
Cells(5, 1).Interior.ColorIndex = 15
'Mit der Tabelle 1
With ActiveSheet.ListObjects("Tabelle1")
    'Filter aktivieren
    .Range.AutoFilter
    'nach Farbe 15 filtern
    .Range.AutoFilter Field:=1, Criteria1:=RGB(192, 192, 192), Operator:=xlFilterCellColor
    'alle sichtbaren Zellen färben - Überschrift wird nicht beruecksichtigt
    .DataBodyRange.SpecialCells(xlCellTypeVisible).Interior.ColorIndex = 20
    'Filter deaktivieren
    .Range.AutoFilter
'Ende Mit der Tabelle 1
End With
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste