filtrar celdas por color no se actualiza

3 envíos / 0 nuevos
Último envío
cristianlunab
Imagen de cristianlunab
Offline
última acción: Hace 6 meses 2 semanas
alta: 29/01/2018 - 01:53
Puntos: 25
filtrar celdas por color no se actualiza

Tengo este archivo y puse la funcion para saber cuantas celdas estan de color pero al momento de filtrar por mes no se actualiza el total de celdas  por color ayuda

AdjuntoTamaño
File libro1.xlsm13.87 KB
Cron
Imagen de Cron
Offline
última acción: Hace 13 horas 43 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 10570
Hasta donde yo sé, no existe

Hasta donde yo sé, no existe un evento que se lance al cambiar el color de una celda.

Las soluciones son de compromiso y no buenas.

Una de las soluciones de compromiso es que la primera línea de tu rutina (después de los DIM) sea:

Application.volatile

De esta manera lo que consigues es que la función se ejecute cada vez que se recalcula la hoja. Así puedes cambiar los colores y justo antes de comprobar la suma, pulsa F9 (o cambia cualquier celda) y se recalculará tu UDF.

Otras maneras que he visto a lo largo del tiempo son peores que esta (por ejemplo tener un bucle infinito corriendo en segundo plano, y para eso tienes que ponerle tiempo de espera y Doevents en cada ciclo...). Esto impide que puedas ejecutar cualquier macro en la hoja (pues no pueden correr dos a la vez)

 

Un saludo

FernandoML
Imagen de FernandoML
Offline
última acción: Hace 1 mes 3 semanas
alta: 01/02/2018 - 19:53
Puntos: 55
Usa este codigo haber si es

Usa este codigo haber si es lo que necesitas

Function ContarPorColor(ByRef Rango_Datos As Range, ByRef Condicion_Color As Range) As Long
    Dim Datos As Range
    Dim ColorX As Long
   
    ColorX = Condicion_Color.Interior.ColorIndex
    For Each datox In Rango_Datos
        If Rows(datox.Row).EntireRow.Hidden = False Then
            If datox.Interior.ColorIndex = ColorX Then
                ContarPorColor = ContarPorColor + 1
            End If
        End If
    Next
End Function

 

Un saludo