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

如何修复Excel VBA中的特殊错误:运行时错误1004,excel,vba,Excel,Vba,我正在编写一个代码,将粘贴数据从一个工作簿复制到另一个工作簿 单击debug和F5时,我收到一个错误“PasteSpecial method of Range class failed”操作。代码运行时没有任何问题 我使用了Application.displayalerts=false,但如果我尝试按F5,仍然会出现错误并运行代码 S_xlobj.Activate S_wsObj.Select S_wsObj.Range(ThisWorkbook.

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

单击debug和F5时,我收到一个错误“PasteSpecial method of Range class failed”操作。代码运行时没有任何问题

我使用了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

我希望它运行时不会出错。有时它运行时没有任何错误,但有时我会出现此错误,这有几个问题:

  • Excel无法知道哪个工作表
    单元格(1,j)。地址是。始终指定工作表

    ThisWorkbook.Worksheets("SheetNAme").Cells(1, j).Address
    'or
    D_wsObj.Cells(1, j).Address
    
  • 范围(拆分(单元格(1,j).地址,“$”(1)和2)
    单元格(2,j)

  • 不要使用
    。选择
    。激活它不需要

  • 因此,这应该是可行的(其余的不需要):


    我想,重复同一个动作多次,就会出现这个错误

    我没有使用复制/粘贴,而是使用了数组,现在它工作起来没有任何问题

    我正在使用的新代码(为了便于参考:删除了动态获取列名的变量)

    这是工作的魅力,没有任何问题


    感谢您的支持

    首先,隐藏警报并不能解决错误!其次,避免使用
    选择
    ,并为每个
    单元格
    对象指定一个工作表!Excel无法知道在哪个工作表
    单元格(1,j)中。如果不指定,则地址为。另外,请说明在指定工作表后,
    Debug.Print单元格(1,j).Address
    的结果是什么阅读并应用。
    范围(拆分(单元格(1,j).地址,“$”)(1)和2)
    单元格(2,j)
    @Peh我已根据您的评论更新了代码,但它第一次运行时没有错误,并且再次开始出现错误。和Debug.print单元格(1,j).地址为我提供了有效地址
    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
    
    Dim myArray() As Variant
    myArray = S_wsObj.Range("B6:B600").Value  '''storing the values in array rather than copy
    D_wsObj.Range("A2:A560") = myArray    ''' Filling range with the array instead of paste