Clever-Excel-Forum

Normale Version: Übertragen von Zellfarbe verschiener Excel-Datein
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Clever Excel Forum,

ich habe zwei identische Dateien, die sich lediglich in der Füllfareb bestimmter Zellen unterscheiden. Da hierbei parallel gearbeitet wurde, möchte ich gerne eine Datei daraus machen, die von beiden Datein die Farbfüllungen enthält.
Jetzt ist es leider so, das aktuell einfach die eine Datei die andere ersetzt, sprich die Prüfung ob die Zelle bereitsgefüllt ist in der Ursprungsdatei schläft fehl. Somit werden bereits markierte Zellen mit weiß versehen, obwohl die Farbe, sofern diese besteht, bleiben soll. Mein Code sieht aktuell so aus:

Code:
Sub Farben_kopieren()

 Dim rng As Range
 Dim Zeile As Integer
 Dim WsCount As Integer
 Dim n As Integer
 Dim Pfad As String
   
 Application.ScreenUpdating = False
 
   Set mybook = ActiveWorkbook
   Pfad = (mybook.Worksheets("Pfad").Cells(1, 1))
   Set book = Workbooks.Open(Filename:=Pfad, ReadOnly:=True)
 
 WsCount = book.Worksheets.Count
 
 For n = 1 To WsCount
   
 For Each rng In book.Sheets(n).Range("A2:L5000")
   If Not mybook.Sheets(n).Cells(rng.Row, rng.Column).Interior.Color = None Then
       mybook.Sheets(n).Cells(rng.Row, rng.Column).Interior.Color = book.Sheets(n).Cells(rng.Row, rng.Column).Interior.Color
   End If
 Next
 
 Next n
 
MsgBox "Dateien wurden zusammengeführt"

book.Close
 
End Sub

Über Tipps und Hilfe freue ich mich! [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Hallo,

die Prüfung der Farbe auf none ist mE nicht korrekt.

Entweder prüfst Du, ob die Farbe nicht weiß ist, z. B. so:
Code:
If Not mybook.Sheets(n).Cells(rng.Row, rng.Column).Interior.Color = RGB(255, 255, 255) Then

mE wäre es aber besser zu prüfen, ob ein Hintergrund gesetzt ist:
Code:
If mybook.Sheets(n).Cells(rng.Row, rng.Column).Interior.Pattern = xlSolid Then
Ergänzung: none ist eigentlich nicht definiert, wenn Du none also nicht als Variable oder Konstante definiert hast, dann müsste diese Zeile einen Fehler veruarsachen (wenn Du Option Explicit verwendest) oder er vergleicht mit 0 (da none ohne oprion explicit automatisch als Variant verwendet wird und dann den Initialwert 0 bekommt).

Es gibt allenfalls xlNone als Excel-Konstante, diese hat aber den Wert -4142 und würde hier nicht funktionieren.
Hallo Michael,

ich habe deinen Code verwendet und dieser erfüllt soweit meinen Zweck. Vielen Dank.
Code:
If Not mybook.Sheets(n).Cells(rng.Row, rng.Column).Interior.Color = RGB(255, 255, 255) Then
 
Ja ich bin mit dem None auch nicht weitergekommen, habe auch kein Option Explicit verwendet... ich schaue mir das ebenfalls noch mal an. Danke [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]
Im Gegensatz zu unserem lieben Kollegen snb (den ich btw sehr schätze), verwende ich grundsätzlich Option Explicit.
Der Vorteil ist, dass man solche (und andere) Fehler bei der Deklaration von Variablen schnell erkennt.

Hier etwas Lesestoff: https://www.online-excel.de/excel/singsel_vba.php?f=4