如何修复Excel VBA中的pastespecial错误:运行时错误1004

时间:2019-07-11 11:27:11

标签: excel vba

我正在编写代码,以将粘贴数据从一个工作簿复制到另一工作簿

点击调试和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

我希望它可以正常运行。有时它可以正常运行,但有时我会收到此错误

2 个答案:

答案 0 :(得分:1)

有几个问题:

  1. Excel无法知道Cells(1, j).Address在哪个工作表中。始终指定一张纸!

    ThisWorkbook.Worksheets("SheetNAme").Cells(1, j).Address
    'or
    D_wsObj.Cells(1, j).Address
    
  2. Range(Split(Cells(1, j).Address, "$")(1) & 2)Cells(2, j)

  3. 不需要使用.Select.ActivateHow 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>

这就像魅力一样工作,没有任何问题

感谢您的支持