Saber celda que cambia

18/12/2005 - 12:48 por Principiante | Informe spam
Hola grupo.

En una hoja voy cambiando el color de fondo de una celda y hago una suma
de las celdas que poseen el mismo color de fondo.

El caso es que la función que hace esa suma se recalcula cada vez que se
produce un cambio del valor de alguna de las celdas con ese color. Para
que se recalculen cada vez que haya algún cambio en esa celda he puesto
en el evento de la hoja: Worksheet_SelectionChange la instrucción:
Application.CalculateFull

Lo que busco es saber como hacer para que sólo se recalcule todo cuando
se produzca un cambio de color en la celda donde voy cambiando el color
para sumar Ej: C2 pues sino se ejecuta cada vez que salgo de una celda
por ejemplo.

Supongo que se debe controlar el parámetro Target de la función pero no
sé como hacerlo.

Gracias por cualquier ayuda.

Principiante.

Preguntas similare

Leer las respuestas

#11 Principiante
21/12/2005 - 15:25 | Informe spam
Gracias Héctor.

Solucionado.

Principiante.

Héctor Miguel escribió:
hola, Principiante !


De momento simplemente hare que se actualice en cada cambio que se produzca en cualquier celda.
En Worksheet_SelectionChange la instrucción: Application.CalculateFull




op1: es probable que pudieras 'mejorar el rendimiento' de tu modelo en el re/calculo de dichas funciones...
si cambias el -> Application.CalculateFull por una instruccion que re/calculo SOLAMENTE un rango
p.e. -> [a1].Calculate [aprovechando que a tu funcion ya le has puesto -> Application.Volatile] :))

op2: posiblemente te sea de utiidad agregar un argumento que 'suspeda' [temporalmente] los 'FullCalculates' -?-
te paso un post de una consulta +/- parecida al final ;)

op3: quizas te resultara 'atractivo' cambiar de funciones VBA por macro-funciones de excel4 ;)
[ya comentaras mas adelante] :))

saludos,
hector.

el post anterior ==> hola, Esteban !


Estoy sumando celdas coloreadas con la macro que aparece en http://www.excelesp.com/funcperso01.htm
... pero quisiera modificar el codigo para incluir un boton que la ejecute unicamente cuando sea presionado [...]




considerando que se trata de una FUNCION -personalizada- para utilizarse 'directamente' en las hojas de calculo...
[creo que] no tendria sentido 'obligarla/sujetarla/condicionarla/...' a un objeto que poco [o nada] tuviera que ver con las celdas -?-
[ademas] toma en cuenta que dicha funcion pudiera encontrarse NO en una sola... si no en varias celdas [y hojas del libro] :))

[supongo que] una alernativa +/- 'aceptable' seria agregar un parametro que 'suspenda' los re/calculos de la funcion ;)
[con lo cual] podrias incluso mantener varias funciones [misma hoja o en varias] con 'diferente' forma de auto-actualizacion :))

prueba con las siguientes modificaciones a la funcion para sumar celdas segun color 'de muestra'...
Function SumarColorFondo( _
CeldaColor As Range, _
RangoASumar As Range, _
Suspender As Range) As Double
If IsEmpty(Suspender) Then Exit Function
Dim Celda As Range: Application.Volatile
For Each Celda In RangoASumar
If Celda.Interior.ColorIndex = CeldaColor.Cells(1, 1).Interior.ColorIndex _
Then SumarColorFondo = SumarColorFondo + Celda
Next
End Function

solo se ha agregado el parametro/argumento 'Suspender' que requiere de alguna celda 'adicional' a los otros argumentos [p.e.]
=SumarColorFondo(C1,A1:A10,D5) donde...
'C1' es la celda que tiene el color de fondo 'muestra'
'A1:A10' es el rango del que se desea sumar los valores cuyo color de celda sea igual al de la 'muestra' y...
'D5' es una celda 'adicional' que... si se deja 'vacia'... la funcion se suspende
=> toma nota que al suspender la funcion tampoco se 'sostiene' el valor anterior que se hubiera 'detectado'
-> obtendras un rotundo y soberano cero -0- mientras la celda 'Suspender' se mantenga vacia

saludos,
hector.


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida