簡體   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