quarta-feira, 25 de novembro de 2009

Iniciando a gravação de macros



Para começar uma macro através do VBA:
1)Inicie o Ms-Excel;
2)Clique no menu Ferramentas - Aponte para o comando Macro - Clique no comando Macros (Importante não clique no comando Gravar Nova Macro);
3)Dê um nome para a macro (o nome deve sempre começar com uma letra e não pode ter espaços em branco);
4) Clique no comando Criar.
Automaticamente o programa Visual Basic para o Aplicativo é iniciado (veja a figura acima) mostrando na sua janela três painéis.
* O painel do Código, onde o cursor deve está piscando, esperando a digitação;
* O painel do Project Explorer, onde são mostrados os objetos que fazem parte do projeto Teste;
* O painel das Propriedades, que mostrará as propriedades dos componentes do projeto Teste.

domingo, 22 de novembro de 2009

Uma Introdução ao VBA

A partir desta data colocarei uma série de posts voltados para uma introdução ao Visual Basic para o Excel. Todas as informações são traduções de uma sequência de lições do site msdn da Microsoft.
Lição nº 1 - Iniciando o conhecimento em VBA
Personalizar o Ms-Excel 2003 com VBA não é uma tarefa difícil, muito pelo contrário, sem necessitar de formação em TI ou Ciência da Computação, sem precisar saber qualquer linguagem de programação, seja C ou C++, ou ainda Java, qualquer usuário pode utilizar facilmente a linguagem Visual Basic para o Aplicativo.
Observe o código abaixo.

Sub ColorirSegundaLinha ()
Const Cinza = 15
Range("A2").EntireRow.Select
Do While ActiveCell.Value <> ""
Selection.Interior.ColorIndex = Cinza
ActiveCell.Offset(2,0).EntireRow.Select
Loop
End Sub

Você imagina o que esse código faz quando executado no Ms-Excel??
As linhas acima adicionarão um preenchimento cinza, a partir da linha 2, alternando entre linha sem preenchimento e linhas com preenchimento (2,4, 6, ...) até encontrar uma linha com a primeira célula vazia.
O código começa declarando uma constante de nome cinza e definindo o valor igual a 15 (a cor cinza na paleta de cores do Excel).
A linha seguinte - Range("A2").EntireRow.Select - seleciona a linha da célula A2. Essa ação faz com que a primeira célula da linha seja sempre a célula ativa.
Na sequência é iniciado um loop - Do While ... Loop - que é executado "enquanto" não for encontrada nenhuma célula vazia.
No interior do loop são executadas duas instruções:
a primeira coloca a cor de preenchimento cinza na linha inteira;
a segunda seleciona a linha inteira duas posições abaixo da célula ativa.

A facilidade de escrever esse código mostra que a programação em VBA não é um bicho de sete cabeças.

No próximo post: Conhecendo o modelo de objetos do VBA.

sexta-feira, 13 de novembro de 2009

Fechando a pasta de trabalho com VBA

Esta dica é para quem está começando a trabalhar com o Visual Basic para o Aplicativo, linguagem de programação utilizada pelos aplicativos Office.
Se você deseja fechar a pasta de trabalho na qual está sendo executado o código de programação, execute o procedimento abaixo.

Sub FecharSemSalvar()
ThisWorkbook.Close SaveChanges:=False
End Sub

A propriedade ThisWorkbook sempre retorna a pasta de trabalho na qual o código está sendo executado.
Não utilize a propriedade ActiveWorkbook, pois ela não retorna a pasta de trabalho que está executando o código; ela retorna a pasta de trabalho que está chamando o código.

SaveChanges:=false é um dos três argumentos do método Close. Os outros dois são:

Filename - é evidente que é o nome do arquivo onde serão gravadas as alterações caso Savechanges:=true

RouteWorkbook - é um valor lógico que define se o arquivo deve ser enviado para o próximo destinatário de uma lista de circulação.
Bons delírios!

quarta-feira, 21 de outubro de 2009

Localizando valores repetidos com a função Cont.Se



