You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求修改VBA复制粘贴代码:仅复制单元格值与格式,不复制公式

修改VBA宏实现仅复制值与格式(不复制公式)

以下是修改后的代码,可实现仅复制单元格的值和格式,不包含公式:

Private Sub Copy_Paste() 'Kopiraj in prilepi podatke v spodnji del sheeta
    
    Const SRC_RANGES As String = "A4:AA9"
    Dim sClearFlags(): sClearFlags = VBA.Array(0, 1, 1, 1)
    Const DST_FIRST_CELL As String = "A4"
    
    Dim sws As Worksheet: Set sws = Sheet2
    Dim dws As Worksheet: Set dws = Sheet2
    
    Dim dfCell As Range: Set dfCell = dws.Range(DST_FIRST_CELL)
    
    With dws.UsedRange
        Dim drOffset As Long: drOffset = .Rows(.Rows.Count).Row - dfCell.Row + 1
        If drOffset > 0 Then
            Set dfCell = dfCell.Offset(drOffset)
        End If
    End With
    
    With sws.Range(SRC_RANGES)
        Dim arg As Range, n As Long
        For Each arg In .Areas
            ' 复制值与格式(不复制公式)
            arg.Copy
            dfCell.PasteSpecial Paste:=xlPasteValues ' 粘贴单元格值
            dfCell.PasteSpecial Paste:=xlPasteFormats ' 粘贴单元格格式
            Application.CutCopyMode = False ' 清除剪贴板复制状态
            
            Set dfCell = dfCell.Offset(, arg.Columns.Count)
            ' 清除源区域内容(按配置)
            If sClearFlags(n) = 1 Then
                arg.ClearContents
            End If
            n = n + 1
        Next arg
    End With
 
End Sub

关键修改说明:

  • 替换原代码中arg.Copy dfCell的直接复制逻辑,改用PasteSpecial分别粘贴值(xlPasteValues)和格式(xlPasteFormats),彻底排除公式的复制。
  • 添加Application.CutCopyMode = False清除剪贴板的复制状态,避免后续操作出现不必要的粘贴提示。

内容的提问来源于stack exchange,提问作者Simon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:03:34