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

VBA实现行归档时仅粘贴数值、不复制公式的代码修改方案

VBA整行归档仅粘贴数值的修改方案

原代码使用默认整行复制逻辑,会携带单元格所有属性(包括公式、数据验证、条件格式等)同步到目标表,只需调整复制粘贴的调用逻辑,即可实现仅粘贴数值、不携带公式的效果。


修改后完整代码

Sub ArchiveReworked()
    Dim xRg As Range
    Dim xCell As Range
    Dim i As Long
    Dim j As Long
    Dim K As Long
    i = Worksheets("Quality Log").UsedRange.Rows.Count
    j = Worksheets("Actioned").UsedRange.Rows.Count
    If j = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Actioned").UsedRange) = 0 Then j = 0
    End If
    Set xRg = Worksheets("Quality Log").Range("Q4:Q" & i)
    Application.ScreenUpdating = False
    For K = 1 To xRg.Count
        If CStr(xRg(K).Value) = "Yes" Then
            ' 复制源行
            xRg(K).EntireRow.Copy
            ' 目标位置仅粘贴数值
            Worksheets("Actioned").Range("A" & j + 1).PasteSpecial Paste:=xlPasteValues
            ' 清空剪贴板,退出复制状态
            Application.CutCopyMode = False
            ' 删除源表对应行
            xRg(K).EntireRow.Delete
            If CStr(xRg(K).Value) = "Yes" Then
                K = K - 1
            End If
            j = j + 1
        End If
    Next

    Call ResizeArchiveTable
      
    Application.ScreenUpdating = True
End Sub

关键修改说明

  • 替换了原代码中xRg(K).EntireRow.Copy Destination:=xxx的全量复制写法,拆分为复制、选择性粘贴两个步骤,通过Paste:=xlPasteValues参数指定仅粘贴单元格计算后的值,完全不会带入源单元格的公式。
  • 新增Application.CutCopyMode = False语句,粘贴完成后立刻清空剪贴板,避免后续操作受复制状态影响,也能减少内存占用。
  • 移除了原代码中全局生效的On Error Resume Next语句,该语句会无差别屏蔽所有运行错误提示,出现逻辑异常时很难定位问题,无特殊需求不建议全局开启。
  • 如果需要同步保留源行的单元格格式,可以在粘贴数值的语句后新增一行代码Worksheets("Actioned").Range("A" & j + 1).PasteSpecial Paste:=xlPasteFormats,该操作仅粘贴格式,不会携带公式。

内容的提问来源于stack exchange,提问作者Tomas Joe Gemine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:27:38