AW: Formatierungen sollen stehen bleiben
06.02.2020 10:40:38
Luschi
Hallo MaBlu,
aus der Excel-Online-Hilfe zu Range-ClearContents:
In diesem Beispiel werden Formeln und Werte aus den Zellen A1:G37 in Blatt1 gelöscht, die Zellenformatierung und die bedingte Formatierung bleiben jedoch erhalten.
Und wenn man im Tabellenblatt ein ListObjekt (formatierte Tabelle) hat, dann sollten die _
Zellreferenzen auf dieses Objekt zeigen und nicht auf feste statische t+Zelladressen, hier mal mein Code dazu:
Sub Erledigte()
'30.01.2020 Rudi Maintaire
'06.02.2020 changed by Luschi
Dim rg1 As Range, rg2 As Range, lstObj As ListObject, _
i As Integer
Application.EnableEvents = False
With ActiveSheet
.Unprotect ("") ' Schutz auf Tabelle setzen
Set lstObj = .ListObjects("Tabelle3")
End With
With lstObj
i = .HeaderRowRange.Row ' ZeilenNr. der ?berschrift
With .ListColumns("Status") ' Spalte mit der ?berschrift 'Status'
''Debug.Print .DataBodyRange.Address
For Each rg1 In .DataBodyRange ' alle Daten-Zellen der Status-Spalte durchlaufen
If rg1.Value = "erledigt" Then
'nur ben?tigten Zellbereich im Listobjectt z.B. 'A6:K6'
'und nicht ganze Teile!
Set rg2 = Worksheets("ToDo-Liste").ListObjects("Tabelle3").DataBodyRange.Rows( _
rg1.Row - i)
With Worksheets("ToDoerledigt")
rg2.Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Cells(1, 1).Resize(1, _
rg2.Columns.Count)
End With
rg2.Value = "" 'Zellen leeren nicht plattmachen
End If
Next rg1
End With
End With
' Schutz auf Tabelle setzen
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:= _
True
'slle selbstdefinierten Object zerst?ren
Set rg1 = Nothing: Set rg2 = Nothing: Set lstObj = Nothing
Application.EnableEvents = False
End Sub
Gruß von Luschi
aus klein-Paris