Вы удаляете весь свой оригинальный диапазон. Если он перекрывается, он также удаляет перекрывающиеся ячейки. Чтобы избежать этого, проверьте каждую ячейку, чтобы увидеть, есть ли совпадение, например, вы можете заменить Range(COPYSOURCE).ClearContents
на
Dim rgLoop As Range, rgToDelete As Range For Each rgLoop In Range(copysource).Cells If Intersect(rgLoop, Range(pasterange).Resize(Range(copysource).Rows.Count, Range(copysource).Columns.Count)) Is Nothing Then If rgToDelete Is Nothing Then Set rgToDelete = rgLoop Else Set rgToDelete = Union(rgToDelete, rgLoop) End If Next rgLoop rgToDelete.ClearContents 'deletes contents keeps formatting