Doppelte Werte in Zellbereich markieren

Bild

Betrifft: Doppelte Werte in Zellbereich markieren
von: Thomas Kohns
Geschrieben am: 25.09.2015 13:52:38

Hallo,
ich suche nun schon den ganzen Tag nach einer Lösung für folgendes Problem. Vorweg: eine bedingte Formatierung würde gehen, allerdings ist diese sehr arbeitsaufwendig auf alle Arbeitsblätter zu übertragen.
Hintergrund:
- die Arbeitsmappe besteht aus 52 Arbeitsblättern (pro Kalenderwoche eine)
- die Arbeitsmappe wird von mir programmiert und von zwei Excel-Anwenderinnen benutzt (diese haben kaum Excel Kenntnisse, geschweige denn von Makros)
Problem:
- Im Zellbereich B5 - Y5 sollen doppelte Werte rot markiert werden. Die Markierung soll direkt erfolgen, wenn ein doppelter Wert eingetragen wurde (ähnlich einer bedingten Formatierung). Sobald der doppelte Wert weg ist, muss die alte Formatierung her. Das Makro soll nach jeder Änderung in diesem Bereich automatisch starten.
- das gleiche Makro will ich dann anwenden auf die Zellbereichen B7-Y7 , B9-Y9 , B11-Y11 , ...alle ungeraden Zahlen... , bis B87-Y87.
- dann sollen dieses Makro auf den anderen Arbeitsblättern ebenfalls angewandt werden.
Das ganze würde mit einer bedingten Formatierung gehen. Diese müsste ich dann allerdings händisch zunächst auf jeden Zellbereich übertragen und dann noch in allen Arbeitsblättern anlegen. Dazu kommt das Problem, dass meine Anwenderinnen einfach Inhalte hin und her kopieren und dabei auch Formatierungen kopieren. Daher sind die bedingten Formatierungen sehr schnell alle durcheinander – dies ist aktuell der Fall. Das Format der Arbeitsmappe bzw. der Zellen kann ich nicht schützen, da die Damen Formatierungen (wie Zellfarben, Rahmen u.ä.) ändern dürfen.
Ich hoffe ich habe das Problem adäquat erläutert. Ich suche also nach einem VBA Script.
Bin gespannt auf Eure Rückmeldungen, in den Foren habe ich bisher dahingehend nichts passendes gefunden.
Besten Dank
Thomas

Bild

Betrifft: AW: Doppelte Werte in Zellbereich markieren
von: EtoPHG
Geschrieben am: 25.09.2015 15:51:16
Hallo Thomas,
Diesen Code in DieseArbeitsmappe

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim rngCheck As Range, rRow As Range, rC As Range, rC2 As Range
    Set rngCheck = Intersect(Sh.Range("B5:Y87"), Target)
    If Not rngCheck Is Nothing Then
        For Each rC In rngCheck
            If rC.Row Mod 2 = 1 Then
                Set rRow = Sh.Range(Sh.Cells(rC.Row, 2), _
                                             Sh.Cells(rC.Row, 25))
                For Each rC2 In rRow
                    If Not IsEmpty(rC2) And _
                       WorksheetFunction.CountIf(rRow, rC2) > 1 Then
                        rC2.Interior.ColorIndex = 3
                    Else
                        If rC2.Interior.ColorIndex = 3 Then _
                           rC2.Interior.ColorIndex = xlNone
                    End If
                Next rC2
            End If
        Next rC
    End If
End Sub
Gruess Hansueli

Bild

Betrifft: AW: Doppelte Werte in Zellbereich markieren
von: Thomas Kohns
Geschrieben am: 30.09.2015 13:34:59
Hallo Hansueli,
wow! Besten Dank! Dieses Skript spart mir mit Sicherheit 8 Stunden stupide bedingte Formatierungen zu programmieren! Vielen Dank!
Ich habe noch ein kleines Anliegen bzw. einen Änderungswunsch:
Ich wende das Skript in zwei Arbeitsmappen an. Ich möchte jedoch die Tabellenblätter einschränken in den Arbeitsmappen, auf denen es angewandt wird. Als konkretes Beispiel:
Die Arbeitsmappe 1 hat Tabellenblättern mit den Namen: "33", "34", ... "53", "Stundensummen", "Gesamtdeputat"
Ich möchte das Skript nur auf die Tabellenblätter 33 - 53 anwenden. Die anderen Blätter sollen nicht betroffen sein.
In der Arbeitsmappe 2 gibt es die Tabellenblätter: "1", "2", "3", ... "32", "Stundensummen", "Gesamtdeputat". Dort gilt das gleiche.
Was muss ich also ändern im Skript?
Beste Dank für die tolle Hilfe!
Thomas

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Doppelte Werte in Zellbereich markieren"