VBA错误下标for循环用于复制/粘贴超出范围

我不断收到我的for循环错误消息。 它应该做的是比较一个给定的工作表的每一行的第一列variables,并复制它,如果匹配,然后将其粘贴到不同的工作簿中的工作表,但出于某种原因,我不断收到“运行时错误“9:下标超出范围”作为引用新工作簿/工作表的行。

我到目前为止的循环:

For i = 1 To Sheets(1).UsedRange.Rows.Count If Sheets(1).Cells(i, 1).Value Like dateRange & "*" Then Sheets(1).Rows(i).Copy Workbooks(destinationWorkbook).Worksheets("Sheet2").Rows(i).Paste 'Debug shows the error is here End If Next i 

在前面的代码中,我将variables定义为:

 destinationWorkbook = "C:\Users\lbran\Desktop\Book1.xlsm" 

我也尝试使用Workbooks(destinationWorkbook).Worksheets(“Sheet2”)。Cells(i,1).Paste

我对VBA非常陌生,所以我不确定是否正确引用了粘贴到工作表,但我知道它确实存在作为一个新的工作簿中的空表

一旦你打开一个工作簿,它的名字就是它保存的文件名,而不是path。 所以你会这样做

  Workbooks.open(destinationWorkbook) 

但是,请将其称为

  Workbooks("Book1.xlsm") 

但是,我想知道你是否试图复制到不在硬盘上的新工作簿? 在这种情况下,你会写

  Workbooks.add WorkBooks("book1") 

不会有文件扩展名,因为你还没有保存。 您可以通过使用对象variables来避免所有这些问题

  Dim wb as workbook Set wb = workbooks.open(destinationworkbook) or Set wb = workbooks.add 

然后只是参考工作簿