我正在编写代码,以将粘贴数据从一个工作簿复制到另一工作簿
点击调试和F5时,我收到错误消息“ Range类的PasteSpecial方法失败”,操作没有问题
我已经使用了Application.displayalerts = false,但是如果我尝试按F5键,仍然会出现错误,并且代码会运行
S_xlobj.Activate
S_wsObj.Select
S_wsObj.Range(ThisWorkbook.Sheets("Config").Cells(i, 3) & F1_startRow & ":" & ThisWorkbook.Sheets("Config").Cells(i, 3) & F1_Lastrow).Copy
D_xlobj.Activate
D_wsObj.Select
D_wsObj.Range(Split(Cells(1, j).Address, "$")(1) & 2).PasteSpecial xlPasteValues
我希望它可以正常运行。有时它可以正常运行,但有时我会收到此错误
答案 0 :(得分:1)
有几个问题:
Excel无法知道Cells(1, j).Address
在哪个工作表中。始终指定一张纸!
ThisWorkbook.Worksheets("SheetNAme").Cells(1, j).Address
'or
D_wsObj.Cells(1, j).Address
Range(Split(Cells(1, j).Address, "$")(1) & 2)
与Cells(2, j)
不需要使用.Select
或.Activate
。 How to avoid using Select in Excel VBA。
这应该可以工作(其余不需要):
S_wsObj.Range(S_wsObj.Cells(i, 3) & F1_startRow & ":" & S_wsObj.Cells(i, 3) & F1_Lastrow).Copy
D_wsObj.Cells(2, j).PasteSpecial xlPasteValues
答案 1 :(得分:0)
我认为多次重复执行相同的操作
我没有使用复制/粘贴功能,而是使用了数组,现在它可以正常工作了
我正在使用的新代码(为方便参考:删除了动态获取列名的变量)
<table>
这就像魅力一样工作,没有任何问题
感谢您的支持