Feito isso! Com a ajuda de Como excluir intervalos se sobrepõem de um intervalo? (Mover a macro do conteúdo da célula)
Sub E____MoveSelectedCellsContentsOnlyKeepFormats_Ctrl_M()
Application.CutCopyMode = False 'clears any existing copy mode
On Error GoTo EXITSUB 'exits if cancel clicked
Dim RANGE_TO_COPY As Range 'define inputbox variable
Dim CELL_TO_PASTE_TO As Range 'define inputbox variable
'-----------name SOURCE range = selected before macro started
Set RANGE_TO_COPY = Selection 'is this necessary, when not using inputbox?
COPYSOURCE = RANGE_TO_COPY.Address(False, False) 'name the inputbox selection as a range
'=========== inputbox to select PASTE destination
Set CELL_TO_PASTE_TO = Application.InputBox("select top left cell of range to PASTE TO, with the mouse", Default:=Selection.Address, Type:=8)
'------------- assigns name to the selected DESTINATION range
PASTERANGE = CELL_TO_PASTE_TO.Address(False, False) 'name the inputbox selection as a range
'=========== action = COPY SOURCE
Range(COPYSOURCE).Copy
'======================PASTE TO DESTINATION
'DEFAULT: PASTE FORMULAS AND NUMBER FORMATS (MATCHES DESTINATION FORMAT, keeps date/ etc original):
Range(PASTERANGE) _
.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'formulas+number format
'======DELETE SOURCE CELL CONTENTS - remove if COPY required
'------------ loop - from superuser - deletes source but NOT pasterange overlap
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
EXITSUB:
End Sub
: -)