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

VBA粘贴数据时如何保留目标单元格原有格式 仅复制数值

VBA仅复制源数据数值、保留目标表原有格式的修改方案

原来的代码用Copy方法直接指定目标区域的写法会同步复制源单元格的格式、公式、数据验证等所有属性,无法保留目标表原有格式。可以通过以下两种方式修改,实现仅传递数值的需求:


方案1:直接赋值(推荐)

直接给目标区域的Value属性赋值,不需要调用剪贴板,执行效率更高,代码如下:

Set wb = Workbooks.Open(strPath, False, True)

' 直接对应区域赋值,仅传递数值,不改动目标格式
wbMe.Sheets("input_4").Columns("A:C").Value = wb.Sheets("vintage_agr").Columns("A:C").Value
wbMe.Sheets("input_4").Columns("D:D").Value = wb.Sheets("vintage_agr").Columns("H:H").Value
wbMe.Sheets("strona 3").Range("E16:G19").Value = wb.Sheets("analityka_id-tabele").Range("E68:G71").Value
wbMe.Sheets("strona 3").Range("E15:G15").Value = wb.Sheets("analityka_id-tabele").Range("E72:G72").Value

wb.Close False
Set wb = Nothing

Beep

MsgBox "Mamy to"
End Sub

注意:赋值时需要保证源区域和目标区域的行列数完全一致,否则会出现值错位的问题。


方案2:粘贴特殊(仅粘贴数值)

如果更习惯用复制粘贴的逻辑,可以调用PasteSpecial方法指定仅粘贴数值,代码如下:

Set wb = Workbooks.Open(strPath, False, True)

wb.Sheets("vintage_agr").Columns("A:C").Copy
wbMe.Sheets("input_4").Range("A1").PasteSpecial Paste:=xlPasteValues

wb.Sheets("vintage_agr").Columns("H").Copy
wbMe.Sheets("input_4").Range("D1").PasteSpecial Paste:=xlPasteValues

wb.Sheets("analityka_id-tabele").Range("E68:G71").Copy
wbMe.Sheets("strona 3").Range("E16").PasteSpecial Paste:=xlPasteValues

wb.Sheets("analityka_id-tabele").Range("E72:G72").Copy
wbMe.Sheets("strona 3").Range("E15").PasteSpecial Paste:=xlPasteValues

' 清空剪贴板,避免残留复制提示
Application.CutCopyMode = False

wb.Close False
Set wb = Nothing

Beep

MsgBox "Mamy to"
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:45:01