Function en VBA

11/12/2006 - 11:46 por Carlos | Informe spam
Hola a todos
He definido una función en un modulo para tener una fórmula que me sume los
valores de un rango que tengan un color de fondo determinado (excel no tiene
un sumarsi en función de los formatos de las celdas). Luego utilizo la
fórmula en celdas de la hoja como si fuese una función cualquiera de excel
(=sumacolor(A1:A100;35)). El problema que tengo es que cuando hago cambios en
dicho rango (cambio los colores) no se me actualiza automáticamente el
resultado de fórmula y tengo que ir celda a celda (donde tengo dicha fórmula)
para que me de el resultado correcto. Hay alguna forma para que se actualice
el resultado automáticamente?

La función que he definido es la siguiente (por si le interesa a alguien):

Function sumacolor(mirango As Range, color As Integer) As Double
sumacolor = 0
If color > 0 Then
For i = 1 To mirango.Count
If mirango(i).Interior.ColorIndex = color Then
sumacolor = sumacolor + mirango(i).Value
End If
Next i
Else
For i = 1 To mirango.Count
If mirango(i).Interior.ColorIndex = xlNone Then
sumacolor = sumacolor + mirango(i).Value
End If
Next i

End If

End Function
 

Leer las respuestas

#1 Héctor Miguel
12/12/2006 - 06:13 | Informe spam
hola, Carlos !

He definido una funcion... que me sume los valores de un rango que tengan un color de fondo determinado ...
El problema... es que cuando hago cambios... (cambio los colores) no se me actualiza automaticamente el resultado ...



toma en cuenta que [hasta donde se] NO existe ningun evento que pueda detectar un 'simple' cambio de formato en celdas
[es decir] si alguna celda ya estaba [o no] coloreada, y se decide por cambiar/quitar/... el color que tenia... -???-
-> es necesario que a la funcion la pongas como primera instruccion -> Application.Volatile
lo que ocasionaria que cada vez que ocurra [u obligues a] un re/calculo del modelo...
-> [todas] las celdas donde se utilice la funcion van a ser re/calculadas ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Preguntas similares