Als Antwort auf diesen Beitrag
Hi
nochmal zur Erläuterung:
Excel zeigt die dünnen Hilfsrahmenlinien nur an, wenn die Zellen keine eigene Farbe haben sondern mit der Standardfarbe angezeigt werden.
Sobald sie eine eigene Farbe haben, verschwinden die Hilfsrahmenlinien und es werden nur die "echten" Rahmenlinien angezeigt.
das gilt auch für die Farbe weiß, welche eine echte Farbe sein kann, aber auch die Standardfarbe.
mit dem Code: Range(x).Interior.Color = Range(y).Interior.Color gibst du der Zelle X die echte Farbe weiß, auch wenn die Zelle Y keine eigene Farbe hat sondern nur über den Standard weiß angezeigt wird, weil die Abfrage .Interior.Color nicht unterscheiden kann, ob das Weiß der Zelle eine echte Farbe ist oder keine und daher die Zelle X die echte Farbe weiß bekomm.
Eine Möglichkeit, das Problem lösen, wäre hier der Rückgriff auf den eigentlich veralteten Colorindex, der diese Unterscheidung im Abfrageergebnis macht:
If Range(y).Interior.ColorIndex = -4142 Then
Range(x).Interior.Color = -4142
Else
Range(x).Interior.Color = Range(y).Interior.Color
end if
wenn man nicht das veraltete Colorindes verwenden will, kann man auch "Pattern" abfragen.
if Range(y).Interior.Pattern = xlNone then
Range(x).Interior.Pattern = xlNone
else
Range(x).interior.color = Range(y).Interior.Color
End if
das ganze geht auch als Einzeiler, weil man die Hintergrundfarbe auch mit .Interior.Color = xlnone löschen kann. Mann kann es über .Interior.Color nicht abfragen, aber anwenden. (warum auch immer)
Range(x).Interior.Color = IIF(Range(y).Pattern = xlnone, xlnone, Range(y).Interior.Color)
xlNone ist die Systemvarialble für -4142
beim setzen der Hintergrundfarbe wird das Pattern automatisch mit geändert.
generell stellt sich die Frage, ob es nicht einfacher gewesen wäre, die Formate mit Copy-Paste zu übertragen, da hätte man die ganze Spalte in einem Rutsch umformatieren können.
Oder gibt es Rahmenlinien, die nicht geändert werden sollen?
Gruß Daniel