Farben in einer Spalte vergleichen

Bild

Betrifft: Farben in einer Spalte vergleichen
von: Bernd
Geschrieben am: 12.02.2005 20:28:00
Liebe Excelfreunde,
ich suche schon verzweifelt in den Archiven, habe aber nichts passendes gefunden. Vor ein paar Tagen habe ich ein paar Tipps bekommen, konnte aber nichts davon umsetzen. Vielleicht kann mir jemand helfen. Ich möchte dass in einem definierten Bereich jede Zelle in einer Spalte nach dem Farbindex in der Weise verglichen wird, ob in dieser Spalte noch einmal der gleiche Farbwert vorkommt, wenn ja, dann soll die Spalte markiert wird und wenn nein, dann soll die nächste Spalte untersucht werden.

Bild

Betrifft: AW: Farben in einer Spalte vergleichen
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 20:37:28
Hallo Bernd!
Vielleicht so!

Sub vergleichSpalteFarbe()
Dim iCol As Integer
Dim lRow As Long, lastRow As Long
Dim tmp As String
lastRow = 1000 'lezte Zeile die durchsucht wird
   For iCol = 1 To 256
   
      For lRow = 1 To lastRow
      
         If InStr(1, tmp, Cells(lRow, iCol).Interior.ColorIndex) > 0 Then
            Range(Cells(1, iCol), Cells(lastRow, iCol)).Select
            Exit Sub
         End If
      
         If Cells(lRow, iCol).Interior.ColorIndex <> xlNone Then
         tmp = tmp & Cells(lRow, iCol).Interior.ColorIndex
         End If
      
      Next
   
   Next
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: Korrektur!
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 20:38:40
Hallo Bernd!
Kleine Korrektur!

Sub vergleichSpalteFarbe()
Dim iCol As Integer
Dim lRow As Long, lastRow As Long
Dim tmp As String
lastRow = 1000 'lezte Zeile die durchsucht wird
   For iCol = 1 To 256
   
      For lRow = 1 To lastRow
      
         If InStr(1, tmp, Cells(lRow, iCol).Interior.ColorIndex) > 0 Then
            Range(Cells(1, iCol), Cells(lastRow, iCol)).Select
            Exit Sub
         End If
      
         If Cells(lRow, iCol).Interior.ColorIndex <> xlNone Then
         tmp = tmp & Cells(lRow, iCol).Interior.ColorIndex
         End If
      
      Next
      
   tmp = vbNullString
   
   Next
End Sub


Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Korrektur!
von: Bernd
Geschrieben am: 12.02.2005 20:48:12
Liieber Sepp,
zuerstmal vielen Dank für Deinen schnellen Support, aber das Makro läuft die Spalten nicht durch, egal ob in der Spalte doppelte Farben sind oder nicht ?
Woran kann es liegen ?
Bild

Betrifft: AW: Korrektur!
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 20:55:15
Hallo Bernd!
Also der Code läuft sicher.
Die Farben sind aber schon mit der Hand formatiert?
Oder vielleicht mit bedingter Formatierung?
Wo hast du den Code den hinkopiert?

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Korrektur!
von: Bernd
Geschrieben am: 12.02.2005 21:01:21
Die Farben entsprechen den 56 Farben, die Excel als Füllung (genauer von Index 3 - Index 53)anbietet. Also nichts mit bedingter Formatierung.
Kopiert habe ich den Code in ein Modul. Das Makro markiert beim Ablauf genau die ersten zwei Spalten unabhängig ob gleiche Farben enthalten sind oder nicht. Versuche Deinen Code zu entschlüsseln, aber soweit reichen meine Kenntniss in VBA nicht.
Danke für Deine Hilfe!
Bild

Betrifft: AW: Korrektur!
von: Josef Ehrensberger
Geschrieben am: 12.02.2005 21:07:57
Hallo Bernd!
Ich hab's gerade nochmal probiert, sogar mit verbundenen Zellen, und
es läuft bei mir ohne Probleme!
Der Code ist nicht schwer zu verstehen.
Er durchläuft in jeder Spalte die Zeilen von 1 bis "lastrow" und
schreibt den Farbwert der Füllung in einen String.
Der String wird mit "Instr" durchsucht, ob der Farbwert der gerade
durchlaufenen Zelle schon vorhanden ist. Wenn ja, dann wird die
Spalte markiert und das Makro beendet!

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!
Bild

Betrifft: AW: Korrektur!
von: Bernd
Geschrieben am: 12.02.2005 21:23:06
Stimmt, ich habe es an einer neuen Tabelle ausprobiert und es funktioniert bestens, genauso wie ich es wollte. Jetzt muss ich aber schauen, wieso es an meiner bisherigen Datei nicht funktioniert. Ich habe etliche Hintergrundprozesse laufen (Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) die jetzt entrümpeln werden. Ich denke das ich den Fehler finden werde.
Nochmals vielen Dank für Deine schnelle Hilfe. Ich bin begeistert über das professionelle Know How das einem in kürzester Zeit hier angeboten wird.
Einen schönen Abend wünsche ich Dir noch!
Ciao
Bernd
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Farben in einer Spalte vergleichen"