모든 통합 문서 시트에 조건부 서식 VBA 적용

모든 통합 문서 시트에 조건부 서식 VBA 적용

나는 이것에 매우 익숙하지 않습니다. 행의 모든 ​​값의 평균보다 높은 숫자를 강조하기 위해 조건부 서식을 만들고 있습니다.

통합 문서의 모든 시트에 있는 모든 행에 이 서식을 적용해야 합니다.

내가 수집한 것 중에서 내가 얻은 것은 다음과 같습니다.

 Sub AllSheets()
         Dim ws As Worksheet
         For Each ws In Worksheets
            Range("A1:S1").Copy
            For Each r In Selection.Rows
            r.PasteSpecial (xlPasteFormats)
            Next r
            Application.CutCopyMode = False
        Next ws
 End Sub

하지만 이것을 실행하면 활성 선택된 셀에만 적용됩니다. 이 문제를 어떻게 해결합니까?

답변1

Range()사용되는 가 실제로 의 범위인지 확인해야 합니다 ws. 그렇지 않으면 Activesheet에서만 실행됩니다.

 Dim ws As Worksheet
 For Each ws In Worksheets
    ws.Range("A1:S1").Copy 
    For Each r In Selection.Rows
         r.PasteSpecial (xlPasteFormats)
    Next r
    Application.CutCopyMode = False
Next ws

End Sub

그런데 이게 효과가 있나요? 조금 "더 단단"합니다. 주로사용을 피하세요.Selection

 Dim ws As Worksheet
 For Each ws In Worksheets
    ws.Range("A1:S1").Copy ' Or replace this with actual range, not just `Selection`
    For Each r In ws.Range("A1:S1").Rows
         r.PasteSpecial (xlPasteFormats)
    Next r
Next ws

End Sub

For each r편집: 방금 깨달았습니다... 어쨌든 하나의 행만 사용하고 있는데 왜 루프를 사용합니까 ?

답변2

통합 문서의 모든 시트에 있는 모든 행에 이 서식을 적용해야 합니다.

실제로 "올바른 질문을 하는 방법을 아는" 연습이 필요합니다. 그렇게 하면 빠른 검색이 가능해집니다.

워크시트 VBA 순환

  Sub WorksheetLoop()

     Dim WS_Count As Integer
     Dim I As Integer

     ' Set WS_Count equal to the number of worksheets in the active
     ' workbook.
     WS_Count = ActiveWorkbook.Worksheets.Count

     ' Begin the loop.
     For I = 1 To WS_Count

        ' Insert your code here.
        ' The following line shows how to reference a sheet within
        ' the loop by displaying the worksheet name in a dialog box.
        MsgBox ActiveWorkbook.Worksheets(I).Name

     Next I

  End Sub

참조:https://support.microsoft.com/en-us/help/142126/macro-to-loop-through-all-worksheets-in-a-workbook

관련 정보