繁体   English   中英

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

[英]VBA Error Subscript out of range in for loop used to copy/paste

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

到目前为止,我的for循环:

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

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

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

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

我是VBA的新手,所以不确定我是否正确地引用了粘贴到工作表,但是我知道它确实以新的空白表存在于工作簿中

打开工作簿后,它的名称就是它保存在其中的文件名,而不是路径。 所以你会做

  Workbooks.open(destinationWorkbook) 

但随后将其称为

  Workbooks("Book1.xlsm")

但是我想知道您是否要复制到硬盘上没有的新工作簿吗? 在这种情况下,您会写

     Workbooks.add
     WorkBooks("book1")

没有文件扩展名,因为您尚未保存。 您可以通过使用对象变量来避免所有这些问题

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

然后只是wb来参考工作簿

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM