Excel - Cálculo automático y manual de fórmulas

 
Vista:

Cálculo automático y manual de fórmulas

Publicado por mrproper (127 intervenciones) el 18/12/2007 11:46:38
Buenos días foreros,

Tengo una pequeña duda que espero podáis ayudarme a resolver.

En un libro tengo varias macros un poquito variadas. El caso es que sólo al ejecutar ciertas macros me interesaría que no se actualizaran cada vez todas las fórmulas del libro. Me explico. Si por ejemplo ejecuto una macro que elimina o inserta algunas filas de varias hojas, no me interesa que se actualicen todas las fórmulas del libro cada vez que inserto o elimino una fila de una de las hojas. Me interesaría más insertas o eliminar todas las filas que quiero de las hojas y después ya actualizar todas las fórmulas del libro. La razón lógicamente es el tiempo de cálculo: el libro ya es grande y si cada cosita que hace una macro recalcula todo, se termina eternizando. Así que la pregunta es obvia. ¿Hay alguna instrucción en el VBA para que no se me recalcule todo el libro y luego otra instrucción cuando ya quiera que se recalcule todo? Supongo que se pondría al principo de la macro (para poner cálculo manual) y despúes al final (para poner cálculo automático y obligar al cálculo de todo el libro).

Se admiten sugerencias, por si véis alguna manera mejor de hacerlo. Lo que se trata es de ahorrar algo de tiempo al ejecutar las macros.

Muchas gracias y felices fiestas a todos,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cálculo automático y manual de fórmulas

Publicado por JuanC (792 intervenciones) el 18/12/2007 12:30:18
Application .Calculation = xlManual

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por mrproper (127 intervenciones) el 18/12/2007 13:16:59
Esa instrucción la pongo justo antes de ke no kiera ke se calcule nada, ¿no?

Despues cuando ya kiera ke todo vuelva a la normalidad, la instruccion es:

Application.Calculation = xlAutomatic ????

Y para forzar en ese momento ke se calcule toda la hoja, ¿habría ke añadir alguna otra instrucción? ¿o sería suficiente con esa?

Un saludo y gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por JuanC (792 intervenciones) el 18/12/2007 13:22:38
para calcular usá Calculate
y si querés seguir probando usá la grabadora de macros...

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por mrproper (127 intervenciones) el 18/12/2007 13:43:57
Por lo ke he entendido:

cálculo manual:

Application.Calculation = xlManual

para pasarlo a automático:

Application.Calculation = xlAutomatic

y para forzar el cálculo de todo:

Application.Calculate

Espero ke de verdad ahorre tiempo, sería un alivio importante. Esta tarde misma tarde me pongo con ello.... Ya te contaré.

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por mrproper (127 intervenciones) el 18/12/2007 19:33:49
Gracias de nuevo JuanC. Como siempre insuperable.

Una macro ke tarda 1 minuto y medio, se ha reducido a 50 segundos. Pero tengo otras ke tardan muchisimo mas y estan encadenadas, asi ke creo ke ahorraré bastante tiempo en algunas de ellas.

Hasta la próxima !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por JuanC (792 intervenciones) el 19/12/2007 12:47:59
si querés pasame los codigos completos para ver si puedo reducirles
el tiempo (es mi especialidad!!, simplemente porque mi PC es un Pentium233
con 128Mb RAM...)

Saludos desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por mrproper (127 intervenciones) el 19/12/2007 19:33:26
Menos mal ke hay testigos... Eres tú kien me los ha pedido. En 1.3 segundos lo tienes en el email... jajajaja

Si cuando los veas te echas atrás lo comprenderé, y si le echas pelotas sé comprensivo conmigo ke casi todo son macros y están hechas a pelo sin saber nada de VBA (o sea con el grabador de macros casi todo, menos lo ke he preguntado en el foro y me han dicho el código ke tenía ke poner), por lo ke me temo ke va a ser como la correción del examen de un profesor... "todo lleno de tachones en rojo"... jajaja

Lo dicho, te lo mando y si no te apetece me lo dices.

Felices fiestas a todos, porke JuanC ya tiene trabajo... jajaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por Nicolas (1 intervención) el 17/02/2014 21:14:08
Juan Seria un honor para mi que revisaras mi codigo , es bueno pero es lento , no se si sea la estructura o mi poca experiencia con macros en excel , de antemano muchas gracias .

Private Sub WorkBook_Open()
Application.OnTime Now() + TimeValue("00:00:05"), "esta"
End Sub

Sub esta()
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = False

End Sub


Public Function f_EquipoResponde(str_Equipo As String) As String

Dim obj_Shell As Object

Dim obj_FileSystem As Object
Dim obj_Fichero As Object
Dim str_ContenidoFichero As String
Dim str_FicheroTemporal As String
Dim str_NombreMaquina As String


Set obj_Shell = CreateObject("WScript.Shell")

Set obj_FileSystem = CreateObject("Scripting.FileSystemObject")


str_FicheroTemporal = ThisWorkbook.Path & "\temp.txt"


obj_Shell.Run "cmd /c ping -a -n 2 -w 150 " & str_Equipo & " > """ & _
str_FicheroTemporal & """", 0, True


Set obj_Fichero = obj_FileSystem.OpenTextFile(str_FicheroTemporal, 1, False)

str_ContenidoFichero = obj_Fichero.ReadAll


obj_Fichero.Close
Set obj_Fichero = Nothing

obj_FileSystem.DeleteFile (str_FicheroTemporal)
Set obj_FileSystem = Nothing
Set obj_Shell = Nothing

Dim nombre As String


nombre = Mid(Replace(str_ContenidoFichero, vbCrLf, ""), 17, 10)



If InStr(str_ContenidoFichero, "perdidos = 0") > 0 Then
f_EquipoResponde = nombre & " ha RECIBIDOS 100%"
End If
If InStr(str_ContenidoFichero, "perdidos = 1") > 0 Then
f_EquipoResponde = nombre & "ha RECIBIDOS 50%"
End If
If InStr(str_ContenidoFichero, "perdidos = 2") > 0 Then
f_EquipoResponde = "IP VACANTE"
End If

End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cálculo automático y manual de fórmulas

Publicado por fabian (1 intervención) el 23/09/2010 23:40:58
como se saca calculo entre 3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar