复制并粘贴错误:'1004'

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

我制作了两张工作簿,

  1. Sheet1(员工库存)
  2. Sheet2中(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”开头的第一个单词。 一旦find它,它将复制并粘贴到另一个名为Sheet2(PB)的表中。

当我在Microsoft Visual Basic窗口中,并且我有打开Sheet 1(员工库存)选项卡的Excel电子表格,当我单击运行子时,我得到以下错误:运行时错误'1004':应用程序定义的或对象定义的错误。 当我点击“PB”标签时,没有任何内容正在被复制和粘贴。

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

我的问题是,为什么只有在打开Sheet2时才能使用,而不是在打开Sheet1时使用?

当使用range.select时,必须select其父工作表,所以我们可以使用PB.Activate或者不使用.select

尝试replace这个:

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

用这一行:

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

你为什么不在代码的开头select第二张?

尝试以下

 ActiveWorkbook.Sheets("Sheet2").Activate 

如果在select此工作表时确实有效,那么它应该与此一起工作。