Macro para aplicar formulas a las hojas de datos y actualizar hojas de datos en Excel vb.

Si alguien me puede ayudar como puedo actualizar las hojas de dato en Excel. Tengo una macro para sumar celdas de colores en Excel, en la hoja1 tengo las sumas de todas las hojas, hoja2... Hasta la hoja80. Pero no me actualiza la sumas de las otros hojas, tengo que darle doble clic en donde esta la formula para actualizar. Este es el código que tengo en un modulo.

Option Explicit
Public Function Contar_Por_Color(ByVal Rango As Range, ByVal Color As Integer) As Single
Dim c As Range
Dim co1 As Long
 For Each c In Rango
 If c.Interior.ColorIndex = Color Then
 co1 = co1 + 1
 End If
 Next c
 Contar_Por_Color = co1
 Application.ScreenUpdating = True
End Function.

Y estas son las formulas que tengo en la hoja1

=Contar_Por_Color(Hoja2!A8:AC45;6)

=Contar_Por_Color(Hoja3!A8:AC45;3)

=Contar_Por_Color(Hoja4!A8:AC45;5)

bueno así continua hasta =Contar_Por_Color(Hoja80!A8:AC45;44).

Alguien me puede ayudar explicándome como hacer para que me actualice de inmediato la sumas de las celdas de colores sin tener que hacer mas nada?. ¿Si es posible también como hacer otra macro que para ejecutar las formulas directamente del código?.

2 Respuestas

Respuesta
1

. 31.01.17 VBA Función contar color

Buenos días

Al tratarse de una función y no de una rutina, debes colocarle al principio la siguiente instrucción, para que recallcule a cada cambio, sea que tengas recálculo automático o manual, en cuyo caso deberás presionar F9:

Application.Volatile True

Tal vez quiera probar con esta otra variante que básicamente cuenta las celdas de un rango (segundo argumento) con un color igual al de una celda de referencia (primer argumento). Puede ser, de hecho, la misma donde tienes la función:

Function CuentaColor(CeldaCol As Range, ElRango As Range)
Application.Volatile True '<<faltaba esto  
'  
Dim LaCelda As Range
Dim ElColor As Integer
Dim Resultado
ElColor = CeldaCol.Interior.ColorIndex
For Each LaCelda In ElRango
  If LaCelda.Interior.ColorIndex = ElColor Then
    Resultado = 1 + Resultado
  End If
Next LaCelda
CuentaColor = Resultado
End Function

Esta función evita tener que indicarle el código de color en cada fórmula.

Espero que ahora sí te funcione

Un abrazo

Fer

.

Respuesta
1

Tienes varias opciones. Para mi la más cómoda es CTRL+ALT+F9, pero también puedes hacelo por código mediante

Application. Calculate

que puedes ponerlo en el evento que más útil te sea (workbook_open, worksheet_change, etc)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas