Você está na página 1de 4

23/10/13

Visual Basic em Portugus: Excel: Dicas de VBA - Performance

Visual Basic em Portugus


Pgina pessoal de Jorge Paulino sobre o Visual Basic (VB.NET, ASP.NET, VB6, VBA) e algumas noticias de tecnologia
pgina inicial recursos aprendizagem lista artigos/noticias rss sobre ...

Excel: Dicas de VBA - Performance


27 Setembro 2009 Tags: M icrosoft Excel, VBA

Escola SaberExcel VBA


www.sabe re x ce l.com C urso Ex ce l VBA Macros Vide o-Aulas 20.000 Planilhas Tre inam e ntos VBA

muito importante quando se desenvolve alguma macro, que o tempo de execuo no seja exagerado, e at porque, as folhas de calculo tm normalmente diversos clculos, objectos, formataes, etc, o que pode tornar as aces mais lentas.

Mensagens Recentes
Existem no entanto pequenos truques que permitem melhorar reduzir o tempo de execuo das macros e melhorar o aspecto visual quando estas correm. Application.ScreenUpdating Esta propriedade define se o Excel actualiza ou no a folha de clculo. Por defeito est definida como verdadeira (True), mas podemos defini-la como falsa (False). Por exemplo, se queremos apagar algumas linhas ou colunas individualmente, sempre que damos uma ordem para eliminar, a folha actualizada, aumentando o tempo de execuo. Se definirmos Application.ScreenUpdating = False, s quando voltarmos a definir Application.ScreenUpdating = True, que a folha actualizada, reduzindo significativamente o tempo de execuo e o aspecto geral da macro. No seguinte exemplo, s aps o cdigo terminar, a folha ser actualizada: Sub DeleteColumns() Application.ScreenUpdating = False Range("c:c").Delete Range("b:b").Delete Range("a:a").Delete Application.ScreenUpdating = True End Sub

Operador Like
Apr 04, 2013 Este poder parecer um artigo bastante simples sobre Visual Basic e at na verdade, mas a realidade que muito programadores ou aspirantes a programadores de Visual Basic... Continue >>

Revista PROGRAMAR Edio 40 - Abril de 2013


Apr 04, 2013 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >>

M embro da Comunidade Experts-Exchange

Revista PROGRAMAR Edio 39 - Fevereiro de 2013


Jan 31, 2013 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >>

Administ. da Comunidade Portugal-a-Programar

Application.Calculation A propriedade Calculation permite definir de que forma so feitos os clculos. Sempre que escrevemos um valor numa clula, o Excel actualiza todos os clculos, em todas as clulas, o que poder levar algum tempo. Por defeito esta propriedade est definida como automtica (xlCalculationAutomatic) mas podemos no entanto definir para no ser executada, ou seja, para manual (xlCalculationManual). Por exemplo, e para testarmos esta opo, se tivermos na colunas A, B, C, D, E e F todas as clulas com uma formula para gerar um nmero aleatrio - =Rand() -, sempre que escrevermos um valor numa clula, iro ser actualizadas todas as formulas. No seguinte exemplo ser desabilitado enquanto o ciclo estiver a ser executado, e poder testar com e sem o desabilitar dos clculos automticos, para ver a diferena.

SAP Crystal Reports j disponvel para o Visual Studio 2012


Jan 15, 2013 J esto disponveis os Crystal Reports para o Visual Studio 2012, agora com a designao SAP Crystal Reports, developer version for Microsoft Visual Studio 2012. Esta... Continue >>

1 Evento Presencial da Comunidade Questionrio


Jan 06, 2013 A comunidade Portugal-aProgramar est a pensar em efectuar o primeiro evento presencial da comunidade. Trata-se de um evento de programao, em Portugus, que tem por... Continue >>

Tags
Access 2003 (1) ASP.NET

(11)

Ciclo (4) EF (2) Lambda (6)

Revista PROGRAMAR Edio 38 - Dezembro de 2012


Dec 04, 2012 (clica para download) Nesta edio continuaremos tambm a premiar os autores

Microsoft (34) Microsoft Excel (24) M icrosoft Reports


(10) NetPonto (5)
Office (1)

Noticias (47)

Parallel Extensions (4) Pessoal

(6) Revista PROGRAM AR (14)

