Vba 复制和粘贴错误:';1004';

Vba 复制和粘贴错误:';1004';,vba,excel,Vba,Excel,我正在使用VBA帮助管理一组数据。我将有50个月的月度数据,我希望根据单元格中的第一个单词将其分类到不同的表格中。以下是我迄今为止所做的 我创建了一个包含两张工作表的工作簿 表1(员工库存) 第2张(PB) 我的代码被写入并保存在此工作簿中 Sub myCode() Dim OldString As String Dim NewString As String Set i = Sheets("Employee Inventory") Set PB = Sheets

我正在使用VBA帮助管理一组数据。我将有50个月的月度数据,我希望根据单元格中的第一个单词将其分类到不同的表格中。以下是我迄今为止所做的

我创建了一个包含两张工作表的工作簿

  • 表1(员工库存)
  • 第2张(PB)
  • 我的代码被写入并保存在此工作簿中

    Sub myCode()
        Dim OldString As String
        Dim NewString As String
        Set i = Sheets("Employee Inventory")
        Set PB = Sheets("PB")
        Dim counterPB
        counterPB = 2
        Dim d
        Dim j
        d = 1
        j = 2
        Do Until IsEmpty(i.Range("D" & j))
            OldString = i.Range("D" & j)
            NewString = Left(OldString, 2)
            If NewString = "PB" Then
                i.Rows(j).EntireRow.Copy
                PB.Range("A" & counterPB).Select
                PB.Paste
                counterPB = counterPB + 1
            End If
            j = j + 1
        Loop
    End Sub
    
    为代码道歉,因为它看起来很奇怪。此代码查看Sheet1并扫描列“D”,查找以“PB”开头的第一个单词。一旦找到它,它会将整行复制并粘贴到另一张名为Sheet2(PB)的表格中

    在Microsoft Visual Basic窗口中,打开了Excel电子表格的Sheet1(员工资源清册)选项卡,单击“运行”子项时,出现以下错误:运行时错误“1004”:应用程序定义的错误或对象定义的错误。当我点击“PB”选项卡时,没有任何内容被复制和粘贴到其中

    但是,当我单击PB选项卡,然后单击Run Sub时,代码将执行,包含第一个单词“PB”的任何行都将被复制并粘贴到“PB”选项卡中


    我的问题是,为什么它只在我打开Sheet2时才起作用,而在我打开Sheet1时不起作用?

    当使用
    范围时。选择
    必须选择它的父工作表,这样我们就可以使用
    PB。激活
    或不使用
    。选择

    尝试替换此选项:

    i.Rows(j).EntireRow.Copy
    PB.Range("A" & counterPB).Select
    PB.Paste
    
    这一行:

    i.Rows(j).Copy PB.Rows(counterPB)
    

    为什么不选择代码开头的第二张纸呢

    试试下面的方法

    ActiveWorkbook.Sheets("Sheet2").Activate
    
    如果选择此工作表时它确实有效,则应使用此工作表