2015-02-09 75 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”的工作表。