2015-02-09 74 views
1

當我嘗試激活時,我有以下部分代碼,並且我的for循環僅在第35個選項卡上打斷。該代碼正確運行表6-33。我刪除了表34,所以我認爲這可能是因爲它跳轉到表35.但是,當我調試並將光標放在endTab上時,我看到它包含值35.激活由於某種原因不起作用在這張紙上休息。有什麼想法嗎?Do-Loop內的下標超出範圍

Dim lastRow As Long 
Dim startRow As Long 
Dim currentRow As Long 
Dim endTab As Integer 

Sheets(4).activate 

lastRow = Cells(Rows.Count, 2).End(xlUp).Row 
startRow = 2 

Range("A2:AB" & lastRow).Sort key1:=Range("AB2:AB" & lastRow), _ 
    order1:=xlAscending, Header:=xlNo 

For i = startRow To lastRow 
    Sheets(4).activate 
    endTab = Range("AB" & startRow + i - 2) 

    Range("A" & startRow + i - 2 & ":" & "AB" & startRow + i - 2).Copy 
    Worksheets(endTab).activate 
    Columns("A").Find("", Cells(Rows.Count, "A")).PasteSpecial xlPasteValues 
Next 
+1

隱藏/非常隱藏的工作表? – 2015-02-09 17:22:08

+0

不,我可以看到VBAProject窗口上的工作表列表,並且可以看到Sheet35(未分類),並且我的endTab值顯示爲35. – kmd 2015-02-09 17:30:19

+0

如果工作表(endTab).activate錯誤和endTab = 35表明您沒有35張。不知道爲什麼你會看到。該代碼是否直接從您的工作簿複製? 'activate'應該大寫,你在複製後編輯過嗎? – 2015-02-09 17:36:03

回答

2

從註釋:在首次創建時片材被創建

表的代碼名稱 - 它們不調節,以滿足在工作簿中的片材的順序。您的代碼是尋址「第35張」(從左到右數您的工作表選項卡),這不一定是代號爲「Sheet35」的工作表。