Você está na página 1de 110

VBA

Martha Abrahão Ramos


Estrutura do curso

Em um total de 12 horas de curso você deverá aprender o que é o VBA, como utilizar essa
ferramenta e como automatizar os processos, mesmo sem ser um expert em programação.
Todas as aulas teremos exercícios práticos e durante todo o curso teremos exercícios mais
elaborados para serem feitos em casa.
 Aula 1 - Introdução, Vocabulário, Gravando Macros
 Aula 2 – Modificando Macros, Criando macros, Testando Macros, Dicas
 Aula 3 – Eventos Vba, Segurança VBA, Application
 Aula 4 – Revisão, Workbooks, Worksheet, Exercício 1
 Aula 5 – Células e ranges, Correção Exercício 1
 Aula 6 – Caixa de mensagens e Caixa de entrada parte 1
Estrutura do curso

 Aula 7 – Caixa de entrada parte 2, Erros, Exercício 2


 Aula 8 – VBA para Variáveis, Declarações parte 1, correção exercício 2
 Aula 9 – Declarações parte 2
 Aula 10 – Funções, Sapex, Exercício 3
 Aula 11 – Criando Userform, corrigindo exercício 3
 Aula 12 - Código Vba para Userforms
 Aula Extra – Corrigindo Projeto final

 Livros fonte: Programando o Excel VBA para Leigos


 MacroExcel
Aula 1

 Introdução
 Vocabulário
 Gravando Macros
Aula 1 - Introdução

1. O que é VBA?

O VBA é "Visual Basic for Application“, uma linguagem de programação que permite
usuários a programarem macros para executar tarefas repetitivas ou complexas
automaticamente dentro do Excel. Com o VBA do Excel você pode desenvolver pequenos
procedimentos (macros) que tornarão a sua vida profissional mais fácil e lhe permitir fazer
mais em menos tempo.
Ex: consolidação de diversos dados em uma única planilha.
Mas o VBA também é uma linguagem de programação muito poderosa com a qual você pode desenvolver
dentro do Excel programas reais que executem em poucos minutos tarefas muito complexas. Com o VBA do
Excel você pode desenvolver um programa que faça EXATAMENTE o que você precisa.
Ex: sistema de conferência de pagamento de frete.
O Ambiente do VBA
O Ambiente do VBA
O Ambiente do VBA
Aula 1 - Vocabulário
 O que é uma MACRO?
Macros do Excel: É uma série de passos que se armazenam e que podem ser ativados com
alguma tecla de controle (Ctrl) mais uma letra. Por exemplo, todos os dias emprego
frequentemente em minhas células os mesmos passos: Tamanho de Fonte (Tamanho da letra),
Negrito, Fonte (Tipo de letra) e Cor de Fonte (Cor de Letra). Para não estar repetindo estes
passos, posso armazená-los numa macro e, quando executar esta macro, os passos antes
mencionados se executarão quantas vezes eu desejar. Enfim, uma macro é uma série de
instruções realizadas pelo Excel, ao invés de você.
 Objetos:
 Propriedades:
 Método: Um método é um termo do Visual Basic para uma palavra-chave que representa
uma ação que você quer impor a um objeto.
O gravador de macros

 Eu tenho desenvolvido macros por algum tempo, e uso o gravador de macro Excel
diariamente. Não para aprender qualquer coisa, mas para escrever código (palavras e
sentenças VBA) para mim. O gravador de que você pode ter e seu melhor assistente.
 Armazenando uma macro gravada:
Na pasta de trabalho atual ou na pasta de trabalho pessoal.
 Lembre-se que tudo que você começar a fazer a partir do momento que iniciar a gravação,
