Você está na página 1de 55

Treinamento VBA

Aula 1
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

2
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

3
O QUE É UMA MACRO?

Uma macro é uma seqüência de comandos (cliques de mouse ou toques de teclado) que
são gravados em um Módulo VBA e podem ser executados, sempre que necessário

Existem duas possibilidades para se criar uma Macro:

 Gravador de Macros
 Editor de programação em VBA

4
EXEMPLOS VISAGIO

Na Visagio, há diversas ferramentas que foram construídas com o uso de macros

5
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

6
CRIANDO MACROS PELO GRAVADOR

Caso a guia Desenvolvedor não esteja disponível

• Clique no Botão Microsoft Office e, em seguida, clique em Opções do Excel

• Na categoria Popular, em Opções principais para o trabalho com o Excel, marque a


caixa de seleção Mostrar guia Desenvolvedor na Faixa de Opções e clique em OK

7
CRIANDO MACROS PELO GRAVADOR

Caso a guia Desenvolvedor não esteja disponível (cont.)

• Guia Desenvolvedor > Grupo Código > Gravar Macro

8
CRIANDO MACROS PELO GRAVADOR

A gravação de Macros também pode ser ativada na guia Exibição

• Guia Exibição > Grupo Macros > Gravar Macro

9
EDITOR VBA

Os códigos das macros gravadas podem ser visualizados no Editor VBA...

• Guia Desenvolvedor > Grupo Código > Visual Basic ou ALT + F11

10
CRIANDO MACRO EDITOR VBA - INSERINDO UM MÓDULO

Os módulos servem para armazenar códigos de procedimentos e códigos de funções

11
CRIANDO MACRO EDITOR VBA - INSERINDO UM PROCEDIMENTO

• Inserir > Procedimento:

• Gera dentro do módulo o cabeçalho do procedimento selecionado


• Deve-se escrever o código da macro dentro dos limites estabelecidos

12
CRIANDO MACRO EDITOR VBA - INSERINDO UM MÓDULO

Os módulos servem para armazenar códigos de procedimentos e códigos de funções

13
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

14
POSSIBILIDADES

A execução de uma macro pode ser concretizada de diversas formas

Tecla de Atalho Botão na Toolbar

Comando no
Run
Menu

Associando a
Editor VBA macro a um
objeto

15
MÉTODO RUN

No Excel: Guia Desenvolvedor > Grupo Código > Macros

16
MÉTODO RUN

No Editor VBA: Executar > Executar Macro (ou F5)

17
ASSOCIANDO MACROS A OBJETOS

1. Criar um objeto em uma das planilhas no arquivo

2. Clicar com o botão direito e selecionar a opção “Atribuir Macro”

3. Selecionar a macro e confirmar

18
EXERCÍCIO DE FIXAÇÃO 1

No arquivo Ex_VBA_Formatação, criar uma macro usando o Gravador de Macros. A macro


deverá formatar a célula atual com Negrito, cor de fonte Vermelha, com fundo cinza. Gravar
a macro com o nome de FormataVermCinza

1. Abra o Excel

2. Abra a Planilha Ex_VBA_Formatação.xlsm

3. Clique na célula A4

4. Agora vamos iniciar a gravação da Macro

5. Selecione Guia Desenvolvedor > Grupo Código > Gravar Macro

6. Será exibida a janela Gravar Macro

7. No campo Nome da macro digite: FormataVermCinza

19
EXERCÍCIO DE FIXAÇÃO 1

8. No campo Tecla de atalho digite L (maiúsculo). Observe que o Excel troca para
Ctrl+Shift+L. Com isso estamos associando a combinação de teclas com a macro
FormataVermCinza, ou seja, cada vez que quisermos executar essa macro basta, pressionar
Ctrl+Shift+L.

9. O campo descrição é simplesmente uma descrição da funcionalidade da macro. Digite o


texto indicado na Figura:

20
EXERCÍCIO DE FIXAÇÃO 1

10. Clique em OK. A gravação da Macro será iniciada. Todos os comandos que você
executar, durante a gravação da Macro, farão parte da Macro

11. Observe que na barra inferior de status apareceu a opção de parar a macro ( ). A
partir de agora devemos escolher os comandos que farão parte da macro. Após ter
executado os comandos que farão parte da macro, basta clicar no botão para encerrar a
gravação da Macro

12. Clique no botão ( ) para aplicar Negrito

13. Na lista de Cores da fonte ( ) selecione Vermelho

14. Na lista de Cores de preenchimento ( ) selecione Cinza

21
EXERCÍCIO DE FIXAÇÃO 1

15. Clique no botão ( ) para encerrar a gravação da Macro

16. Agora a macro FormataVermCinza foi criada e podemos utilizá-la sempre que
necessário