www.jorgepaulino.com/2009/09/excel-dicas-de-vba-performance.html

1/4

23/10/13
Sub WriteValues() Dim x As Integer

Visual Basic em Portugus: Excel: Dicas de VBA - Performance

tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >>

SQL Server (5)

VB.NET

Application.Calculation = xlCalculationManual For x = 1 To 100 Cells(x, "g").Value = x Next Application.Calculation = xlCalculationAutomatic

Revista PROGRAMAR Edio 37 - Outubro de 2012


Oct 01, 2012 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >>

(73) VB6 (8) VBA (28) Visual Studio 2005 (46) Visual Studio 2008
(30) Visual Studio 2010 (17) V isual Studio 2012 (1) XML
Literals (4)

Blogs/Pginas Amigos
Caio Proiete (M VP ASP.NET) Nuno Gomes (M VP ASP.NET) Niko Neugebauer (M VP SQL Server) Jorge Rodrigues (M VP Excel) Nuno Godinho (M VP ASP.NET) Pedro Perfeito (M VP SQL Server) Paulo M orgado (M VP C#) Andr Lage (M VP Sharepoint) Nuno M ota (M VP Exchange) Sara Silva (M VP C#) Lus Abreu (M VP ASP.NET) Jorge M oura (M VP Desktop Experience) Sandro Pereira (M VP Biztalk) Fabio Domingos Excel User M aria do Cu Proiete (Office)

End Sub Application.EnableEvents Com explicado num artigo anterior, existem diversos eventos que esto disponveis no Excel. Esses eventos podem executar operaes demoradas e isso pode no ser desejado. Por defeito esta propriedade est definida como verdadeira (True) mas podemos desactivar quando queremos que os eventos no aconteam. Imagine que no evento Change, que executado sempre que algum valor seja alterado, temos um ciclo demorado. Private Sub Worksheet_Change(ByVal Target As Range) Dim x As Integer For x = 0 To 1000 Debug.Print(x) Next End Sub Com a opo Application.EnableEvents = True, sempre que escrever um valor em qualquer clula, ir correr tambm o cdigo anterior. Definindo esta propriedade como falsa, Application.EnableEvents = False, far com que apenas se execute o nosso cdigo e no os restantes eventos do documento. Sub Run() Application.EnableEvents = False For x = 1 To 100 Cells(x, "g").Value = x Next Application.EnableEvents = True End Sub

Programao Avanada em VBA para Microsoft Excel


Sep 26, 2012 Foi actualizado o programa de formao para o curso de Programao Avanada em VBA para Microsoft Excel, na Ciclo, Formao e Consultadoria. Foram incluidos novos... Continue >>

Revista PROGRAMAR Edio N 36 Agosto 2012


Aug 10, 2012 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar... Continue >>

120 Segundos: Escola de Tecnologia Microsoft


Jul 06, 2012 A Microsoft lanou um projeto, totalmente em Portugus, que pretende servir de ponto de encontro de vdeos que explicam de forma simples e rpida como se tira o melhor... Continue >>

Subscrever Novidades
Endereo de Email:

Revista PROGRAMAR Edio N 35 Junho 2012


Jun 08, 2012 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >>

Subscrever
Delivered by FeedBurner

Seguidores
Aderir a este site.
com o Google Rede Social

Isoladamente ou em conjunto, estas trs propriedades permitem melhorar significativamente o tempo de execuo de uma macro e com isso tornar a nossa folha de clculo mais atractiva. NOTA: preciso ter algum cuidado com a utilizao destas propriedades, e garantir que so sempre repostas para as definies originais, correndo-se o risco de a folha no trabalhar como est planeado. Se colocarmos, por exemplo, a propriedade Application.EnableEvents = False e no voltarmos a colocar a True, todos os eventos ficaram congelados. Para breve mais dicas de como melhorar o cdigo em VBA!

Membros (79) Mais

Revista PROGRAMAR 34 Edio Abril de 2012


Apr 17, 2012 (clica para download) Nesta edio continuaremos tambm a premiar os autores dos trs melhores artigos, dado o sucesso nas edies anteriores. E os leitores devem dar a... Continue >> Shell Let's Go
youtube .com /she ll Build a be tte r e ne rgy future Ge t starte d now on YouTube !

J membro? Iniciar sesso

Pgina teis
M SDN Portugal Visual Basic Team Blog ASP.NET Pgina Oficial

7 comentrios:
Pedro Costa disse...

M icrosoft Excel Blog The Code Project CodePlex ScottGu's Blog

www.jorgepaulino.com/2009/09/excel-dicas-de-vba-performance.html

2/4

23/10/13

Visual Basic em Portugus: Excel: Dicas de VBA - Performance


Ron's Excel Tips Developers Resource Center (VB6) The VB Programmer (VB6)

o Application.EnableEvents no conhecia. Estamos sempre a aprender. No entanto parece-me que a sua utilidade resume-se a quando temos cdigo para eventos, como o que mostras-te (Worsheet_Change). Ou estarei enganado? o Application.ScreenUpdating no tem s a utilidade de acelerar o processo como tambm de ser mais agradvel ao utilizador, sem que este esteja a ver coisas, possivelmente estranhas, a acontecerem rapidamente. Em conjunto com o Application.Statusbar bastante bom. Alis apesar de no provocar qualquer tipo de melhoria de performance verdadeiramente (na verdade at pode tirar alguma, mas de forma negligencivel), o Application.Statusbar pode at dar a iluso de ser mais rpido se oferecer informaes do que est a fazer ou do que falta ainda fazer. Bastante til em processos muito demorados. Exemplo: Application.statusbar = "A processar registo " & actual & " de " & total No esquecer de no final colocar: Application.Statusbar = False para fazer o reset para defeito. No h nada de mais frustrante que ter um processo demorado e no saber se bloqueou ou se ainda falta muito. O tempo pode ser o mesmo mas psicologicamente parece mais. J agora sou MetalFatigue do P@P. J me tens dado umas valentes ajudas em VBA :) Principalmente ao inicio quando eu era ainda um maarico nisto. Cumprimentos
12 Outubr o, 2009

