m0_72797786 2024-03-15 10:05 采纳率: 0%
浏览 34
已结题

VBA PasteSpecial 函数怎么写


Sub test()
    Dim sheet物料流水表 As Worksheet
    Set sheet物料流水表 = Workbooks("物料表系统.xlsm").Worksheets("物料流水")
    If sheet物料流水表 Is Nothing Then
        MsgBox "获取物料流水表句柄失败!"
    End If
    
    With sheet物料流水表
        .Range("d12:EF12").Copy
        .Range("d13:EF13").PasteSpecial(xlPasteFormulas, xlPasteSpecialOperationNone ,True,False)  '此处语法无法通过,没发现语法错误,
    End With
    
End Sub

帮忙看下,PasteSpecial 函数要怎么修改

img

  • 写回答

25条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-15 10:06
    关注
    获得0.30元问题酬金

    引自免费微信小程序:皆我百晓生

    在你的VBA代码中,.Range("d13:EF13").PasteSpecial 函数的语法是正确的,但是xlPasteSpecialOperationNone参数在这个上下文中可能不是必须的,因为你要粘贴的是公式。当你只需要粘贴公式时,可以简化 .PasteSpecial 的调用方式如下:

    Sub test()
        Dim sheet物料流水表 As Worksheet
        Set sheet物料流水表 = Workbooks("物料表系统.xlsm").Worksheets("物料流水")
        
        If sheet物料流水表 Is Nothing Then
            MsgBox "获取物料流水表句柄失败!"
            Exit Sub ' 在找不到工作表时退出子程序
        End If
        
        With sheet物料流水表
            .Range("d12:EF12").Copy
            .Range("d13:EF13").PasteSpecial xlPasteFormulas ' 只保留 xlPasteFormulas 参数即可
        End With
    End Sub
    

    这里删除了 xlPasteSpecialOperationNoneTrueFalse 这些参数,因为在仅粘贴公式的情况下,它们并不是必需的。xlPasteFormulas 参数就足以指示 VBA 仅粘贴复制区域中的公式而不包括任何格式或其他内容。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月23日
  • 创建了问题 3月15日