Notifications
Clear all

Desabilitar cálculos automáticos para sheets específicas

7 Posts
4 Usuários
0 Reactions
1,416 Visualizações
(@rafa_gomes)
Posts: 0
New Member
Topic starter
 

Olá pessoal!

Gostaria de solicitar a ajuda de vocês com uma questão.

Estou trabalhando com um documento de Excel com muitas planilhas, que podem ser divididas em grupos conforme a necessidade.
Estes grupos trabalham independentes um dos outros, mas o Excel realiza o cálculo em todas elas independentemente de qual planilha eu alterar algo que se link a alguma fórmula.

A minha ideia seria desabilitar o cálculo automático das planilhas que não estão em seu "momento de uso", ou seja, que não sendo utilizadas para visualizar ou gerar informação para a planilha que está ativa.
- Seria possível desabilitar o cálculo automático em algumas planilhas específicas? Se sim, poderiam me fornecer um exemplo de código para 3 planilhas; vamos nomeá-las de "Sheet1", "Sheet2" e "Sheet3".

Muito obrigado!
Forte abraço!

 
Postado : 08/08/2018 7:25 am
(@xlarruda)
Posts: 0
New Member
 

Insira esse código no objeto "Essa_Pasta_de_Trabalho" da sua Workbook:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Name = "Sheet1" Or ActiveSheet.Name = "Sheet2" _
Or ActiveSheet.Name = "Sheet3" Then
Application.Calculation = xlCalculationManual
Else
Application.Calculation = xlCalculationAutomatic
End If
End Sub

Abrç!

 
Postado : 08/08/2018 8:42 am
(@rafa_gomes)
Posts: 0
New Member
Topic starter
 

Olá André Arruda, obrigado pelo retorno.

O código que você postou desabilita o cálculo para todas as planilhas. Você saberia me dizer como eu consigo desabilitar para algumas das planilhas em específico? Por ex, quando eu estiver na Sheet1 eu quero que o Excel efetue os cálculos da Sheet1 e da Sheet2, MAS NÃO efetue os cálculos da planilha 3.

Isso seria possível?

Obrigado,
Abraço!

Rafa

 
Postado : 08/08/2018 9:53 am
(@xlarruda)
Posts: 0
New Member
 

O código acima desabilita o cálculo automático se o nome da planilha ativa for Sheet1, Sheet2 ou Sheet3. Qualquer outra planilha que estiver ativa e não possuir um desses três nomes, seu cálculo será automático.

Quanto ao seu questionamento, eu não tenho certeza mas eu acho que o Excel não fica calculando todas as abas da sua pasta de trabalho. Ele só realiza cálculos na planilha ativa. Sendo assim o cálculo da Sheet2 só será realizado no momento que você ativá-la.

Resumindo, não sei como fazer isso que me pediu.

 
Postado : 08/08/2018 10:53 am
(@edsonbr)
Posts: 0
New Member
 

Boa tarde, colegas

Acho que a propriedade a usar teria que ser a EnableCalculation da Worksheet:

Sub DesativaRecálculoPlans123()
  Dim ws As Worksheet
  For Each ws In ThisWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3"))
    ws.EnableCalculation = False
  Next ws
End Sub

Posteriormente, ao restabelecer para True o recálculo é feito no mesmo instante, não sendo necessário usar ws.Calculate ou Application.Calculate.

 
Postado : 08/08/2018 12:19 pm
(@xlarruda)
Posts: 0
New Member
 

Não conhecia esse membro da classe worksheet.

Até pesquisei um pouco na biblioteca mas não havia reparado nele.

Obrigado colega EdsonBR.

 
Postado : 08/08/2018 12:34 pm
(@mprudencio)
Posts: 0
New Member
 

Tb nao conhecia! Muito boa esta opção.

 
Postado : 08/08/2018 3:48 pm