2015-02-09 3 views
1

У меня есть следующий частичный код, и мой цикл цикла срабатывает ТОЛЬКО на 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

Любые скрытые/незаметные листы? –

+0

Нет, я вижу список листов в окне VBAProject и вижу Sheet35 (не классифицируется), а значение моего endTab читает 35. – kmd

+0

если 'Worksheets (endTab) .activate' errors и endTab = 35, что означает, что у вас нет 35 листов. Не знаете, почему еще вы это увидите. Этот код скопирован непосредственно из вашей книги? 'activate' должен быть заглавным, так что вы отредактировали после копирования? –

ответ

2

Из комментариев: кодовые имена

листа создаются, когда лист сначала создаются - они не приспосабливаются, чтобы соответствовать порядку листов в книге. Ваш код обращается к «35-му листу» (подсчет вкладок листов слева направо), который не обязательно является листом с кодовым именем «Sheet35»

Смежные вопросы