请求修改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
相关产品推荐
相关产品推荐