será registrado, então tente ser sucinto nas ações.(De agora em diante você não pode errar,
pois será tudo gravado (inclusive os erros)
Exercício 1 em Aula

 Selecione célula A1 e entre com nº 34


 Selecione célula A2 e entre com nº 55
 Selecione célula A3 e entre com a fórmula =A1 + A2
 Selecione célula A2 e mude a cor da fonte para vermelha
 Selecione célula A1 e mude a cor de background (padrão) para azul
 Selecione célula A3 e mude o tamanho da fonte para 24

Teste as macros com um botão

Salvar em pasta pessoal de macros, inserir um atalho do teclado, e testar com o atalho
Cuidado...

 Gravação relativa e gravação absoluta


Aparência do VBA

Texto de seleção é o que você seleciona com mouse


Texto de erro de sintaxe é o que ele identifica que não está escrito corretamente
Texto de ponto de execução é a próxima macro que será executada quando você estiver depurando ela
Texto de ponto de interrupção é uma entrada que você define uma pausa na depuração
Texto de comentário é qualquer texto que inicie com aspas simples ‘, servindo como comentários seus ao código
Texto de palavra chave são as palavras que o VBA identifica como linguagens de programação
Texto de identificador são nomes que você criou como variáveis no VBA
Texto normal são textos entre aspas, números e símbolos.
AULA 2

 Criando macros
 Modificando Macros
 Testando Macros
 Dicas
Criando uma macro

 A primeira linha no macro, Sub DividirPor100 ():


Todos as macros têm que começar com a palavra chave Sub seguida pelo nome da macro e encerrando com ().
Um nome de macro tem que começar com uma letra, um nome de macro não pode incluir espaços, não use
caracteres especiais, apenas _ é permitido.
 A segunda linha , ‘Esta macro divide por 100 :
É uma linha de comentário.
 A próxima declaração em sua macro é a seguinte:
ActiveCell.Value = ActiveCell.Value/100
A palavra ActiveCell diz ao Visual Basic que você está se referindo à célula que é realçada pelo ponteiro de célula.
A palavra Value depois do ponto diz ao Visual Basic que você está se referindo ao Valor daquela célula.
A expressão ActiveCell.Value à direita do = retorna o valor da célula.
Ele é então dividido por 100 e o valor resultante é atribuído à célula que fica á esquerda do =.
 A última declaração em nossa macro é a seguinte: End Sub
Modificando uma macro
Exercício em aula 2
 Comece com teclado em qualquer tecla, menos A1.
 Inicie a gravação da Macro
 Mude-se para a célula A1 e escreva Bertolo, depois pressione Enter
 Pare a gravação.
 Agora escreva os seus dados nas demais células
 Depure a macro e veja o que acontece.
Testando sua macro
Exercício 2
 Crie um botão
 Adicione sua macro ao Botão
 Teste com tela divida no modo f8
 Teste com botão
Códigos mais comuns (pg 16-18 e 58-60)
Dicas:
 Usar somente letras minúsculas, assim o próprio VBA corrige se identificar alguma sintaxe incorreta;
 Agrupar e recuar grupos de declarações relacionadas e separar com linhas em branco, assim você
identifica mais facilmente as macros criadas;
 Os objetos são sugeridos para você ao dar espaço após o ponto, isso facilita na digitação de sua macro;
 Usar telas separadas enquanto edita e depura macros, isso ajuda a ver o que esta acontecendo linha a
linha;
 Utilizar o comando substituir para textos que precisam ser trocados no projeto todo; apenas cuidado
para não fazer incorretamente a troca;
Dicas:
 Operadores de cálculo são os matemáticos normais: +,-,*,/
Ele não identifica a opção de cálculo para palavras (string) ou números dentro de aspas duplas, exemplo:
“Martha” * 1, “3”/”1”
 Usar & para concatenar palavras e números. Ex: 1008 & 44 torna-se: "100844"
Isso é uma palavra, se quiser converter isso em um número usar Val("100844"). Se usarmos Val para letra
e números, ele excluir letras, deixa só números.
 Usar _ para quebrar a linha sem quebrar a macro, assim visualiza melhor a macro.

Ou
Dicas:
Aula 3- Pg 115-130

 Eventos VBA
 Propriedades VBA
 Application
Antes, vamos relembrar...

 Hierarquia dos objetos

Relembrando os objetos:
Range – Célula
Workbook – Pasta do Excel
Worksheet – Aba do Excel
Window – Janela
Antes, vamos relembrar...

 Hierarquia dos objetos


Antes, vamos relembrar...

 Relembrando Propriedades dos objetos:

 Métodos dos objetos:


Eventos VBA

 O que é o Evento no VBA?


O evento é tudo aquilo que faz a macro ser disparada.
Ou seja: clicando em executar, definindo um atalho no teclado ou criando botões
OU então, condicionando um evento dentro do VBA
Evento VBA
Eventos VBA
Eventos VBA
Eventos VBA
Eventos VBA
Eventos VBA
Aula 4

 Propriedade Application, Métodos

 Workbook e Worksheets
Propriedades VBA

 Application.
Você altera alguma propriedade do Excel.
Através dele, então, podemos configurar o Excel em termos de visualização, execuções e
outras funcionalidades.

Essa propriedade possui diversos métodos, alguns são:


Mudar o tipo de operação de cálculo, abaixo desativa e ativa temporariamente os cálculos de
uma planilha:
Propriedades VBA

 CutCopy

 Diálogos
Application.Dialogs(xlDialogOpen).Show
Mostra caixa de pastas
Application.Dialogs(xlDialogActiveCellFont).Show
Mostra formatação de célula
Propriedades VBA

 DisplayAlerts
Habilita ou desabilita a exibição de mensagens de aviso como resposta de várias ações no
Excel. True habilita as mensagens e False as desabilita.
Propriedades VBA
Métodos VBA
Métodos VBA
Métodos Worksheets

 Métodos de ativar uma worksheet:

No último método, é mais seguro, visto que se o usuário alterar o nome da aba, ainda
assim, será possível a macro rodar.
Métodos Worksheets
Propriedade Name: altera o nome da aba

Propriedade Visible: torna uma aba visível ou não

Para realizar cálculos dentro de uma aba que esteja oculta, é necessário torna-la visível
primeiro e depois voltar a ocultar.
Métodos Worksheets

Para que o usuário não consiga reexibir uma aba:

Mas lembre-se:

Para ocultar varias abas ao mesmo tempo:


Métodos Worksheets

Ou

Para inserir no final de todas as abas, deve-se contar as abas com o .count
Métodos Worksheets
Métodos Workbooks
Métodos Workbooks
Aula 5

 Células e Ranges
 Exercício 1 para casa - Nome e Sobrenome
Células e ranges
Células e ranges
Células e ranges(pg144)

Aqui usamos valor desejado


Aula 6
 Caixa de mensagens
 Exercício de Msg Box em aula
Células e ranges(pg144)
Caixa de mensagens

 CAIXA SIMPLES COM TÍTULO E SÍMBOLOS


 SIM/NÃO
 OK/CANCELA
Caixa de mensagens
Caixa de mensagens
Caixa de mensagens – como deixar em “pause”
a macro longa
Caixa de mensagens – como deixar em “pause”
a macro longa
Ou você cria um formulário para realizar o procedimento longo dentro dele.
Para isso você chama o evento do formulário em sua macro original, ele rodará o evento
aparecendo o formulário criado pra processamento e voltará á sua macro quando aquele
procedimento finalizar.
Aula 7
 Caixa de entrada
 Erros e suas tratativas
 Exercício para casa MSG BOX completo
Caixa de entradas

Para caixas de entradas como datas, textos ou outros tipos de respostas, temos que
declarar variáveis
Caixa de entradas
Para caixas de entradas como datas, textos ou outros tipos de respostas, temos que
declarar variáveis.

date
data

 Para textos usaremos: “Dim... As Stringer”


 Para números inteiros: “Dim... As Integer”
 Para datas: “Dim... As Date”
Assim conseguimos trabalhar com condicionais de erros, ou seja, se a pessoa não entrar
com uma data quando deve ser uma data, faremos uma condicional “IF” e condicional
On error
EXERCÍCIO PARA CASA
Aula 8
 Corrigindo exercício pra casa
 Declarações parte 1
Declarações
 O que são?
Em muitos casos, é preciso controlar o fluxo do seu código, pulando algumas declarações,
executando algumas declarações diversas vezes e testando condições para determinar qual
procedimento executar em seguida. É aqui que entram as declarações.
Declarações
 If..Then...End If
Quando há somente uma condição e uma ação.

 If..Then...And...End If
Quando existirem duas condições inclusivas.
Declarações
 If..Then...Or...End If
Quando existirem duas condições exclusivas e uma ação.

 If..Then...Else...End If
Quando há somente uma condição mas duas ações.
Declarações
 If..Then..ElseIf...End If
Quando existirem mais do que uma condição vinculada cada uma a diferente ação.
Aula 9
 Declarações Parte 2 (Loops)
 Exercício lista de mercado/sapex
Declarações
 For..Each
Quando você precisa fazer loop através de cada objeto em uma coleção, use a estrutura For Each-
Next(planilhas, abas são objetos.)
Declarações
 For..Next
A declaração For...Next permite repetir uma ação um determinado número de vezes.
Quando você usa a declaração For..Next num conjunto de dados é interessante contar o número de
linhas e ter o seu contador se movendo de 1 ao número de linhas. For varContador = 1 to
UltimaLinha
Declarações
 For..Next
Você pode usar um valor Step para pular alguns valores em um loop For-Next
Neste exemplo, Count começa como 0 e depois toma o valor 2, 4, 6 e assim por diante, acabando
em 18 :
Declarações
 Do..Loop
A declaração Do...Loop faz maravilhosamente muito da mesma coisa que a declaração For..Next
mas você não precisa declarar um contador porque o Loop pára quando ele encontrar uma certa
condição.
Declarações
 Tipos de Do:
Declarações

 Exit...
FINALIZANDO AS AULAS ANTERIORES
AULA 9.2
 Exit...
Tipos de Erros
 PRIMEIRO TIPO: Quando se escreve incorretamente, ele pinta a linha em vermelho.
 SEGUNDO TIPO: Quando tenta rodar e ele não lhe deixa iniciar a macro(Os erros que ocorrem
enquanto você tenta iniciar sua macro pode ser a falta de End Sub, de End If, uma falta de Next ou
Loop uma variável não declarada e alguns outros.)

 TERCEIRO TIPO: Quando esta rodando sua macro, e ela depura um erro (Não encontra uma pasta
que pediu pra usar, ou ativar uma folha que está oculta, entre outros)

 Quarto tipo: Erro estrutural, ele roda mas não faz o que era desejado.
ERROS
Corrigindo erros:
 PRIMEIRO PASSO: TESTAR SEU PROGRAMA
 SEGUNDO PASSO: VERIFICAR NO SEU PROGRAMA O QUE PODE ESTAR
CAUSANDO O ERRO, ou seja, qual tipo de erro é.
 TERCEIRO PASSO: IDENTIFICAR SE É POSSÍVEL CORRIGIR O ERRO DE
FORMA SIMPLES, ou seja, se faltava incluir ou corrigir alguma palavra.
 QUARTO PASSO: TRATAR O ERRO com “On error” ou com “if’s”.
Exemplo de erro em cx de entrada
Conseguimos trabalhar com condicionais de erros, ou seja, se a pessoa não entrar com
uma data quando deve ser uma data, faremos uma condicional “IF” e condicional On
error:
Trabalhando com Variáveis
 Regras no uso de variáveis:
1. Você pode usar letras, números e alguns caracteres de pontuação, mas o primeiro caractere deve ser uma
letra.
2. Não é possível usar quaisquer espaços ou pontos no nome de uma variável.
3. O VBA não distingue entre letras maiúsculas e minúsculas.
4. Você não pode usar os seguintes caracteres no nome de uma variável: #, $, %, & ou !.
5. Os nomes de variáveis não podem ter mais de 255 caracteres. É claro que você está procurando
problemas se usar nomes de variáveis com 255 caracteres de extensão.
6. O VBA tem muitas palavras reservadas que você não pode usar em nomes de variáveis ou nomes de
procedimento. Essas incluem palavras tais como Sub, Dim, With, End, Next e For.
7. Evite usar nomes que são iguais aos usados nas abas ou objetos.
Trabalhando com Variáveis
 Tipos de variáveis:
Trabalhando com Variáveis
 Notas importantes:
1. É importante declarar variáveis, Declarar as suas variáveis faz o seu programa rodar mais depressa e
usar a memória com mais eficiência.
2. Geralmente, os contadores de loop são declarados como inteiros ou long;
3. Se você não declarar o tipo de dados em uma variável que usar em uma rotina VBA, o VBA usa o tipo
de dados padrão: Variant. Dados armazenados como uma variante agem como um camaleão: eles
mudam dependendo do que você fizer com eles.
4. Para impor a si mesmo a tarefa de declarar todas as variáveis que usa, inclua o seguinte como a primeira
declaração em seu módulo VBA: Option Explicit. Porque?
Imagine que você use essa seguinte variável abaixo. Nela há um erro que te levará a cálculos incorretos,
e usando declaração de variáveis, ele dará erro, o que impede erro de cálculo.
Trabalhando com Variáveis
 O que é?
Uma variável é apenas um local de armazenagem, nomeado, na memória do seu computador.
Trabalhando com Constantes
 O valor de uma variável pode mudar (e normalmente muda) enquanto o seu procedimento está
em execução. Por isso é que ela é chamada de variável. Às vezes, você precisa fazer referência
a um valor ou string que nunca muda. Nesse caso, você precisa de uma constante – um
elemento nomeado cujo valor não muda.

 Por exemplo, se o seu procedimento precisar fazer referência, repetidamente, a um valor


específico (tal como uma taxa de juros), é melhor declarar o valor como uma constante e fazer
referência ao seu nome, ao invés do valor
Aula 10
 Sapex

 Exercício 3 para casa -Contar primos


SAPEX
 Conexão do SAP com Excel

 Treinando na prática
Aula 11
 Sapex
Aula 12
 Sapex
Aula UP – VBA +
 Userforms
Userforms

 Um UserForm é útil se a sua macro VBA precisar obter informações de um usuário. Por
exemplo, a sua macro pode ter algumas opções que podem ser especificadas em um
UserForm.
 Através de um userform podemos fazer com que o usuário da nosa aplicação trabalhe
apenas em um ambiente personalizado, sem precisar digitar nas planilhas.
 Doze controles diferentes podem ser adicionados ao userform. Eles são chamados: Label,
TextBox, ComboBox, ListBox, CheckBox, OptionButton, ToggleButton, Frame,
CommandButton, TabStrip, MultiPage, ScrollBar.
Userforms
 Doze controles diferentes podem ser adicionados ao userform. Eles são chamados: Label,
TextBox, ComboBox, ListBox, CheckBox, OptionButton, ToggleButton, Frame,
CommandButton, TabStrip, MultiPage, ScrollBar.
Userforms
 Mudando as opções da grade de formulário, vá em Ferramentas, Opções e Geral.
Userforms
 Para carregar um formulário em sua planilha, precisamos gerar uma macro que tenha os
comandos de inicialização do userform, e devemos executar essa macro pelas formas já
vistas anteriormente (por botões de controles e eventos).
Userforms
 Propriedades da Userforme:
Name- nome;
BackColor - Essa propriedade define a cor do fundo (background) do formulário;
BorderColor -Define a cor da borda do formulário;
BorderStyle - Determina o estilo da borda;
Caption - O nome que vai aparecer na faixa azul no topo do formulário;
Enabled - Ativa ou desativa o formulário. Desativar um formulário significa não
poder fazer coisa alguma com ele; portanto, tome cuidado com essa propriedade;
Font – Fonte dos textos do formulário, fontes do sistema;
ForeColor - Define a cor daquilo que será impresso no formulário;
Height – Altura do Formulário, Left – Distancia do formulário.
Userforms

 Propriedades da Userforme:
MouseIcon - Define um ponteiro do mouse personalizado quando estiver sobre o formulário.
MousePointer - Você pode ter o ponteiro do mouse mudado quando estiver sobre o form com esta propriedade;
você deve escolher a opção 99 – frmMousePointerCustom.
Picture - Opta por uma figura como fundo do formulário;
PictureSizeMode - Determina a forma que a figura será disposta no formulário;
StartPosition – Posição Inicial do formulário, para default, será no centro da tela;
Top – Distancia do formulário do topo da planilha;
Width – Delimita largura do formulário;
Zoom - Aumenta ou diminui a distância de visualização dos componentes do formulário
Show - Exibe um formulário quando já carregado na memória
Userforms
 Eventos de formulário:
As macros por detrás do formulário funcionam como Eventos, ou seja, só irão ser processadas quando
a pessoa realizar algum procedimento na caixinha de formulário:

Outro exemplo: Para salvar dados que a pessoa inseriu dentro do formulário:
Botão: Nome do Botão:

Macro que invoca o botão:


Userforms
 Eventos de formulário:
Userforms
 Eventos de formulário:
Criando um formulário.
 Bora criar?
Criando macro pro Userforms

 LIVRO CONSULTA VBA PARA INICIANTES


Criando macro pro Userforms
 Botão LISTBOX e COMBOX

 Inserir informação na lista

Inserir na planilha o que tiver na lista

Inserir na lista o que tiver na planilha


Criando macro pra userform
 Botões de escolha

 Caixa de listagem:
PROJETO FINAL
 Faça um programa que simule os programas atualmente utilizados em caixa de
supermercados, conforme exemplo abaixo:
PROJETO FINAL
 Regras:
Inserir um formulário antes deste para saber se o cliente já tem cadastro no supermercado, caso tenha, aparecer uma caixa de pesquisa de
nome, em que se retorne seu nome, endereço, telefone e e-mail. É necessário “armazenar” qual cliente é antes de iniciar a venda, será
usado seu nome e e-mail no futuro. Caso não tenha, deverá ser solicitado o cadastro ao cliente, lembre-se de armazenar em algum local,
qual cliente é.
O Total a pagar deverá ser calculado somente quando o usuário clicar no botão “Fechar Venda”.
Quando o usuário clicar no botão “Adicionar produto na lista” os dados do produto, digitados nas caixas de textos deverão ser somente
inseridos nas caixas de listas abaixo deste botão.
Ao clicar no botão “Cancelar Venda” limpe todos os campos mostrados na tela.
Ao clicar no botão “Remover UM Produto da Lista de Compra” remova somente os dados da venda do produto selecionado naquele
instante.
Ao selecionar um produto na caixa de listagem, a quantidade vendida o preço unitário o subtotal também deverão ficar selecionados.
Quanto o cursor sair da CAIXA DE TEXTO preço unitário, o programa deverá calcular o subtotal e mostrá-lo em um label conforme
mostrado na tela acima.
Adicionar o botão de “enviar nota fiscal paulista”  ao e-mail do cliente. Quando clicado, deverá ser enviada uma lista dos produtos,
valores e total pago, forma de pagamento em formato pdf.
Adicione checks para selecionar formas de pagamento
EXTRA: SE CONSEGUIR, ADICIONE UMA FIGURA QUE MOSTRE EM % A CONCLUSÃO DA COMPRA EM CARTÃO
Aula extra

 Correção do projeto final

Você também pode gostar