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
posted @   天涯海角路  阅读(5800)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示