22
EXERCÍCIO DE FIXAÇÃO 1

Para executar a macro FormataVermCinza faça o seguinte

1. Clique na Célula B7

2. Pressione Ctrl+Shift+L

3. A macro FormataVermCinza é executada e as formatações definidas pela macro (Negrito,


fonte Vermelha e fundo Cinza) são automaticamente aplicadas na Célula B7

4. Também é possível executar a macro usando o comando Guia Desenvolvedor > Grupo
Código > Macros

23
EXERCÍCIO DE FIXAÇÃO 1

Para executar a macro FormataVermCinza faça o seguinte (cont.)

5. Clique na célula B5

6. Selecione o comando Guia Desenvolvedor > Grupo Código > Macros

7. Será exibida a janela Macro, onde são listadas todas as macros existentes na pasta de
trabalho atual (no arquivo carregado no Excel), conforme indicado na figura:

24
EXERCÍCIO DE FIXAÇÃO 1

Para executar a macro FormataVermCinza faça o seguinte (cont.)

8. Clique na Macro FormataVermCinza para selecioná-la

9. Clique no botão Executar

10. Macro será executada e as respectivas formatações serão aplicadas à célula B5

11. A sua planilha deve estar conforme indicado na figura:

25
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

26
VARIÁVEIS

“Uma variável é um espaço na memória do computador, reservado para armazenar um ou


mais valores. Fazemos referência a este espaço utilizando nomes. Como o valor armazenado
pode variar, a medida que o código VBA é executado e cálculos são efetuados, estas
estruturas são chamadas de variáveis.”

Declaração de variáveis:
Dim <Nome_Variável> As <Tipo>
Dim intColuna as Integer

Declaração de variáveis:
Dim <Nome_Variável> As <Tipo>
Dim intColuna as Integer

27
VARIÁVEIS

Tipo de Tamanho
Descrição Valores
Dado da Memória
Byte 1 byte Representa números não negativos 0 a 255
Boolean 2 bytes Valores verdadeiro ou falso True ou False
Integer 2 bytes Inteiros (não decimais) -32.768 a +32.767
Long 4 bytes Inteiros longos (não decimais) -2.147.483.648 a +2.147.483.647
Single 4 bytes Números de ponto flutuante com precisão simples -3.4e38 a +3.4e38
Double 8 bytes Números de ponto flutuante com precisão simples -1,8e308 a +1,8e308
Currency 8 bytes Ponto flutuante com número fixo de casas decimais -922.337.203.685.477,5808 a
+922.337.203.685.477,5807
Date 8 bytes Data e Hora – O tipo Date é representado internamente por 1 de Janeiro de 100 a
um ponto flutuante. A parte inteira do número representa a 31 de Dezembro de 9999
data, e a parte decimal representa a hora
Object 4 bytes Uma referência a um objeto Qualquer referência de objeto
String Varia Um conjunto de caracteres. O tipo String pode ser definido Fixo – Até 65.500 caracteres
para um comprimento fixo ou variável, embora ser mais Variável – Até aproximadamente 2
comumente definido com comprimento variável bilhões de caracteres
Variant Varia Pode armazenar datas, números de ponto flutuante ou Número – mesmo do tipo Double
strings, e deve ser usado quando não há certeza de qual tipo String – mesmo do tipo String
de dado esperar

28
VARIÁVEIS - OBJETOS

“Objetos são variáveis de um tipo especial, que fazem referência a um determinado


elemento dentro de uma Aplicação do Office (Excel, Access etc). Ela é de extrema
importância visto que facilita a codificação e melhora a performance da sub-rotina.”

Declaração de variáveis tipo objeto:


Dim <Nome_Objeto> As <Tipo_Objeto>
Dim Sht as Worksheet

Atribuição de valores a variáveis tipo objeto:


Set <Nome_Objeto> = <Objeto>
Set NBook = ThisWorkbook

29
VARIÁVEIS - OBJETOS

Alguns exemplos de Objetos:

Tipo de Objeto Faz referência a ...


Excel.Workbook Pasta de trabalho (arquivo) do MS Excel

Excel.Worksheet Plailha (aba) do MS Excel

Excel.Range Range de células do MS Excel

PowerPoint.Presentation Apresentação (arquivo) do MS PowerPoint

PowerPoint.Slide Slide do MS PowerPoint

Word.Document Documento (arquivo) do MS Word

Word.Paragraph Parágrafo do MS Word


Conjunto de registros em uma Tabela ou Consulta. Geralmente
DAO.Recordset
utilizado no MS Access.
DAO.TableDef Tabela do MS Access

DAO.QuerDef Consulta do MS Access

30
VARIÁVEIS - ARRAYS

