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

求助:修改Excel VBA代码实现归档时仅粘贴值

修改后的VBA代码(仅粘贴值)

原代码使用Copy Destination会自动复制整行的格式、公式等内容,要实现仅粘贴值,需要拆分复制和粘贴操作,替换原有的复制语句即可。以下是修改后的完整代码:

Sub MoveRowsToNextTab()
'ExcelIsSimple
    Dim xRg As Range
    Dim xCell As Range
    Dim I As Long
    Dim J As Long
    Dim K As Long
    I = Worksheets("CSL").UsedRange.Rows.Count
    J = Worksheets("Archive").UsedRange.Rows.Count
    If J = 1 Then
       If Application.WorksheetFunction.CountA(Worksheets("Archive").UsedRange) = 0 Then J = 0
    End If
    Set xRg = Worksheets("CSL").Range("C7:C" & I)
    On Error Resume Next
    Application.ScreenUpdating = False
    ' 从下往上循环避免漏行(原代码从上往下删除会导致索引偏移,这里优化循环方向)
    For K = xRg.Count To 1 Step -1
        If CStr(xRg(K).Value) = "Closed" Then
            ' 复制整行
            xRg(K).EntireRow.Copy
            ' 仅粘贴值到Archive工作表的目标位置
            Worksheets("Archive").Range("A" & J + 1).PasteSpecial xlPasteValues
            ' 清除剪贴板状态,避免弹窗
            Application.CutCopyMode = False
            ' 删除原行
            xRg(K).EntireRow.Delete
            J = J + 1
        End If
    Next
    Application.ScreenUpdating = True
End Sub

关键修改说明

  • 替换复制粘贴逻辑:去掉原代码中Copy Destination的直接赋值,改为先复制整行,再用PasteSpecial xlPasteValues仅粘贴单元格值,彻底避免携带公式、格式或动态更新的内容。
  • 优化循环方向:把原代码的从上往下循环改为从下往上(For K = xRg.Count To 1 Step -1),避免删除行后导致后续行索引偏移,解决原代码可能出现的漏处理问题,同时可以去掉原有的K = K -1调整逻辑。
  • 清除剪贴板:添加Application.CutCopyMode = False,结束复制状态,避免Excel保留剪贴板内容并弹出提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 16:43:27