Quando precisamos de performance em processamento de grandes massas de dados no Excel, principalmente quando este processamento vai escrevendo ao longo de nossas planilhas, habitualmente desligamos algumas funcionalidades, tais como a atualização da tela, interceptação de eventos e, ainda mais eficiente, alteramos o processo de cálculo de automático para manual. Porém, em uma situação muito particular, esse último passo não funciona: quando temos câmeras ativas no Excel. E aí? Como resolver este problema?
O Excel possui dois métodos principais de cálculo: Automático e Manual. Este primeiro, padrão e mais utilizado, provoca um recálculo de toda a pasta de trabalho sempre que algo é alterado. O segundo, acata toda e qualquer alteração e, quando ordenado (tecla F9), efetua de uma única vez o cálculo. Este segundo é muito útil em caso de planilhas maiores, com milhares de fórmulas. Dependendo do tamanho das planilhas, torna-se impraticável manter o recálculo em automático.
A alteração, via menus, da modalidade de cálculo se dá sa seguinte maneira:
Menu FÓRMULAS, em seguida OPÇÕES DE CÁLCULO:
Lembrando que, quando estamos trabalhando com cálculo manual, o recálculo ocorre ao pressionarmos a tecla F9.
A alteração do método de cálculo, via VBA, é através da instrução abaixo:
Application.Calculation = xlCalculationManual
Para restabelecermos o recálculo Automático utilizamos a seguinte instrução:
Application.Calculation = xlCalculationAutomatic
Mas, e quando solicitamos que o recálculo passe para manual e o Excel "não obedece"?
Quando temos, em nossa pasta de trabalho, pelo menos uma câmera ativa, o Excel simplesmente ignora a instrução para não recalcular e efetua a operação, com o objetivo de atualizar a câmera.
Abaixo, ilustramos nosso modelo:
Podemos notar acima que temos uma imagem à direita, exibida por uma câmera apontada para a região "B6:C12", conforme destacamos em AMARELO.
Isso significa que toda e qualquer alteração na pasta de trabalho provocará um recálculo para atualizar a câmera, independentemente da modalidade de cálculo escolhida. Para desligarmos a câmera, devemos remover o apontamento, ou seja, a fórmula por detrás da câmera.
Abaixo, temos o ódigo que desliga a nossa câmera, aqui denominada "PICTURE 3":
Sub DesligarCamera()
Sheets("Camera").Shapes.Range(Array("Picture 3")).Select
Selection.Formula = ""
End Sub
Notemos, abaixo, que a FÓRMULA da câmera foi removida, desvinculando-a da planilha, liberando-a de atualizações. Assim o cálculo manual passa a funcionar normalmente.
Para religarmos a câmera, devolvemos a ela a sua fórmula de origem:
Sub LigarCamera()
Sheets("Camera").Shapes.Range(Array("Picture 3")).Select
Selection.Formula = "=$B$6:$C$12"
End Sub
Para pastas com inúmeras câmeras, a sugestão é fazer um looping em todas as planilhas e, em cada uma, um looping nas SHAPES. Armazenar a combinação PLANILHA X IMAGEM X FORMULA em uma planilha temporária, demover todas as fórmulas e, ao final do processamento, desfazer toda a operação.
Quaisquer dívidas, estamos à disposição.
Aproveitem e conheçam o site da nossa empresa: www.excelline.com.br
Leiam também outros artigos em NOSSO BLOG.
Compre nosso material de estudo:
Contem conosco!
Agosto/2016
GILBERTO GOMES
ExcelLine - Office World
A alteração, via menus, da modalidade de cálculo se dá sa seguinte maneira:
Menu FÓRMULAS, em seguida OPÇÕES DE CÁLCULO:
Ao final, escolhemos AUTOMÁTICO ou MANUAL.
Lembrando que, quando estamos trabalhando com cálculo manual, o recálculo ocorre ao pressionarmos a tecla F9.
A alteração do método de cálculo, via VBA, é através da instrução abaixo:
Application.Calculation = xlCalculationManual
Para restabelecermos o recálculo Automático utilizamos a seguinte instrução:
Application.Calculation = xlCalculationAutomatic
Mas, e quando solicitamos que o recálculo passe para manual e o Excel "não obedece"?
Quando temos, em nossa pasta de trabalho, pelo menos uma câmera ativa, o Excel simplesmente ignora a instrução para não recalcular e efetua a operação, com o objetivo de atualizar a câmera.
Abaixo, ilustramos nosso modelo:
Podemos notar acima que temos uma imagem à direita, exibida por uma câmera apontada para a região "B6:C12", conforme destacamos em AMARELO.
Isso significa que toda e qualquer alteração na pasta de trabalho provocará um recálculo para atualizar a câmera, independentemente da modalidade de cálculo escolhida. Para desligarmos a câmera, devemos remover o apontamento, ou seja, a fórmula por detrás da câmera.
Abaixo, temos o ódigo que desliga a nossa câmera, aqui denominada "PICTURE 3":
Sub DesligarCamera()
Sheets("Camera").Shapes.Range(Array("Picture 3")).Select
Selection.Formula = ""
End Sub
Notemos, abaixo, que a FÓRMULA da câmera foi removida, desvinculando-a da planilha, liberando-a de atualizações. Assim o cálculo manual passa a funcionar normalmente.
Para religarmos a câmera, devolvemos a ela a sua fórmula de origem:
Sub LigarCamera()
Sheets("Camera").Shapes.Range(Array("Picture 3")).Select
Selection.Formula = "=$B$6:$C$12"
End Sub
Quaisquer dívidas, estamos à disposição.
Aproveitem e conheçam o site da nossa empresa: www.excelline.com.br
Leiam também outros artigos em NOSSO BLOG.
Compre nosso material de estudo:
Contem conosco!
Agosto/2016
GILBERTO GOMES
ExcelLine - Office World