2016-06-04 2 views
1
  • Я пытаюсь запустить макрос ниже, но он не работает успешно.Цитирование макроса через все листы, не работает

    • Цель макроса заключается в том, чтобы зацикливать действие "раскрасить ячейку" S1 "" на всех листах, кроме указанных в коде.
    Sub test2() 
        Dim ws As Worksheet 
    
        For Each ws In ThisWorkbook.Sheets 
         If (ws.Name <> "COVER") And (ws.Name <> "DATA") And (ws.Name <> "HYP") Then  
          With ws    
           Range("S1").Interior.Color = RGB(255, 0, 0)   
          End With 
         End If 
        Next ws 
    End Sub 
    

    каждый раз, когда я бег макроса это раскрашенное только активный лист даже ActiveSheet является одним из вне диапазона листов.

ответ

2

Первый: Используйте Thisworkbook.Worksheets вместо Thisworkbook.Sheets, как листы будут также включать в себя диаграммы если таковые имеются, и он потерпит неудачу с кодом.

Второе:. Изменить в С ws.

Sub test2() 
Dim ws As Worksheet 

For Each ws In ThisWorkbook.Worksheets 
    If (ws.Name <> "COVER") And (ws.Name <> "DATA") And (ws.Name <> "HYP") Then  
     With ws    
      .Range("S1").Interior.Color = RGB(255, 0, 0)   
     End With 
    End If 
Next ws 
End Sub 

EDIT: Дополнительная информация:

For Each ws In ThisWorkbook.Worksheets 
    If (ws.Name <> "COVER") And (ws.Name <> "DATA") And (ws.Name <> "HYP") Then  
     With ws    
      .Range("S1").Interior.Color = RGB(255, 0, 0) 
      FirstBlank = .Range("E2:E" & .Rows.Count).Cells.SpecialCells(xlCellTypeBlanks).Row    
      .Range("E" & FirstBlank).FormulaR1C1 = "=SUMIFS(HYP!C[3],HYP!C[-4],RC[-2],HYP!C[-1],"">=""&RC[-4],HYP!C,""<=""&RC[-3])" 
     End With 
    End If 
Next ws 

Найдет первую пустую ячейку в столбце Е Ws листа и поместить формулу в найденной ячейке. Если это то, что вам нужно ...

+0

Большое спасибо :) (Y) – BATT

+0

Добро пожаловать :) – smozgur

+0

привет, дорогой, я не могу применить вышеизложенное на этом коде, любые предложения? С WS FirstBlank = Range ("E2: E" и Rows.Count) .Cells.SpecialCells (xlCellTypeBlanks) .Row Range ("E" и FirstBlank) .Select ActiveCell.FormulaR1C1 = _ «= SUMIFS (ССЫЛ ! С [3], ССЫЛ! С [-4], RC [-2], ССЫЛ! С [-1] ""> = "" & RC [-4], ССЫЛ! С "" <= "" & RC [-3]) " Завершить с – BATT

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