Func _Excel_RangeCopyPaste($oWorksheet, $vSourceRange, $vTargetRange = Default, $bCut = Default, $iPaste = Default, $iOperation = Default, $bSkipBlanks = Default, $bTranspose = Default)
If Not IsObj($oWorksheet) Or ObjName($oWorksheet, 1) <> "_Worksheet" Then Return SetError(1, 0, 0)
If $bCut = Default Then $bCut = False
If $vSourceRange = Default And $vTargetRange = Default Then Return SetError(7, 0, 0)
If Not IsObj($vSourceRange) And $vSourceRange <> Default Then
$vSourceRange = $oWorksheet.Range($vSourceRange)
If @error Then Return SetError(2, @error, 0)
EndIf
If Not IsObj($vTargetRange) And $vTargetRange <> Default Then
$vTargetRange = $oWorksheet.Range($vTargetRange)
If @error Then Return SetError(3, @error, 0)
EndIf
If $vSourceRange = Default Then ; Paste from the clipboard
If $bSkipBlanks = Default Then $bSkipBlanks = False
If $bTranspose = Default Then $bTranspose = False
$vTargetRange.PasteSpecial($iPaste, $iOperation, $bSkipBlanks, $bTranspose)
If @error Then Return SetError(4, @error, 0)
Else
If $bCut Then
$vSourceRange.Cut()
If $bSkipBlanks = Default Then $bSkipBlanks = False
If $bTranspose = Default Then $bTranspose = False
$vTargetRange.PasteSpecial($iPaste, $iOperation, $bSkipBlanks, $bTranspose)
$vTargetRange.PasteSpecial
If @error Then Return SetError(5, @error, 0)
Else
$vSourceRange.Copy()
If $bSkipBlanks = Default Then $bSkipBlanks = False
If $bTranspose = Default Then $bTranspose = False
$vTargetRange.PasteSpecial($iPaste, $iOperation, $bSkipBlanks, $bTranspose)
$vTargetRange.PasteSpecial
If @error Then Return SetError(6, @error, 0)
EndIf
EndIf
If $vTargetRange <> Default Then
Return $vTargetRange
Else
Return 1
EndIf
EndFunc ;==>_Excel_RangeCopyPaste