
나는 이것에 매우 익숙하지 않습니다. 행의 모든 값의 평균보다 높은 숫자를 강조하기 위해 조건부 서식을 만들고 있습니다.
통합 문서의 모든 시트에 있는 모든 행에 이 서식을 적용해야 합니다.
내가 수집한 것 중에서 내가 얻은 것은 다음과 같습니다.
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