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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Carlos
12/12/2006 - 08:26 | Informe spam
Gracias HM
He estado investigando por mi cuenta y es lo único que funciona. El problema
es que no puedo ejecutar ninguna macro cuando tengo ese libro abierto ya que
le cuesta muchísimo tiempo.

"Héctor Miguel" escribió:

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.



Respuesta Responder a este mensaje
#3 Héctor Miguel
12/12/2006 - 23:44 | Informe spam
hola, Carlos !

He estado investigando por mi cuenta y es lo unico que funciona.
El problema es que no puedo ejecutar ninguna macro cuando tengo ese libro abierto ya que le cuesta muchisimo tiempo.



[en ese caso]... el 'problema' [probablemente] esta en el ab/uso de caracteristicas que 'consumen recursos' para el re/calculo [p.e.]
- muchas/demasiadas formulas, formatos, condicionantes, vinculos, objetos, macros, [etc.] -?

[a veces] es mejor 'sacrificar vista'... en beneficio de un mejor 'rendimiento/proceso/tiempo/...' -?-

comentas [si hubiera] algun detalle adicional ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida