Copy And Paste Special To Preserve Target Formatting
A very common practice in Excel formatting applications is to use a target worksheet that is already properly formatted to receive data from another workbook or worksheet. To illustrate the difference between a "copy and paste" and a "copy and paste special values only", the statement immediately below will do a copy and "destructive" paste... meaning that it will override the target format:
Range(shtSheet1.Cells(1, 1), shtSheet1.Cells(6, 1)).Copy shtSheet3.Cells(10, 1)To preserve the formatting of the target worksheet, it is necessary to paste only the values and not the formats. The example below shows how to copy and "paste special (values only)" in a variety of ways:
Program Code
Option Explicit
Public Sub TestPasteSpecial()
Dim shtSheet1 As Worksheet
Dim shtSheet2 As Worksheet
Dim shtSheet3 As Worksheet
' ***************************************************************************
' Set Worksheet Variables
' ***************************************************************************
Set shtSheet1 = Sheets("Sheet1")
Set shtSheet2 = Sheets("Sheet2")
Set shtSheet3 = Sheets("Sheet3")
' ***************************************************************************
' Select A Sheet Using Either Method
' ***************************************************************************
Sheets("Sheet2").Select
' Or
shtSheet2.Select
' ***************************************************************************
' Paste Special Method 1 = Non-ActiveSheet Cells From Sheet1 To Sheet3
' ***************************************************************************
Range(shtSheet1.Cells(1, 1), shtSheet1.Cells(6, 1)).Copy
shtSheet3.Cells(10, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' ********************************************************************************
' Paste Special Method 2 = Copy ActiveSheet Selection And Paste To Different Sheet
' ********************************************************************************
shtSheet1.Select
Range(Cells(1, 2), Cells(6, 3)).Select
Selection.Copy
Sheets("Sheet2").Cells(20, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' ***************************************************************************
' Paste Special Method 3 = Copy, Select New Sheet, Paste Selection
' ***************************************************************************
Sheets("Sheet1").Select
Range(Cells(1, 3), Cells(6, 3)).Select
Selection.Copy
Sheets("Sheet3").Select
Range("A30").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Option Explicit
' ******************************************
' How To Select Discontinuous Cells
' ******************************************
Public Sub SelectMultipleCells()
Dim wksSheet1 As Worksheet
Dim strRange As String
Set wksSheet1 = Sheets("Sheet1")
wksSheet1.Range("A2,B3,C4,E5").Select
strRange = "A2,B3,C4,D6,E8"
wksSheet1.Range(strRange).Select
End Sub
