2016-01-08 8 views
0

Код, а не циклический просмотр всех листов (кроме исключений), повторяется снова и снова на листе, который активен при выполнении.Петля через все листы

Что я сделал не так?

Dim wsSheet As Worksheet 

    For Each wsSheet In ThisWorkbook.Worksheets 
    Select Case wsSheet.Name 
     Case "Affiliates", "New Report", "Pasted Report", "New Month Or Client", "Set Up Data" 
      'Do nothing. 

     Case Else 
      With wsSheet 
    Range("B72").Select 
    Range("B72:L86").Sort Key1:=Range("I72"), Order1:=xlDescending, Header:= _ 
    xlGuess, OrderCustom:=1, MatchCase:=False, _ 
    Orientation:=xlTopToBottom, _ 
    DataOption1:=xlSortNormal 

    Range("B72:L72,B74:L74,B76:L76,B78:L78,B80:L80,B82:L82,B84:L84,B86:L86").Select 
    Range("B86").Activate 
    ExecuteExcel4Macro "PATTERNS(,0,1,TRUE,2,4,0,0)" 
    Range("B73:L73,B75:L75,B77:L77,B79:L79,B81:L81,B83:L83,B85:L85").Select 
    Range("B85").Activate 
    ExecuteExcel4Macro "PATTERNS(,0,10,TRUE,2,4,0,0.799981688894314)" 
    Range("C93").Select 

      End With 
    End Select 

    Next wsSheet 

End Sub 
+5

Он зациклился, но при использовании 'With' блок нужно поставить' .' перед теми объектами/функций, которые должны быть квалифицированный «С». Сын перед всеми вашими «рядами» помещает '.' как' .Range (...) ' –

+1

Чтобы отбросить замечательный комментарий Скотта - вы всегда должны быть явными при использовании' Range() ',' Cells () ',' Row() 'и т. Д., Особенно при использовании нескольких электронных таблиц. Использование 'With' - это помощь, так как вам просто нужно место' .'. Просто заметив, что вы всегда должны использовать это, так что у вас может даже быть. .Range (.cells (2,1). Cells (.Rows.Count, 2)) ... ' – BruceWayne

+0

Я поставил'. 'перед всеми« диапазонами », но теперь я получаю ошибку времени выполнения« 1004 »: Метод« Выбрать »объекта« Диапазон »не выполнен –

ответ

1

Ваш код должен выглядеть примерно так, когда исправлено:

Dim wsSheet As Worksheet 

For Each wsSheet In ThisWorkbook.Worksheets 
    Select Case wsSheet.Name 
     Case "Affiliates", "New Report", "Pasted Report", "New Month Or Client", "Set Up Data" 
      'Do nothing. 
     Case Else 
      wsSheet.Select 
      With ActiveWorksheet 
       .Range("B72").Select 
       .Range("B72:L86").Sort Key1:=Range("I72"), Order1:=xlDescending, Header:= _ 
        xlGuess, OrderCustom:=1, MatchCase:=False, _ 
        Orientation:=xlTopToBottom, _ 
        DataOption1:=xlSortNormal 

       .Range("B72:L72,B74:L74,B76:L76,B78:L78,B80:L80,B82:L82,B84:L84,B86:L86").Select 
       .Range("B86").Activate 
       ExecuteExcel4Macro "PATTERNS(,0,1,TRUE,2,4,0,0)" 
       .Range("B73:L73,B75:L75,B77:L77,B79:L79,B81:L81,B83:L83,B85:L85").Select 
       .Range("B85").Activate 
       ExecuteExcel4Macro "PATTERNS(,0,10,TRUE,2,4,0,0.799981688894314)" 
       .Range("C93").Select 
      End With 
    End Select 
Next wsSheet 
Смежные вопросы