VBA-選擇性粘貼PasteSpecial


Range對象.PasteSpecial(Paste,Operation,SkipBlanks,Transpose)

參數均為可選。若沒有指定參數,則直接復制。

Paste xlPasteType常量,指定復制的具體內容。默認為全部復制。

  1. 全部 xlPasteAll
  2. 公式 xlPasteFormulas
  3. 數值 xlPasteValues
  4. 格式 xlPasteFormats
  5. 批注 xlPasteComments
  6. 驗證 xlPasteValidation
  7. 所有使用源主題的單元 xlPasteAllUsingSourceTheme
  8. 邊框除外 xlPasteAllExceptBorders
  9. 列寬 xlPasteColumnWidths
  10. 公式和數字格式 xlPasteFormulasAndNumberFormats
  11. 值和數字格式 xlPasteValuesAndNumberFormats
  12. 所有合並條件格式 xlPasteAllMergingConditionalFormats

Operation xlPasteSpecialOperation常量,指明粘貼時要進行的運算操作,即將復制的單元格中的數據與指定單元格區域中的值進行加減乘除運算。

  1. 無 xlPasteSpecialOperationNone
  2. 加 xlPasteSpecialOperationAdd
  3. 減 xlPasteSpecialOperationSubtract
  4. 乘 xlPasteSpecialOperationMultiply
  5. 除 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM