Problem und Lösung zu bedingtem Formatierungswust
28.07.2016 15:33:29
Klexy
Da hat Luc recht. Das hatte ich übersehen.
An der neuen Stelle die (unformatierten!) Werte einfügen und ggf. an der alten Stelle die Zelle leeren.
Die Zielspalte sollte in diesem Fall schon bedingt VORformatiert sein.
Zellen mit bedingter Formatierung mitsamt der Formatierung zu verschieben oder zu kopieren ist seit Excel 2007 eine sehr heikle Sache, weil die bedingte Formatierung dann für diese einzelne Zelle erneut angelegt wird. So wird die Liste der bedingten Formatierungen immer länger und ab einer gewissen Anzahl von bedingten Formatierungen braucht die Datei ewig, bis sie sich öffnet, auch wenn ihre nominelle Größe sich nicht wesentlich erhöht.
Andererseits ist es fast unmöglich eine Tabelle in dieser Hinsicht immer sauber zu halten.
Um diesen Wust an bedingten Formatierungen zu beseitigen, setze ich folgendes Makro ein.
Voraussetzung ist, dass die Bedingten Formatierungen in der ersten Tabellenzeile ok sind.
Sub Bedingte_Formatierung_reparieren()
Dim ObenLinks As Range, Tabellenbreite As Integer, Tabellenlänge As Integer
'erste Zelle im formatierten Bereich (also erste Zelle unter der Kopfzeile - hier :A2)
Set ObenLinks = Range("A2")
Tabellenbreite = ActiveSheet.UsedRange.Columns.Count - ObenLinks.Column + 1
Tabellenlänge = ActiveSheet.UsedRange.Rows.Count - ObenLinks.Row + 1
'bedingte Formatierungen überall außer in der ersten Zeile löschen
Range(ObenLinks.Offset(1, 0), Cells(Tabellenlänge, Tabellenbreite)).FormatConditions.Delete
'bedingte Formatierungen aus der ersten Zeile kopieren
Range(ObenLinks, Cells(ObenLinks.Row, Tabellenbreite)).Copy
'bedingte Formatierungen auf die ganze Tabelle verschieben
Range(ObenLinks, Cells(Tabellenlänge, Tabellenbreite)).PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
ObenLinks.Select
End Sub