“Um Array é uma variável que representa um conjunto de variáveis do mesmo tipo. Os
Arrays podem ser multidimensionais, onde todas as dimensões são indexadas.”

Declaração de arrays:
Dim <Nome_Array> (Qx) As <Tipo>
Dim <Nome_Array> (Qx,Qy) As <Tipo>

Atribuição de valores a arrays:


Dim strPaises(3) As String
strPaises(0) = "Portugal"
strPaises(1) = "Brasil"
strPaises(2) = "Moçambique”

31
VARIÁVEIS – DECLARAÇÃO FORÇADA (OPTION EXPLICIT)

1. Construa a seguinte sub-rotina:

Sub DeclaracaoForcada()
Nome = “Visagio”
Msgbox Nome

End sub

2. Pressione F5

3. Escreva acima da sub: Option Explicit

4. Pressione F5 novamente
O que acontece?

O “Option Explicit” obriga que a variável seja declarada, caso contrário uma mensagem de
erro é enviada  Variable Not Defined

32
VARIÁVEIS NÃO DEFINIDAS SEM OPTION EXPLICIT

O VBA reconhece a variável como do tipo ‘Variant’

VANTAGENS DESVANTAGENS

Menor chance de Execução mais lenta


aparecimento de erros

Consome mais memória

Código menos extenso


Dificulta detecção de erros

33
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

34
SINTAXE VBA

Imagine que você escreverá instruções para um usuário ativar uma determinada planilha.
A instrução “Ativar a planilha Teste.xls” seria semelhante a:
 “Ativar a planilha C:\Teste.xls”

Porém, o VBA trabalha de forma diferente! Por se tratar de uma linguagem orientada a
objeto, os objetos (nomes) são mais importantes, portanto:
 Dim Wb as Excel.Workbook
 Set Wb = Workbooks.Open(“C:\Teste.xls”)
 Wb.Activate
A estrutura básica de uma linha de código do VBA é “Objeto.Método”, por exemplo:
 Wb.Save (“Salvar planilha”)
 Wb.Close (“Fechar planilha”)
 Wb.Activate (“Ativar planilha”)

35
SINTAXE VBA

Agora imagine que exista uma “Coleção” de planilhas (abas) dentro do Teste.xls, mas você
gostaria ativar a aba Teste_1, portanto:
 Wb.Sheets(“Teste_1”).Activate

Logo após você quer excluir a terceira planilha do arquivo:


 Wb.Sheets(3).Delete

Após todos esses procedimentos agora é necessário fechar o arquivo salvando as


alterações realizadas e com o nome “C:\Teste_realizado.xls”:
 Wb. Close SaveChanges:=True, FileName:=“C:\Teste_Realizado.xls”
Ou:
 Wb. Close True, “C:\Teste_Realizado.xls”

36
SINTAXE VBA

Para finalizar o conceito, imagine que você deseja que a aba “Teste_1” não fique visível,
logo:

Wb.Sheets(“Teste_1”).Visible = xlSheetHidden

Resumindo, a linguagem VBA é composta pelos seguintes componentes:

Componente VBA Análogo Exemplo


Objeto Elemento distinto ThisWorkbook; Wb (Objeto)
Conjunto de elementos de um
Coleção ThisWorkbook.Sheets(“Teste_1”)
mesmo tipo
Método Ação Activate
Parâmetro Característica da Ação SaveChanges:=True
Propriedade Característica de Elemento xlSheetHidden

37
EXERCÍCIO DE FIXAÇÃO 2

Arquivo: Ex_VBA_Dashboard_ANP

Crie uma rotina que:

1 – Abra o arquivo com o nome e pasta determinados na aba Principal. Utilize os


arquivos da pasta Bases ANP

2 – Copie os dados do arquivo para a aba Base Consolidada, lembrando de apagar o


conteúdo antigo caso houver

3 – Feche o arquivo selecionado

Dica: Altere a propriedade Application.DisplayAlerts para que as mensagens do Excel não sejam
exibidas durante a execução do código

4 – Ative a aba Relatório

38
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

39
RANGES

No Excel temos a seguinte hierarquia:


• Application > Workbook > Worksheet > Range

Uma range pode se referenciar a uma célula, linha, coluna ou mesmo um grupo de cada
um destes
• Range (“C4”) Célula C4
• Range(“3:3”) Linha 3
• Range(“D:D”) Coluna D
• Range(“A1:B5”) Células de A1 a B5

Há diversas forma de se referenciar uma range. A exemplo, a célula D5 pode ser


referenciada como:
• Range(“D5”)
• [D5]
• Range(“B3”).Range(“C3”)
• Cells(5,4)
• Range(“A1”).Offset(4,3)
• Range(“MinhaRange”) Considerando que D5 foi nomeada de “MinhaRange”

