Notifications
Clear all

Macro só dispara no calculo manual

4 Posts
2 Usuários
0 Reactions
998 Visualizações
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa tarde
Não sei se estou postando no lugar correto, se não for, favor mover.:D Em uma pasta, tenho umas 12 macros mescladas com formulas e funções UDF. Funcionamento normal sem conflito e demora. Adicionei uma ultima para fechar o "pacote", roda, mas leva uma eternidade para mostrar qualquer coisa, desabilitando o calculo automático o resultado é imediato, existe algum código que eu possa usar para resolver esse problema? Apesar de a planilha ser ”pesada” a maquina tem processador e memoria suficiente. No fórum formulas e funções, tem um tópico “Reduzir tempo de calculo”, no qual o alexandrevba orienta a consultar:

http://finslab.com/contabilidade-e-escr ... o-799.html
http://safepctuga.blogspot.com.br/2012/ ... excel.html

Fiz a pesquisa, mas não resolveu o problema. :roll:

Grato

 
Postado : 01/05/2013 9:58 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom, sem saber oque/e como é processado e que tipo de formulas existem, nem com adivinhação.
Qdo diz que tem processador /memoria suficiente; nem sempre a quantidade é sinonimo de agilidade.
Cada modificação/atualização da planilha, toda ela é recalculada, independentemente de haver sido modificação os dados/valores de formulas (vc pode somente alterar; por exemplo; uma descrição ou editar inadivertidamente uma celula; já é motivo para o recalculo).
http://office.microsoft.com/pt-br/excel ... 54149.aspx
http://usuariosdoexcel.wordpress.com/20 ... ttlenecks/
http://www.cavalcanteassociados.com.br/ ... php?id=476
Então dependendo a qtde de registros/tipo de formulas pode ser + ou - demorado.
Qdo executa uma macro e a mesma efetua algum processo que dispare a atualização, então a execução da macro ocorre junto (ou intercalado) com o recalculo.
Se o problema maior e essa ultima rotina, e a mesma não afetar nenhum dado que precise se recalculado,
inclua nessa rotina o comando para mudar o calculo para manual e ao terminar a rotina, retorne para automatico:
Sub....
Dim...
Application.Calculation = xlManual
...rotina completa
Application.Calculation = xlAutomatic
end sub

 
Postado : 01/05/2013 10:54 am
(@dimorais)
Posts: 431
Honorable Member
Topic starter
 

Boa tarde
Reinaldo, implementando o sugerido:
Sub....
Dim...
Application.Calculation = xlManual
...rotina completa
Application.Calculation = xlAutomatic
end sub

O problema foi resolvido. :lol: Tem problema usar esse recurso em todas as macros ou só em casos assim ? :roll:
Grato :D

 
Postado : 01/05/2013 12:54 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O unico problema e se houver algum valor calculado que necessite, não o terá atualizado.

 
Postado : 01/05/2013 3:33 pm