下标超出Do-Loop范围

时间:2015-02-09 17:13:03

标签: excel vba excel-vba

我有以下部分代码,当我尝试激活时,我的for循环仅在第35个选项卡上中断。代码可以正确运行6-33页。我删除了表34,所以我认为它可能是因为它“跳转”到表35。但是,当我调试并将光标放在endTab上时,我看到它包含值35.由于某种原因,激活不起作用在这张纸上休息。有什么想法吗?

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 个答案:

答案 0 :(得分:2)

来自评论:

首次创建工作表时会创建工作表代码名称 - 它们不会调整以匹配工作簿中工作表的顺序。您的代码正在处理“第35张”(从左到右计算您的工作表标签),这不一定是代号为“Sheet35”的工作表