Range對象.PasteSpecial(Paste,Operation,SkipBlanks,Transpose)
參數均為可選。若沒有指定參數,則直接復制。

Paste xlPasteType常量,指定復制的具體內容。默認為全部復制。
- 全部 xlPasteAll
- 公式 xlPasteFormulas
- 數值 xlPasteValues
- 格式 xlPasteFormats
- 批注 xlPasteComments
- 驗證 xlPasteValidation
- 所有使用源主題的單元 xlPasteAllUsingSourceTheme
- 邊框除外 xlPasteAllExceptBorders
- 列寬 xlPasteColumnWidths
- 公式和數字格式 xlPasteFormulasAndNumberFormats
- 值和數字格式 xlPasteValuesAndNumberFormats
- 所有合並條件格式 xlPasteAllMergingConditionalFormats
Operation xlPasteSpecialOperation常量,指明粘貼時要進行的運算操作,即將復制的單元格中的數據與指定單元格區域中的值進行加減乘除運算。
- 無 xlPasteSpecialOperationNone
- 加 xlPasteSpecialOperationAdd
- 減 xlPasteSpecialOperationSubtract
- 乘 xlPasteSpecialOperationMultiply
- 除 xlPasteSpecialOperationDivide
SkipBlanks 跳過空單元格
Transpose 轉置
只粘貼格式而不粘貼值
Sub testPasteSpecial1() Range('C2:C4').Copy Range('E2').PasteSpecialPaste:=xlPasteFormats End Sub
只粘貼值
Sub testPasteSpecial2()
Range('C2:C4').Copy
Range('F2').PasteSpecialPaste:=xlPasteValues
End Sub
粘貼值並保持列寬
Sub testPasteSpecial3()
Range('A1:A3').Copy
Range('C1').PasteSpecialPaste:=xlPasteColumnWidths
Range('C1').PasteSpecialPaste:=xlPasteValues
End Sub
or
Sub testPasteSpecial4()
Range('A1:A3').Copy
Range('C1').PasteSpecialPaste:=xlPasteColumnWidths
Range('A1:A3').CopyRange('C1')
End Sub
對粘貼的區域進行運算
Sub testPasteSpecial5()
Range('C1').Copy
Range('A1:A3').PasteSpecialOperation:=xlPasteSpecialOperationMultiply
End Sub
將行列轉置
Sub testPasteSpecial6()
Range('A1:A3').Copy
Range('C1').PasteSpecialTranspose:=True
End Sub
使用PasteSpecial方法時剪貼板中沒有數據
說明:使用PasteSpecial方法時會出錯。例如,執行下面的代碼:
Sub testPasteSpecial7()
Selection.PasteSpecialPaste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecialPaste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
VBA會提示:類Range的PasteSpecial方法無效
原因:因為剪貼板中沒有可供粘貼的數據。特別是,當你在工作表中復制單元格區域后,在功能區中選擇“開發工具”——“宏”或者按Alt F8調出宏對話框時,Excel會清除剪貼板。(事實上,在單元格中使用復制命令后,訪問Excel中的任何對話框,剪貼板中的數據都會被清除)因此,再執行上述代碼的話,肯定會出錯了
解決方法:為了避免出現上述情況,可以將上面的宏過程賦給一個按鈕,直接單擊按鈕執行;或者在VBE中按F5鍵執行。
發布於 2020-04-04