Regresar a la Pagina de Inicio

15 mar. 2010

udf: sumar y contar celdas segun su color con VBA

Para ampliar los conceptos del post anterior, vamos a ver un ejemplo sobre el cual he recibido muchas consultas: sumar según el color de fondo de la celda.
La primera vez que me plantearon este problema lo resolví mediante macros, pero ya que estamos en el tema de las udf, lo resolveremos de esta forma.

3 comentarios:

Anónimo dijo...

Como hago para que se recalcule el valor de la función cuando modifico el color o valor de una celda del rango?
Muchas Gracias

Damian Omar Silva dijo...

Estimado: si el recalculo en Excel se encuentra activado (siempre es así, salvo que manualmente o mediante una macro lo hayas cambiado), cada vez que se modifica el valor de una celda todas las formulas se recalculan de forma automática, sin necesidad de hacer nada.
La mala noticia es que Excel no "dispara" un evento especial cada vez que se cambien los colores de las celdas, y no resulta posible que una formula se recalcule con el simple hecho de cambiar de color de fondo o de fuente.
Pero podemos hacer un pequeño truco: te vas a un modulo y escribís:
Private Sub Recalcular(H as String)
Sheets(H).Calculate
End Sub

El Sub de arriba recibe un argumento, que es el nombre de la hoja en donde tenes las funciones que suman por color.
Ahora te vas a la ventana de código de la hoja y en los eventos Worksheet_Change y Worksheet_SelectionChange pones:
Recalcular(Activesheet.Name)

Y listo. Esto fuerza a Recalcular el libro (instrucción: calculate) cada vez que el usuario cambie la selección actual o bien modifique algún valor de hoja.

De esta forma, por decirlo de alguna manera, estaríamos creando los eventos necesarios paradetectar cambios y que las funciones se actualicen cada vez que Excel detecte cambios,
Proba y cualquier cosa me avisas, que te armo un archivo y te lo envio.
Gracias por tu mensaje.



End Sub

Damian Omar Silva dijo...

O bien, para hacerla mas fácil, te vas a la ventana de código de la hoja y en los eventos Worksheet_Change y Worksheet_SelectionChange solamente ingresas:
Activesheet.Calculate

Y listo, mas sencillo y sin la necesidad de crear procedimientos aparte.

Publicar un comentario

Regresar a la Pagina de Inicio

ENTRADAS MAS RECIENTES (ULTIMAS 10)


las + vistas

10 ULTIMOS COMENTARIOS DE MIS LECTORES

Free counters!
blog de periodismo




GRAFICA RIO BRAVO
Serigrafia-Offset
Rosario - Santa Fe - Argentina
TE: 0341 4664028