VBA复制粘贴功能使用问题:无法正确粘贴PA_Model工作表内容
问题根源
你的代码存在两处核心逻辑错误:
- 第一行仅引用了
PA_Model工作表的当前数据区域,但并未对该区域执行复制操作,后续调用的Worksheets("PA_Model").Copy是复制整个工作表对象,并非你需要的单元格数据内容 - 中间激活工作簿、新建工作表的操作可能导致剪贴板缓存被意外清空,最终粘贴时调用的是系统剪贴板中此前留存的内容
最优修复方案
推荐避免使用Activate、Select这类依赖窗口焦点的不稳定方法,直接通过对象引用操作数据,代码稳定性更高,调整后代码如下:
' 定义源数据区域 Dim srcRng As Range Set srcRng = ThisWorkbook.Worksheets("PA_Model").Range("A1").CurrentRegion ' 在目标工作簿新建指定名称的工作表 Dim newSht As Worksheet Set newSht = wb_new.Worksheets.Add newSht.Name = New_Inforce & "_Data" ' 直接将源区域复制到目标位置,无需操作剪贴板 srcRng.Copy Destination:=newSht.Range("A1") ' 若仅需要粘贴值/格式,可替换为以下写法: ' srcRng.Copy ' newSht.Range("A1").PasteSpecial Paste:=xlPasteValues ' 粘贴数值 ' newSht.Range("A1").PasteSpecial Paste:=xlPasteFormats ' 粘贴格式 ' Application.CutCopyMode = False ' 清空剪贴板缓存
如果要保留你原有写法的逻辑,仅需要将前两行合并为一行即可生效:
' 直接复制指定区域 ThisWorkbook.Worksheets("PA_Model").Range("a1").CurrentRegion.Copy wb_new.Activate Worksheets.Add.Name = New_Inforce & "_Data" Worksheets(New_Inforce & "_Data").Select ActiveSheet.Paste
内容的提问来源于stack exchange,提问作者Jason Andrews
相关产品推荐
相关产品推荐

