Aplicar formato condicional VBA a todas las hojas del libro de trabajo

Aplicar formato condicional VBA a todas las hojas del libro de trabajo

Soy muy nuevo en esto, estoy aplicando formato condicional para resaltar los números por encima del promedio de todos los valores seguidos.

Necesito aplicar este formato a todas las filas de todas las hojas del libro.

De lo que he recopilado esto es lo que tengo:

 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

Pero cuando ejecuto esto, sólo lo aplica a las celdas seleccionadas activas. ¿Cómo solucionaría esto?

Respuesta1

Debe asegurarse de que lo Range()que se está utilizando sea realmente el rango del archivo ws. De lo contrario, simplemente se ejecuta en 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

Pero, ¿esto funciona? Es un poco más "apretado", principalmente estoy tratando deevitar el uso de.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

Editar: me acabo de dar cuenta... ¿Por qué usar el For each rbucle, ya que de todos modos solo estás usando una fila?

Respuesta2

Necesito aplicar este formato a todas las filas de todas las hojas del libro.

De hecho, se necesita práctica para "saber hacer la pregunta correcta". Una vez que puedas hacer eso, una búsqueda rápida:

Recorrer hojas de trabajo 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

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

información relacionada