No último treinamento que ministrei de Excel Avançado, um dos participantes perguntou como poderia encontrar nomes de pessoas que estivessem repetidos numa lista de mais de 11000 registros, pois ela estava responsável por fazer a distribuição dos valores referentes às passagens de ônibus dos atendentes. Como não sabia como fazer, a pessoa disse que colocou tudo em ordem alfabética crescente e verificou um a um se existiam repetições. Para uma lista pequena, esse método pode ser cansativo, porém funciona. Para uma lista muito extensa, aí o trabalho braçal se torna imenso.
A solução para esse problema é utilizar a função cont.se da categoria estatística e que funciona de forma muito simples. Ela conta valores de acordo com uma condição definida pelo usuário. Vejamos:
A sintaxe da função é: =cont.se(intervalo;condição)
Verifique na figura acima que a fórmula foi criada na coluna B, porém poderia ficar em qualquer coluna desejada.
O intervalo $A$2:$A$15 é fixo para que depois possamos copiar a fórmula para as outras células.
A condição é a própria célula A2 como referência relativa, pois para cada célula onde ela for copiada, a condição será modificada como a próxima célula.
Observação: essa fórmula funciona em qualquer versão do Excel.

terça-feira, 21 de julho de 2009

Zebra na Planilha


Quando estava ministrando um treinamento de Excel Avançado, um dos participantes perguntou se era possível zebrar a planilha, ou seja, fazer com que as linhas ficassem com cores diferentes (por exemplo, as linhas ímpares cinzas e as pares brancas).
Para fazer isso é necessário utilizar a Formatação Condicional e as funções (Excel 2003) Mod (matemática e trigonométrica) e lin (procura e referência), ou função (Excel 2007) ÉPar ou Éimpar.
Vamos lá no passo a passo.
1)Selecione o intervalo da linha 1 até a linha 20 (use o mouse sobre o número de cada linha);
2)Clique no menu Formatar -> Formatação Condicional (versão 2003) ou Guia Início -> Grupo Estilo -> Formatação Condicional;
3)Na caixa de diálogo Formatação Condicional da versão 2003 selecione a opção a Fórmula É e escreva a seguinte expressão =Mod(Lin(A1);2) -> essa expressão retorna o número da linha para a função Mod que calcula o resto da divisão entre o número da linha e o divisor 2. Se a divisão for exata a função Mod retorna 0, que é a mesma coisa que Falso, e se a divisão não for exata, Mod calcula 1 que significa verdadeiro.
3)Na lista da Formatação Condicional da versão 2007 clique em Nova regra e na caixa de diálogo Nova Regra de Formatação, selecione a opção Usar Fórmula para Determinar Quais Células Devem Ser Formatadas. Escreva a seguinte expressão =Mod(Lin(A1);2) idêntica a versão 2003.
4) Para ambas as versões clique no botão formatar e selecione a guia Padrão (versão 2003) ou Preenchimento (2007) e clique na cor desejada;
5) Clique em Ok até que a formatação seja aplicada.
Você pode fazer muito mais com formatação condicional e funções de planilha.

sexta-feira, 10 de julho de 2009

Controles de Formulários do Excel 2007



Pessoal,
Quem já é craque em construir macros e atribuí-las a controles de formulários (botões, caixas de combinação, ...) dentro da planilha, com certeza vai perder um pouco de tempo para saber onde os caras da Microsoft esconderam a barra de ferramentas formulários. Abaixo segue o caminho das pedras:
1)Se na Faixa de Opções ainda não tem a Guia Desenvolvedor, clique no botão Office (canto superior esquerdo do Excel);
2)Clique no botão Opções do Excel (canto inferior direito da lista de opções);
3)Na opção Mais Usados marque a caixa de seleção Mostrar Guia Desenvolvedor e depois Ok;
4)Na Guia Desenvolvedor, clique no comando Inserir do grupo Controles (veja a primeira figura);
5)Clique no comando de formulário desejao e divirta-se desenhado eles e fazendo as macros serem atribuídas.

Macros no Excel 2007

Após gravar uma macro no Excel 2007 é necessário salvar o arquivo como uma Pasta de Trabalho Habilitada para Macros do Excel, caso não faça isso as macros gravadas serão descartadas.