Macro con formato condicional

Antes que nada, agradeceros a todos los expertos en general y a ti en particular vuestra labor, profesionalidad y acierto en todas las consultas que os venimos haciendo.
He estado siguiendo las respuestas que diste para crear una macro que identifica por color de celda (y también por color de fuente).
Pero mi problema surge cuando el color de la fuente o del interior de la celda es el resultado de aplicarle FORMATO CONDICIONAL a dicha celda.
Con la macro que tengo grabada y que a continuación reproduzco, no hay manera de que me funcione la selección basada en formato condicional.
Public Sub CopiarPorColorFuenteformatocondicional()
'********En esta macro selecciona toda la fila y la copia en la hoja 2
Dim c As Range
Dim Co As Integer
For Each c In Selection
If c.Interior.ColorIndex = 3 Then
Co = Co + 1
c.EntireRow.Copy
Worksheets("Hoja2").Select
Worksheets("Hoja2").Cells(Co, 1).Select
Worksheets("Hoja2").Paste
End If
Next c
End Sub
Entiendo que me falla porque al aplicar formato condicional el "color interior" de la celda tiene la propiedad de automático (y no rojo (3), como yo le indico) y la macro "pasa de largo" de todas las celdas cuyo interior está en rojo pero como resultado de cumplir una determinada condición.
Por favor, ¿cómo puedo indicarle que se ajuste al formato condicional?
En el caso de formato condicional para color de la fuente me pasa exactamente lo mismo.
Francamentem estoy deseperado...

1 respuesta

Respuesta
1
Si grabas una macro, mientras le imponés a una celda el formato condicional, resulta algo como esto:
Sub MacroGrabadaDeFormatoCondicional()
Range("D2").Select
Application.CutCopyMode = False
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, _
Formula1:="100"
Selection.FormatConditions(1).Interior.ColorIndex = 3
Range("D2").Select
ActiveCell.FormulaR1C1 = "200"
Range("D3").Select
End Sub
Allí se destaca :
Selection.FormatConditions(1).Interior.ColorIndex = 3
que nos indica que debe existir la sentencia :
Selection.FormatConditions.count
Que nos da la cantidad de Formatos Condicionales en la selección. Obviamente, puede ser 0 (creo) si no hay formato condicional.
Ahora hay que buscar en TODOS los formatos condicionales de nuestra CELDA (each C) mediante FOR Y=1 TO SELECTION.FORMATCONDITIONS.COUNT (si COUNT es > 0).
Queda algo como lo que sigue (le agregué el ELSEIF) :
Public Sub CopiarPorColorFuenteformatocondicional()
'********En esta macro selecciona toda la fila y la copia en la hoja 2
Dim c As Range
Dim Co As Integer, y As Integer
'ActiveCell.CurrentRegion.Select ' la agregué por comodidad
For Each c In Selection
If c.Interior.ColorIndex = 3 Then
Co = Co + 1
c.EntireRow.Copy
Worksheets("Hoja2").Select
Worksheets("Hoja2").Cells(Co, 1).Select
Worksheets("Hoja2").Paste
ElseIf c.FormatConditions.Count > 0 Then
For y = 1 To c.FormatConditions.Count
If c.FormatConditions(y).Interior.ColorIndex = 3 Then
Co = Co + 1
c.EntireRow.Copy
Worksheets("Hoja2").Select
Worksheets("Hoja2").Cells(Co, 1).Select
Worksheets("Hoja2").Paste
Exit For
End If
Next
End If
Next c
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas