[英]VBA Run time error 9: Subscript out of range
我正在嘗試從 99 張紙中復制第二行,並將它們一個接一個地添加到第 100 張紙中。 vba 代碼如下,但我不斷收到以下錯誤:
運行時錯誤'9':下標超出范圍
Sub copyrow()
Dim Nrow As Long, Nsheet As Long
Dim i As Long
Nrow = 2
Nsheet = 100
For i = 1 To Nsheet - 1
Sheets(i).Cells(Nrow, 1).EntireRow.Copy Sheets(Nsheet).Cells(i, 1)
Next i
End Sub
工作表名稱為 Sheet1 (2),... Sheet1 (24).. 等直到 Sheet1 (99)
我是 vba 的新手,不知道如何解決這個錯誤,我懷疑它可能在命名約定中,但我不確定。
Option Explicit
Sub copyRow()
Const dIndex As Long = 100
Const dFirst As Long = 1 ' Easily change the first destination row.
' Check this, you said 1, but it's 2 if Sheet (2) is the first worksheet.
Const sFirst As Long = 2
Const sRow As Long = 2
Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
Dim dws As Worksheet: Set dws = wb.Worksheets("Sheet1 (" & 100 & ")")
Dim n As Long: n = dFirst
Dim i As Long
For i = sFirst To dIndex - 1
wb.Worksheets("Sheet1 (" & i & ")").Rows(sRow).Copy dws.Rows(n)
' If you only need values then use this more efficient way.
'dws.Rows(n).Value = wb.Worksheets("Sheet1 (" & i & ")").Rows(sRow).Value
n = n + 1
Next i
End Sub
這會將指定的行從 99 個工作表復制到第 100 個工作表,盡管它可能不會按照預期的順序進行。
Sub copyrow()
Dim wb As Workbook
Dim wsDst As Worksheet
Dim wsSrc As Worksheet
Dim rngDst As Range
Dim rngSrc As Range
Dim Nrow As Long, Nsheet As Long
' changed as required e.g. ThisWorkbook or Workbooks("AWworkbook.xlsx")
Set wb = ActiveWorkbook
Nrow = 2
Set wsDst = wb.Sheets(100)
Set rngDst = wsDst.Range("A1")
For Each wsSrc In wb.Sheets
If Not wsSrc Is wsDst Then
Set rngSrc = wsSrc.Rows(Nrow)
rngSrc.Copy rngDst
Set rngDst = rngDst.Offset(1)
End If
Next wsSrc
End Sub
我嘗試了您的代碼並測試了多達 18 個工作表,它工作正常。 我建議您確認的一件事是確保 object Sheets(100) 指的是您的 Sheet1(100)。 您可以立即運行 window?Sheets(100).name 以確保上述內容。 然后,也許您嘗試縮小紙張數量以開始測試。 希望你得到你的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.