Visual Basic 6 (VB6) Experts-Exchange (Frum) Portugal-a-Programar (Frum)

Histrico
Histrico

jpaulino disse... >> No entanto parece-me que a sua utilidade resume-se a quando temos cdigo para eventos, como o que mostras-te (Worsheet_Change). O EnableEvents = False serve para que os eventos no "disparem", e isso poder reduzir bastante o tempo de execuo. No falei no Application.StatusBar porque no est relacionado com performance. >> J agora sou MetalFatigue do P@P. J me tens dado umas valentes ajudas em VBA :) Ainda bem que tenho ajudado e para breve mais alguns artigos sobre VBA. Fica prometido! Um abrao Jorge Paulino
12 Outubr o, 2009

Pedro Costa disse... >>No falei no Application.StatusBar porque no est relacionado com performance. Sim eu compreendi era s uma pequena dica. Pois tal como disse no tem ganho real. O ganho ilusrio. >>>Ainda bem que tenho ajudado e para breve mais alguns artigos sobre VBA. Fica prometido! No prometas que eu at prefiro .NET (C# ou VB). No entanto por razes profissionais sou obrigado a estar mais por dentro de VBA, infelizmente para mim.
12 Outubr o, 2009

www.jorgepaulino.com/2009/09/excel-dicas-de-vba-performance.html

3/4

23/10/13
Annimo disse...

Visual Basic em Portugus: Excel: Dicas de VBA - Performance

Pessoal, poderia apresentar uma pequena macro para uso de teste em clula formatada em vermelho?
10 Dezembr o, 2011

Jorge Paulino disse... Ol, No entendi qual o objectivo. Pode dar mais detalhes?
14 Dezembr o, 2011

Annimo disse... Ol boa tarde. Algum sabe como inserir um valor por defeito num textbox no vba excel? agradeo
16 Mar o, 2013

Jorge Paulino disse... E a textbox est num userform?


16 Mar o, 2013

Enviar um comentrio

Planilhas Excel Prontas


www.luz.vc/modelo-planilhas

Planilhas de Excel Prontas com Vdeo Tutoriais. Cadastre-se Agora! Mensagem mais recente Mensagem antiga

2009 Visual Basic em Portugus, Using the StudioPress WordPress Theme Bloggerized by Girly Blogger for BTemplates. Full RSS - Comments RSS vbtuga{at}gmail.com

www.jorgepaulino.com/2009/09/excel-dicas-de-vba-performance.html

4/4