40
RANGES

Ou seja, embora as ranges possam referenciar um grupos de células, ela se limita às


células de uma mesma sheet

Para se referenciar a ranges de outras sheets, ou mesmo de outros workbooks, podemos


fazer da seguinte forma:
• Worksheets(“Plan3”).Range(“A1”)
• Workbooks(“Orçamento.xlsx”).Worksheets(“Plan2”).Range(“B4”)

Uma maneira particular de referenciar células muito utilizadas em fluxos de controle é a


representação Cells, informado a linha e a coluna como parâmetros
• Cells(5,”C”)
• Cells(5,3)

41
EXERCÍCIO DE FIXAÇÃO 2 (CONT.)

Arquivo: Ex_VBA_Dashboard_ANP

5 – No final do algortimo já desenvolvido, incluir um código que exiba uma mensagem


(MsgBox) informando a quantidade de postos no município selecionado

42
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

43
EDITOR VBA

Janela de
Project Edição
Explorer

Properties
Windows

44
EDITOR VBA – PROJECT EXPLORER

Funções e Rotinas
para objetos dentro
das planilhas

Funções e Rotinas mais


globais que se aplicam à
Pasta de Trabalho como
um todo

45
DEBUGANDO UMA MACRO

No Editor VBA: Depurar > Depuração Total ou (F8)

46
DEBUGANDO UMA MACRO

Coloque a janela do Excel e do Editor de VBA lado a lado e prossiga com a depuração
linha a linha (F8)

47
DEBUGANDO UMA MACRO

Experimente agora aplicar um breakpoint em uma determinada linha de código e


selecione Executar >> Continuar ou mesmo pressione F5

48
EXERCÍCIO DE FIXAÇÃO 2 (CONT.)

Arquivo: Ex_VBA_Dashboard_ANP

6 – Abra o editor de macro

7 – Insira um breakpoint na linha de exibição da MsgBox

8 – Troque a mensagem no final do procedimento para “Importação de dados concluída”

49
AGENDA

1. Introdução

2. Criação de Macros

3. Execução de Macros

4. Variáveis

5. Linguagem VBA

6. Ranges

7. Editor VBA

8. Funções e Sub-rotinas

50
SUB-ROTINAS

“As sub-rotinas são aquelas cuja definição é delimitada pelas palavras-chave Sub e End
Sub. Elas não retornam valor, somente executam uma sequência de tarefas.”

Sub <nome_da_macro> ( Parâmetro1, Parâmetro2, ... , ParâmetroN)

<corpo_da_macro>

End Sub

Exemplo:

Sub Cumprimentar(strNome as String)

MsgBox “Olá, ” & strNome & “!”

End Sub

51
FUNÇÕES

“Funções são rotinas cuja definição começa com a palavra-chave Function e termina com
as palavras End Function. Todas as funções pré-definidas no Excel são deste tipo de rotina.
Todos os elementos de input e output de uma função têm um tipo de dados atribuído.
Assim, a função deverá ser definida do tipo de dados que ela envia para o exterior. A sua
definição tem a estrutura seguinte”

Function <nome_da_função> ( Parâmetro1, Parâmetro2, ... , ParâmetroN) as


<TIPO>

<Nome da Função> = <Valor / Expressão>

End Function

Exemplo:

Function intQuadrado(intNumero AS Integer) as Integer

intQuadrado = intNumero * intNumero

End Function

52
EXERCÍCIO DE FIXAÇÃO 3

Arquivo: Ex_VBA_Funcoes
Aba: Funções

1 – Criar 3 funções que calculem a soma de dois números, a multiplicação de dois


números e a média de dois números, respectivamente

2 – Criar uma rotina que leia os dois números (número 1 e número 2) e coloque os valores
da soma, multiplicação e média desses números, nos campos soma, multiplicação e
média, respectivamente, usando as funções previamente criadas

3 – Associar a rotina ao botão “Realizar Operação”

4 – Criar rotina que apague o conteúdo das células utilizadas (B3 à F3)

5 – Associar a rotinna ao botão “Apagar Valores”

53
EXERCÍCIO DE FIXAÇÃO 4

Arquivo: Ex_VBA_Funcoes
Aba: Email

1 – Criar uma função que retorne o Nome, e outra que retorne o Sobrenome do
funcionário

2 – Criar uma rotina que coloque esses valores nas células corespondentes

3 – Associar a rotina ao botão “Realizar Operação”

Funções úteis:
- Strings.Left$()
- Strings.Right$ ()
- Strings.InStr()
- WorksheetFunction.Proper

54
OBRIGADO!

55

Você também pode gostar