2017-07-13 40 views
0

我有下標越界這一行的問題:程序錯誤標超出範圍......試過錯誤恢復

datasheet = wbook.Sheets("Month and Year") 

我曾嘗試使用On Error Resume,但我可能做錯了。

此代碼是假設成立年份和月份,這樣以後,我能當我創建一個新的工作表來使用它,並參考前面一個同樣名爲「預測年」。之後,它會查看3列以驗證它是要複製並粘貼的行,然後將其建立在相應的工作表上。

Sub repeatingrows() 

Dim wbook As Workbook 
Set wbook = Application.ActiveWorkbook 

'CHECKS THE MONTH TO INCREASE THE YEAR 
Dim datasheet As Worksheet 
datasheet = wbook.Sheets("Month and Year") 

Dim m As Integer 
Dim y As Integer 
Dim t As Integer 

For t = 2 To 13 
    For m = 1 To 13 
     If m = 13 Then 
      y = y + 1 
      m = 1 
     End If 
    Next m 
    m = .Cells(t, 1) 
    .Cells(t, 1) = .Cells(t, 2) 
Next t 

'MAKE NEW SHEET AND RENAME IT 

Dim oldsheet As Worksheet 
Dim newsheet As Worksheet 
Set oldsheet = Application.ActiveSheet 

oldsheet = Sheets("Forecast " & m & " " & y) 
newsheet = Sheets("Forecast " & (m + 1) & " " & y) 

Sheets.Add.Name = "Forecast " & (m + 1) & " " & y 



'CHECK IF the 3 columns ARE SIMILAIR TO PREVIOUS PAGE 

Dim rrow As Integer 

For rrow = 3 To 500 
    If Sheets(3).Cell(rrow, 2) = Sheets(2).Cell(rrow, 2) Then 
     If Sheets(3).Cell(rrow, 5) = Sheets(2).Cell(rrow, 5) Then 
      If Sheets(3).Cell(rrow, 6) = Sheets(2).Cell(rrow, 6) Then 
       With newsheet 
        oldsheet.Range(oldsheet.Cells(rrow, 16), oldsheet.Cells(rrow, 19)).Copy 
        .Range(.Cells(b, a), .Cells(99, 51)).PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd 
       End With '^COPY AND PASTES THE ROW 
      Else 
      End If 
     Else 
     End If 
    Else 
    End If 
Next rrow 

End Sub 

回答

2

嘗試:

Set datasheet = wbook.Sheets("Month and Year") 

,並檢查SHEETNAME
的拼寫,並檢查該板在適當的工作簿是否存在。
,並且不使用.Cells()沒有隨着

(可能有其他錯誤)

+0

我嘗試過,但沒有設置和wbook然後試圖wbook不集中。當然,我需要的只有兩個。 – MaxAttack102

+0

其實,不,它仍然給我錯誤。這只是一個更重要的錯誤 – MaxAttack102

+1

@ MaxAttack102「索引超出範圍」表示「Sheets」集合中沒有名爲「Month and Year」的工作表。檢查拼寫 - 這個答案是絕對正確的。還要注意,無論何時分配對象引用(而不是*值*),都需要** Set'關鍵字。 –