Buscar

Apostila VBA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 97 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 97 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 97 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PROGRAMAÇÃO 
COM VBA 
APOSTILA DO CURSO 
PROF. RICARDO BORTOLI 
ACADEMIA AEGEA 
http://academia.aegea.com.br/moodle/ 
2017 
AEGEA 
 
Sumário 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Sumário 
Módulo I - Introdução ao VBA ................................................................................................ 1 
Aula 01 – O que é VBA ........................................................................................................ 1 
Aula 02 – Criar macros ........................................................................................................ 2 
Aula 03 – Segurança de macro ........................................................................................... 2 
Aula 04 – Visual Basic Editor ............................................................................................... 3 
Módulo II – O ambiente de programação ................................................................................ 5 
Aula 05 – Janela de projeto ................................................................................................. 5 
Aula 06 – Janela de código .................................................................................................. 5 
Aula 07 – Personalizando o ambiente VBA ......................................................................... 6 
Módulo III - Como funciona o VBA ......................................................................................... 9 
Aula 08 – Modelo de objeto do Excel .................................................................................. 9 
Aula 09 – Procedimentos Sub e procedimentos Function ................................................. 12 
Aula 10 – Referências relativas e referências absolutas ................................................... 13 
Módulo IV – Variáveis e constantes ...................................................................................... 14 
Aula 11 – Comentários ...................................................................................................... 14 
Aula 12 – Variáveis ............................................................................................................ 14 
Aula 13 – Variáveis II (Strings, dates e objects) ................................................................ 15 
Aula 14 – Constantes ......................................................................................................... 15 
Aula 15 – Vetores e matrizes ............................................................................................. 16 
Módulo V – Objeto Range ..................................................................................................... 18 
Aula 16 – O Objeto Range ................................................................................................. 18 
Aula 17 – Propriedades úteis do Objeto Range 1 ............................................................. 18 
Aula 18 – Propriedades úteis do Objeto Range 2 ............................................................. 18 
Aula 19 – Propriedades úteis do Objeto Range 3 ............................................................. 19 
Aula 20 – Métodos úteis do Objeto Range 1 ..................................................................... 19 
Aula 21 – Métodos úteis do Objeto Range 2 ..................................................................... 19 
Aula 22 – Métodos úteis do Objeto Range 3 ..................................................................... 19 
Módulo VI – Funções no VBA ............................................................................................... 20 
Aula 23 – Funções Integradas VBA ................................................................................... 20 
Aula 24 – Funções de planilhas no VBA ........................................................................... 21 
Aula 25 – Funções personalizadas no VBA ...................................................................... 21 
http://academia.aegea.com.br/moodle/
AEGEA 
 
Sumário 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo VII – Controles de fluxo ........................................................................................... 22 
Aula 26 – A estrutura IF THEN ELSE 1 ............................................................................. 22 
Aula 27 – A estrutura IF THEN ELSE 2 ............................................................................. 22 
Aula 28 – Select Case 1 .................................................................................................... 23 
Aula 29 – Select Case 2 .................................................................................................... 23 
Aula 30 – IF com Select Case ........................................................................................... 23 
Aula 31 – Declaração GOTO ............................................................................................. 24 
Módulo VIII – Estruturas de repetição .................................................................................. 25 
Aula 32 – Loop For Next 1 ................................................................................................. 25 
Aula 33 – Loop For Next 2 ................................................................................................. 25 
Aula 34 – Loop For Next 3 ................................................................................................. 26 
Aula 35 – Loop Do While ................................................................................................... 31 
Aula 36 – Loop Do Until ..................................................................................................... 31 
Aula 37 – Loop For Each ................................................................................................... 31 
Módulo IV – Eventos no VBA ................................................................................................ 32 
Aula 38 – Evento Workbook Open ..................................................................................... 32 
Aula 39 – Evento Before Close .......................................................................................... 32 
Aula 40 – Evento Before Save e After Save ...................................................................... 32 
Aula 41 – Evento New Sheet ............................................................................................. 32 
Aula 42 – Evento Window Activate .................................................................................... 32 
Aula 43 – Evento Section Change ..................................................................................... 33 
Aula 44 – Evento Change 1 ............................................................................................... 33 
Aula 45 – Evento Change 2 ............................................................................................... 33 
Aula 46 – Evento Before Double Click ............................................................................... 33 
Aula 47 – Evento Activate e Deactivate ............................................................................. 33 
Aula 48 – Evento On Time ................................................................................................. 33 
Módulo X – Tratamento de erros e outros exemplo ............................................................. 34 
Aula 49 – Tratamento de erros 1 ....................................................................................... 34 
Aula 50 – Tratamento de erros 2 ....................................................................................... 34 
Aula 51 – A propriedade CurrentRegion ............................................................................ 34 
Aula 52 – Alterando configurações do Excel pelo VBA .....................................................34 
Aula 53 – A estrutura With – End With .............................................................................. 35 
http://academia.aegea.com.br/moodle/
AEGEA 
 
Sumário 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo XI – Criar fórmulas personalizadas no VBA ............................................................. 36 
Aula 54 – Fórmulas sem argumentos ................................................................................ 36 
Aula 55 – Fórmulas com um argumento ............................................................................ 36 
Aula 56 – Fórmulas com dois argumentos ........................................................................ 36 
Aula 57 – Fórmulas cujo argumento seja um intervalo de células .................................... 36 
Aula 58 – Fórmulas com argumento opcional ................................................................... 37 
Módulo XII – Trabalhando com caixas de diálogo no VBA ................................................... 38 
Aula 59 – Função MsgBox (caixa de mensagem) ............................................................. 38 
Exemplo ............................................................................................................................... 41 
Aula 60 – Função InputBox ................................................................................................ 43 
xPos & ypos ...................................................................................................................... 44 
O botão OK ....................................................................................................................... 46 
Aula 61 – Método GetOpenFileName (janela para abrir arquivo) ..................................... 50 
Módulo XIII – Trabalhando com formulários e controles de formulários .............................. 51 
Aula 62 – Visão geral ......................................................................................................... 51 
Aula 63 – Exemplo de Userform ........................................................................................ 54 
Aula 64 – Controles de Userform ....................................................................................... 54 
Aula 65 – Propriedades úteis do Userform ........................................................................ 60 
Aula 66 – Principais eventos do Userform ......................................................................... 60 
Aula 67 – Label propriedades ............................................................................................ 63 
Aula 68 – Label eventos......................................................................................................... 65 
Aula 69 - TextBox propriedades ............................................................................................. 65 
Aula 70 – TextBox eventos..................................................................................................... 67 
Aula 71 – ComboBox propriedades ........................................................................................ 67 
Aula 72 – ComboBox métodos ............................................................................................... 73 
Aula 73 – ListBox propriedades .............................................................................................. 73 
Aula 74 – ListBox métodos..................................................................................................... 84 
Aula 75 – CheckButton e OptionButton (caixa de checagem e botão de opção) ......................... 84 
Anexo ...................................................................................................................................... 90 
Variáveis ............................................................................................................................ 90 
 
http://academia.aegea.com.br/moodle/
Pág. 01 
 
Módulo I - Introdução ao VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo I - Introdução ao VBA 
 
Aula 01 – O que é VBA 
 
O que é VBA? 
 
O VBA (Visual Basic for Application) é uma linguagem de programação 
utilizada para desenvolver programas executados nos principais softwares do 
pacote Office (Access, Excel, Word, Power Point) da Microsoft. Uma linguagem de 
programação permite montarmos programas que auxiliam tarefas do dia a dia de 
seus usuários. 
 
Para que o VBA é útil? 
 
O VBA é muito útil para três principais funções: 
✓ Automatizar tarefas 
✓ Criar fórmulas 
✓ Desenvolver sistemas (completos e complexos) 
 
Ao longo do deste curso nós iremos então estudar a fundo estas 3 utilidades 
do VBA, e vamos utilizar principalmente o Excel para demonstrar os exemplos. 
Portanto, é importante que você já tenha feito o curso de Excel Avançado, ou que 
tenha bons conhecimentos em Excel para melhor aproveitar o conteúdo deste 
curso. 
 
 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 02 
 
Módulo I - Introdução ao VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 02 – Criar macros 
 
O primeiro passo para se construir uma macro é habilitar a “Guia 
Desenvolvedor”. Tanto no Excel, como no Word, no Access ou no Power Point ou 
qualquer outro aplicativo do Office o procedimento é o mesmo. 
Lembrando que estou usando o Office 2016, mas o Office 2013 não é 
diferente, e o Office 2010 e 2007 não é difícil também, basta você procurar a em 
Opções e Personalizar Faixas de Opções/Guias. 
 
 
 
Aula 03 – Segurança de macro 
 
Do mesmo modo que o VBA pode ser utilizado para realizar ações fantásticas 
para te ajudar, ele também pode ser utilizado por pessoas mal-intencionadas para 
lhe causar algum dano. Você poderá utilizá-lo para prejudicar alguém se quiser. Por 
http://academia.aegea.com.br/moodle/
Pág. 03 
 
Módulo I - Introdução ao VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
exemplo, é possível excluir arquivos, travar o Windows ou roubar seus dados. Por 
isso, uma dica que deixamos com essa aula é: Não abra nenhum arquivo habilitado 
para macro de autores que você não confia. 
 
Poder x Risco VBA – “Com grande poderes, vêm grandes responsabilidades” 
 
 
 
 
 
 
 
 
 
 
 
 
 
✓ O VBA é tão perigoso quanto é poderoso. 
✓ Não é porque você sabe que o VBA pode excluir arquivos ou copiar 
informações que você o usará para isso. 
✓ Há 4 tipos de configuração de segurança de macro. 
 
Aula 04 – Visual Basic Editor 
 
✓ É o ambiente de edição do VBA. 
✓ Pode ser ativado através do botão Visual Basic na Guia Desenvolvedor, ou 
através das teclas de atalho “Alt” + “F11” 
http://academia.aegea.com.br/moodle/
Pág. 04 
 
Módulo I - Introdução ao VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
No VBA existem algumas 
janelas de trabalho, nas quais 
executamos nossas atividades de 
programação entre elas: 
✓ Janela de projetos (VBAProject); 
✓ Janela de propriedades; 
✓ Janela de código; 
✓ Janela de Verificação Imediata. 
 
Na janela de projetos nós podemos verificar também a Estrutura de 
modelos de objetos do Excel. E este assunto será melhor estudado na aula 5. 
 
http://academia.aegea.com.br/moodle/
Pág. 05 
 
Módulo II – O ambiente de programação 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo II – O ambiente de programação 
 
Aula 05 – Janela de projeto 
 
A Janela de Projeto, também chamada de VBA Project, é uma janela dentro 
do editor do Visual Basic, onde se encontram os objetos e estruturas nas quais 
estamos trabalhando. 
A tecla de atalho para abrir a janela de projeto é: “Crtl” + “R”. 
Cada arquivo do Excel aberto, o VBA trata como um projeto. 
Dentro da Janela de Projeto, o VBA mostra: 
✓ as planilhas do Excel como Objetos 
✓ as macros organizadas em Módulos e 
✓ os userforms em Formulários 
 
PelaJanela de Projetos também é possível exportar ou importar arquivos. 
 
Aula 06 – Janela de código 
 
A Janela de Código é local destinado a registro das macros. 
Sempre que gravarmos uma macro ela ficará registrada na Janela de Código 
dentro de um módulo. 
Cada objeto possui sua respectiva Janela de Código. 
Na Janela de Código as macros poderiam ser visualizadas uma a uma, se 
ativarmos o botão “Exibir Procedimento”, ou todas de uma vez se ativarmos o botão 
“Exibir Módulo Completo” 
 
 
http://academia.aegea.com.br/moodle/
Pág. 06 
 
Módulo II – O ambiente de programação 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 07 – Personalizando o ambiente VBA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Menu Ferramentas > Opções 
1. Exibe uma mensagem caso a declaração da variável esteja incorreta; 
2. Exige a declaração da variável; 
3. Exige a relação de membros para seleção; 
4. Exige os parâmetros do comando como dica flutuante; 
5. Exige os valores de cada dado ao posicionar o mouse sobre o dado; 
6. Permite mover com o mouse o dado selecionado; 
7. Define se a Janela de Código deve exibir todas as macros na sequência ou 
exibir uma a uma; 
1 
2 
3 
4 
5 
6 
7 
8 
http://academia.aegea.com.br/moodle/
Pág. 07 
 
Módulo II – O ambiente de programação 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
8. Exibe a linha que separa visualmente as macros na Janela de Código. 
 
Formatar os elementos relativos ao texto no VBA 
 
 
Alterar a aparência como as linhas de grade em um formulário 
 
 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 08 
 
Módulo II – O ambiente de programação 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Definir se as janelas devem se posicionar como encaixáveis ou flutuantes 
 
 
http://academia.aegea.com.br/moodle/
Pág. 09 
 
Módulo III - Como funciona o VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo III - Como funciona o VBA 
 
Aula 08 – Modelo de objeto do Excel 
 
O VBA possui: 
✓ Objetos; 
✓ Propriedades; 
✓ Métodos. 
 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 10 
 
Módulo III - Como funciona o VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 11 
 
Módulo III - Como funciona o VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
 
 
É possível alterar as propriedades de um objeto de três formas: 
✓ Editando o objeto 
✓ Alterando as propriedades na Janela de Projetos 
✓ Através de comandos na janela de código do objeto. 
* Algumas propriedades não são editáveis. 
 
 
http://academia.aegea.com.br/moodle/
Pág. 12 
 
Módulo III - Como funciona o VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
 
Resumo: 
✓ Objeto: Um objeto representa um elemento de um aplicativo, como uma 
planilha, uma célula, um gráfico, um formulário ou um relatório. 
✓ Coleção: é um objeto que contém vários outros objetos 
✓ Estrutura: Hierarquia entre os objetos 
✓ Método: é uma ação que um objeto pode executar. 
✓ Propriedade: é um atributo de um objeto que define uma das características 
do objeto 
Aula 09 – Procedimentos Sub e procedimentos Function 
 
Existem dois tipos de procedimentos: 
 
✓ Sub: Grupo de declarações que executam ações 
➢ Procedimento Sub: Sempre começa com a palavra-chave SUB e encerra 
com a END SUB 
✓ Function: Grupo de declarações que executam cálculos 
➢ Procedimento Function: Sempre começa com a palavra-chave 
FUNCTION e encerra com a END FUNCTION) 
http://academia.aegea.com.br/moodle/
Pág. 13 
 
Módulo III - Como funciona o VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Os nomes dos procedimentos podem possuir letras, números e alguns 
caracteres especiais. 
Porém o primeiro caractere do nome de um procedimento deve uma letra, 
nunca número. 
Não se pode inserir espaço “ ” nem ponto “.” no nome dos procedimentos. 
Caracteres que não são permitidos: !, @, #, $, % e ^ 
O VBA não faz distinção entre MAIÚSCULA e minúsculas. 
Não é aconselhável nomear procedimentos com nomes de alguns objetos 
como células (A1), pois pode gerar conflitos no aplicativo. 
Nomes com no máximo 255 caracteres. 
Formas de execução dos procedimentos SUB 
✓ Botão “play” executar Sub/UserForm 
✓ Tecla F5 
✓ Caixa de Macro 
✓ Botão ou Tecla de Atalho atribuída 
✓ Através de outra macro 
Formas de execução dos procedimentos FUNCTION 
✓ Através da planilha, inserindo õ nome e argumentos da função criada; 
✓ A partir de um procedimento SUB 
✓ Na guia Fórmulas > Inserir Função 
 
Aula 10 – Referências relativas e referências absolutas 
 
Referências relativas: Muda o endereço de referência relativamente à declaração 
Referências absolutas: Não muda o endereço de referência. 
 
http://academia.aegea.com.br/moodle/
Pág. 14 
 
Módulo IV – Variáveis e constantes 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo IV – Variáveis e constantes 
 
Aula 11 – Comentários 
 
Os comentários no VBA são informações digitadas que o VBA não lê como uma 
declaração. 
Os comentários no VBA podem ser inseridos de duas formas: 
➢ ‘ sinal apóstrofo antes do comentário 
➢ REM – palavra-chave antes do comentário 
 
Aula 12 – Variáveis 
 
A variável é um local nomeado para o armazenamento de valores, que 
podem conter dados modificáveis durante a execução do programa. 
Cada variável tem um nome que a identifica exclusivamente 
 
 
As variáveis possuem tipos de dados 
✓ Integer  Números inteiros de -32.768 a 32.767 
✓ Long  Números de -2.147.483.648 a 2.147.483.647 
✓ String  Texto de 0 a aproximadamente 2 bi de caracteres 
http://academia.aegea.com.br/moodle/
Pág. 15 
 
Módulo IV – Variáveis e constantes 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
✓ Date  Datas de 1/1/100 a 31/12/9999 
✓ Variant  Qualquer valor (padrão para variáveis não declaradas) 
✓ Boolean  Verdadeiro ou Falso 
 
Quando você declara o tipo de uma variável e não determinou o valor desta 
ela automaticamente recebe o valor de “0” zero. 
 
Aula 13 – Variáveis II (Strings, dates e objects) 
 
As variáveis do tipo String, 
✓ recebem valores de texto; 
✓ seus valores devem ser declarados entre “aspas”; 
✓ pode ser de comprimento fixo ou variável. 
 
As variáveis do tipo Date, 
✓ recebem valores de data; 
✓ seus valores devem ser declarados entre #hashtags# 
✓ Se apresentam no formato inglês MM/DD/AAAA 
As variáveis do tipo Object, 
✓ recebem valores de objetos; 
✓ seus valores devem ser declarados com a instrução SET 
✓ Permite que se atribua propriedades e métodos do objeto à variável 
 
Aula 14 – Constantes 
 
Uma CONSTANTE é uma variável que NÃO PERMITE ALTERAÇÕES. 
Se você tentar modificar uma constante, o Visual Basic gerará uma 
mensagem de erro. 
http://academia.aegea.com.br/moodle/
Pág. 16 
 
Módulo IV – Variáveis e constantes 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
O VBA possui constantes próprias muito utilizadas, tais como as constantes 
de alinhamento: 
✓ xlcenter 
✓ xlleft 
✓ xlright 
 
Aula 15 – Vetores e matrizes 
 
Vetores são variáveis que recebem vários valores. O primeiro vetor sempre 
começa no índice 0 (zero). 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 17 
 
Módulo IV – Variáveis e constantes 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
 
Você pode declarar uma vetor como indefinida no início do seu código, e 
posteriormente o redeclarar com o uso da palavra-chave: ReDim. 
http://academia.aegea.com.br/moodle/
Pág. 18 
 
Módulo V – Objeto Range 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo V – Objeto Range 
 
Aula 16 – O Objeto Range 
 
O objeto range é uma célulaou um intervalo de células. 
Para utilizar o objeto range deve-se declarar: A palavra-chave RANGE seguida 
de (“nome da célula”) ou (“nome do intervalo”). 
É possível se referir a um objeto range que está em uma outra planilha. 
Para isso deve-se utilizar a declaração WORSHEETS seguida por (“nome da 
planilha”).RANGE(“nome da célula”). 
 
Aula 17 – Propriedades úteis do Objeto Range 1 
 
A propriedade CELLS indica a posição de uma célula com relação às linhas e 
colunas. 
A propriedade OFFSETS define um deslocamento/distância da célula 
declarada. 
Tanto a propriedade CELLS quanto a propriedade OFFSETS deve ser declara 
com o indicador de linhas “ROWS” e de colunas “COLUMNS” entre parênteses 
conforme exemplos a baixo: 
➢ cells(nº rows, nº columns) 
➢ offsets(nº rows, nº columns) 
 
Aula 18 – Propriedades úteis do Objeto Range 2 
 
➢ Value: Representa o valor de uma célula ou intervalo; 
➢ Text: Representa o texto de uma célula; 
➢ Count: Representa a quantidade de células; 
➢ Column: Representa o número da coluna de uma célula; 
➢ Row: Representa o número da linha de uma célula. 
http://academia.aegea.com.br/moodle/
Pág. 19 
 
Módulo V – Objeto Range 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 19 – Propriedades úteis do Objeto Range 3 
 
➢ Address: Representa o endereço de uma célula; 
➢ HasFormula: Indica se a célula possui uma fórmula; 
➢ Font: Refere-se a fonte da célula; 
➢ Interior: Refere-se ao preenchimento da célula; 
➢ Formula: Escreve uma fórmula na planilha. 
 
Aula 20 – Métodos úteis do Objeto Range 1 
 
➢ Select: Seleciona uma célula ou intervalo; 
➢ Copy: Copia uma célula ou intervalo; 
➢ PasteSpecial: Cola uma célula ou intervalo com formatos especiais; 
➢ Cut: Recorta uma célula ou intervalo. 
 
Aula 21 – Métodos úteis do Objeto Range 2 
 
Clearcontents: Apaga o conteúdo de célula ou intervalo; 
Clearformats: Apaga a formatação de uma célula ou intervalo; 
Clear: Apaga todas as informações de uma célula ou intervalo; 
Clearcoments: Apaga os comentários de uma célula ou intervalo; 
Merge/Unmerge: Mesclar e desfaz mesclar células. 
 
Aula 22 – Métodos úteis do Objeto Range 3 
 
➢ Delete: Deleta uma célula ou intervalo 
➢ Insert: Insere uma célula ou intervalo 
➢ Find: Localiza um valor 
➢ Replace: Substituir 
http://academia.aegea.com.br/moodle/
Pág. 20 
 
Módulo VI – Funções no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo VI – Funções no VBA 
 
Aula 23 – Funções Integradas VBA 
 
Quando falamos de funções no VBA, existem três tipos diferente: 
✓ Funções Integradas: Já estão pré-definidas no VBA 
✓ Funções de Planilha: Padrões do Excel 
✓ Funções Personalizadas: Criadas pelo usuário 
✓ Msgbox: Exibe uma caixa de mensagem 
✓ Inputbox: Exibe uma caixa de mensagem para o usuário digitar 
informações. 
 
 
 
✓ Left: Extrai um determinado número de caracteres da esquerda de uma 
string; 
✓ Right: Extrai um determinado número de caracteres da direita de uma 
string; 
http://academia.aegea.com.br/moodle/
Pág. 21 
 
Módulo VI – Funções no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
✓ Len: Retorna o número de caracteres de uma string; 
✓ Ucase: Transforma as letras em maiúscula. 
 
Aula 24 – Funções de planilhas no VBA 
 
Ativa a partir da declaração Application.WorksheetFunction 
✓ SUM: Corresponde à função SOMA do Excel; 
✓ VLOOKUP: Corresponde à função PROCV do Excel; 
✓ RANDBETWEEN: Corresponde à função ALEATÓRIO do Excel. 
 
Aula 25 – Funções personalizadas no VBA 
 
As funções personalizadas são fórmulas criadas pelo usuário para serem 
utilizadas posteriormente como funções de planilha. 
 
http://academia.aegea.com.br/moodle/
Pág. 22 
 
Módulo VII – Controles de fluxo 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo VII – Controles de fluxo 
 
Aula 26 – A estrutura IF THEN ELSE 1 
 
A instrução IF Then Else faz com que o VBA verifique se uma condição seja 
verdadeira, se a condição for verdadeira o VBA executa um código, se a condição for 
falsa o VBA executa outro código ou não executa nada. 
IF: Condição 
Then: Resposta para condição verdadeira 
Else: Resposta para condição falsa 
End IF: Encerra a estrutura IF 
 
Aula 27 – A estrutura IF THEN ELSE 2 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 23 
 
Módulo VII – Controles de fluxo 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 28 – Select Case 1 
 
A instrução Select Case nos permite fazer uma escolha quando há diversas opções 
disponíveis. Sua estrutura é: 
SELECT CASE e oNomedaEstrutura 
CASE IS = Opção a escolher 
END SELECT – Que encerra o nome da estrutura 
 
Aula 29 – Select Case 2 
 
CASE IS par indicar = 
CASE ELSE para indicar outra opção para exceto as anteriores 
CASE TO para indicar opção com valores entre um intervalo 
 
Aula 30 – IF com Select Case 
 
Quando você tem várias opções e um teste lógico para filtrar estas opções a 
melhor forma de se fazer isso dentro do VBA é utilizando em conjunto as estruturas 
IfThenElse e SELECT CASE 
 
http://academia.aegea.com.br/moodle/
Pág. 24 
 
Módulo VII – Controles de fluxo 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 31 – Declaração GOTO 
 
É um desvio incondicional para uma linha especificada dentro de uma função 
VBA. É também a forma mais rápida de se alterar o fluxo do seu código. 
Muitas instruções GoTo podem tornar o código difícil de ler e depurar. Por 
isso aconselhamos o uso de controles de fluxos estruturados com a instrução 
IfThenElse e Select Case. 
 
http://academia.aegea.com.br/moodle/
Pág. 25 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo VIII – Estruturas de repetição 
 
Aula 32 – Loop For Next 1 
 
A instrução ForNext nos permite executar o mesmo código por um 
determinado número de vezes. 
 
Aula 33 – Loop For Next 2 
 
 
 
“Você tem algo 
importante para 
frisar para os 
seus leitores? 
Use uma barra 
lateral para dar 
destaque.” 
http://academia.aegea.com.br/moodle/
Pág. 26 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 34 – Loop For Next 3 
 
O For Loop no VBA é um dos loops mais usados no VBA. O loop For tem duas 
formas: Para o próximo e para cada em seguida. O loop For normalmente é usado 
para mover sequencialmente através de uma lista de itens ou números. Para 
finalizar o loop FOR em qualquer ponto, podemos usar a instrução EXIT FOR. 
 
1 
2 
3 
Para a_counter = start_counter Para end_counter 
Faça algo aqui 
Próxima a_counter 
 
O que estamos fazendo aqui essencialmente é criar um loop que usa uma 
variável a_counter como o 'time keeper' do loop. Definimos -lo para um valor igual 
a start_counter no início do loop e, em seguida, increment (ou reduzi-lo) por 1 
durante cada ciclo até. O loop será executado até o momento em que o valor do 
a_counter se torna igual a end_counter. O loop é executado pela última vez quando 
ambos os valores acima coincidem e depois param. 
 
Exemplo de um LOOP FOR 
1 
2 
3 
4 
5 
6 
7 
Sub my_for_loop1 () 
Para a_counter = 1 a 10 
J = um contador 
Próxima a_counter 
 
Msgbox "O valor do contador no último loop foi" & a_counter 
End Sub 
O valor final do a_counter no loop acima é 11. 
http://academia.aegea.com.br/moodle/
Pág. 27 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
VBA para loop em reverso com instrução STEP: Não é necessário que o 
contador no loop for apenas se mova de um valor inferior para um valor mais alto - 
você pode ter o loop for também. Aqui está um exemplo de loop for reverse: 
1 
2 
3 
4 
5 
6 
7 
Sub my_for_loop2 () 
Para a_counter = 10 a 1 Passo -1J = um contador 
Próxima a_counter 
 
Msgbox "O valor do contador no último loop foi" & a_counter 
End Sub 
 
O valor final do a_counter neste loop é 1. 
 
Como você pode ver, podemos usar a instrução Step n para garantir que o 
loop for seja para frente ou para trás. Por padrão, o valor Step é 1, no entanto, pode 
ser definido como um número maior que 1 para saltar para a frente ou negativos 
para o loop for para trabalhar em sentido inverso. 
 
VBA For Each... In... Next Loop: O loop For Each... In... Next possui a seguinte 
sintaxe: 
1 
2 
3 
Para cada item_in_grupo Em group_of_items 
Faça algo aqui 
Próximo item_in_grupo 
 
O item_in_grupo aqui pertence a um grupo_de_artigos (smart não é I). O que 
quero dizer é que o objeto usado como um group_of_items tem que ser uma 
coleção de objetos. Você não pode executar um loop 'para cada item' em objetos 
http://academia.aegea.com.br/moodle/
Pág. 28 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
individuais (para que a Microsoft não lance o erro de runtime amigável 438 em 
você!) 
 
 
 
O loop acima move um item de cada vez começando com o primeiro item na 
coleção de objetos. Você pode usar este particular para a sintaxe loop para iterar ao 
longo de folhas em uma pasta de trabalho, formas em uma folha, tabelas dinâmicas 
em uma folha ou qualquer coleção de objetos em geral. 
Vejamos o exemplo de como você pode usar o loop for para iterar em todas as 
planilhas de uma pasta de trabalho: 
 
1 
2 
3 
4 
5 
Sub my_for_loop3 () 
Para cada sht Em ActiveWorkbook.Worksheets 
MsgBox sht.Name 
Próxima sht 
End Sub 
 
Agora vamos ver como podemos passar por todas as tabelas dinâmicas em 
uma folha: 
 
1 
2 
3 
Sub my_for_loop4 () 
Para Cada pvt Em ActiveSheet.PivotTables 
MsgBox pvt.Name 
http://academia.aegea.com.br/moodle/
http://www.databison.com/wp-content/uploads/2009/07/for-loop-vba-error-run-time-error-438.png
Pág. 29 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
4 
5 
Próxima pvt 
End Sub 
 
End For Loop antes da condição final: Se você precisar terminar o loop For 
antes que a condição final seja alcançada ou atendida, basta usar o END FOR em 
conjunto com a instrução IF. No exemplo dado abaixo, saímos do loop for 
prematuramente e antes que a condição final seja atendida. Por exemplo, a seguir, 
o loop sai quando a_counter atinge um valor de 3. 
 
1 
2 
3 
4 
5 
6 
Sub my_for_loop5 () 
Para a_counter = 0 a 5 
MsgBox a_counter 
Se (a_counter = 3) Então saia para 
Próxima a_counter 
End Sub 
 
Mover para fora de ou ignorar um loop específico em um loop for: Não é 
aconselhável mover para fora um loop for e depois voltar para trás. Vamos dar um 
exemplo muito complicado: 
1 
2 
3 
4 
5 
6 
7 
8 
9 
Sub my_for_loop6 () 
Dim j As Integer 
Para i = 0 a 5 
B: 
Se (j = 3) Então GoTo a: 
Ji 
Em seguida i 
uma: 
J = 4 
http://academia.aegea.com.br/moodle/
Pág. 30 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
10 
 11 
 12 
 13 
Vá para b 
 
MsgBox ( "Valor final de j =" & j) 
End Sub 
 
O que tentamos fazer aqui é um movimento fora do loop for em uma 
iteração particular (quando j = 3). O que você acha que é o valor final de j no exemplo 
acima. 3? 5? Bem... nenhum deles realmente. O loop executa indefinidamente e em 
breve levaria ao estouro. 
No entanto, é possível ignorar um loop no For Loop. Você pode incrementar 
o contador em 1 (ou qualquer outro número) e isso pode fazer com que o loop for 
salte todos os loops entre eles. Aqui está um exemplo. 
 
1 
2 
3 
4 
5 
6 
Sub my_for_loop7 () 
Para i = 0 a 5 
I = i + 1 
MsgBox i 
Em seguida i 
End Sub 
 
 
No entanto, novamente, esta não é uma boa prática de codificação e pode 
levar a dores de cabeça para as pessoas mantendo o código VBA mais tarde. Em vez 
disso, verifique se a condição particular deve ser ignorada em um loop FOR, tente 
usar uma função IF ou mesmo uma instrução SELECT CASE. 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 31 
 
Módulo VIII – Estruturas de repetição 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 35 – Loop Do While 
 
 
 
Aula 36 – Loop Do Until 
 
 
 
Aula 37 – Loop For Each 
 
 
http://academia.aegea.com.br/moodle/
Pág. 32 
 
Módulo IV – Eventos no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo IV – Eventos no VBA 
 
Aula 38 – Evento Workbook Open 
 
O evento Open é um evento da pasta de trabalho, que é disparado toda vez 
que uma pasta de trabalho é aberta. 
 
Aula 39 – Evento Before Close 
 
O Evento BeforeClose acontece sempre antes de uma pasta de trabalho ser 
fechada. 
 
Aula 40 – Evento Before Save e After Save 
 
➢ O evento BeforeSave é disparado sempre antes de uma pasta de trabalho 
ser salva. 
➢ O evento AfterSave é disparado sempre após uma pasta de trabalho ser 
salva. 
 
Aula 41 – Evento New Sheet 
 
O Evento NewSheet é disparado sempre após uma nova planilha ser criada 
na pasta de trabalho. 
 
Aula 42 – Evento Window Activate 
 
➢ O evento WindowActivate é acionado sempre que uma janela do Excel é 
ativada 
➢ O evento WindowDeactivate é disparado sempre que uma janela do 
Excel é desativada 
http://academia.aegea.com.br/moodle/
Pág. 33 
 
Módulo IV – Eventos no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 43 – Evento Section Change 
 
O evento SelectionChange é um evento de planilha no VBA que é disparado 
sempre que a seleção de uma célula da planilha é alterada. 
 
Aula 44 – Evento Change 1 
 
O evento Change é um dos eventos de planilha mais importantes e mais 
utilizados no VBA. 
Este evento é disparado sempre que o valor de uma célula é alterado numa 
planilha. 
 
Aula 45 – Evento Change 2 
 
Continuação: conteúdo disponível apenas na video-aula. 
 
Aula 46 – Evento Before Double Click 
 
O evento BeforeDoubleClick é acionado sempre antes de o usuário der um 
duplo clique com o mouse numa célula da planilha. 
 
Aula 47 – Evento Activate e Deactivate 
 
➢ O evento Activate é acionado sempre que uma planilha é selecionada no 
Excel 
➢ O evento Deactivate é acionado sempre que uma planilha perde o foco 
(a seleção) no Excel 
 
Aula 48 – Evento On Time 
 
O evento On Time permite que uma macro seja executada numa hora 
programada. 
http://academia.aegea.com.br/moodle/
Pág. 34 
 
Módulo X – Tratamento de erros e outros exemplo 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo X – Tratamento de erros e outros 
exemplo 
 
Aula 49 – Tratamento de erros 1 
 
Podemos dizer que é quase inevitável que ocorram erros de programação 
quando criamos nossos códigos. Por mais experiente que seja o programador é 
muito difícil prever todas as ações dos usuários que irão utilizar os programas. 
A declaração On Error em conjunto com a declaração GoTo é uma boa opção 
para alterar o fluxo do programa quando há a possibilidade de erro acontecer. 
 
Aula 50 – Tratamento de erros 2 
 
A declaração On Error em conjunto com a declaração Resume Next é uma 
opção para ignorarmos um erro quando ele acontecer. 
 
Aula 51 – A propriedade CurrentRegion 
 
É uma das propriedades mais importantes do objeto Range quando 
precisamos trabalhar com banco de dados no Excel. 
Através da propriedade CurrentRegion podemos facilmente obter o número 
total de linhas de uma base de dados e assim fazer o cadastro do próximo item na 
linha abaixo. 
 
Aula 52 – Alterando configurações do Excel pelo VBA 
 
Com o VBA é possível alterar algumas configurações do Excel. Através de 
configurações booleanas, que são aquelas com o valor de verdadeiro ou falso, vocêhttp://academia.aegea.com.br/moodle/
Pág. 35 
 
Módulo X – Tratamento de erros e outros exemplo 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
pode construir um código, que fará referência às propriedades ou funções da 
WorkBook, WorkSheet, Application entre outros objetos. 
 
Aula 53 – A estrutura With – End With 
 
A instrução With e End With é uma importante ferramenta para deixar o seu 
código mais rápido e otimizado. 
 
http://academia.aegea.com.br/moodle/
Pág. 36 
 
Módulo XI – Criar fórmulas personalizadas no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo XI – Criar fórmulas personalizadas 
no VBA 
 
Aula 54 – Fórmulas sem argumentos 
 
Fórmulas sem argumentos são aquelas que não precisam de parâmetros, 
apenas colocamos o nome da função abrimos e fechamos parênteses, por exemplo 
a função HOJE(), AGORA(). 
 
Aula 55 – Fórmulas com um argumento 
 
Fórmulas com um argumento são aquelas que possuem um parâmetro a ser 
informado, após colocamos o nome da função, abrimos os parênteses, informamos 
o argumento, e fechamos os parênteses, por exemplo a função RAIZ(n). 
 
Aula 56 – Fórmulas com dois argumentos 
 
Fórmulas com dois argumentos são aquelas que possuem dois parâmetro a 
serem informados, após colocamos o nome da função, abrimos os parênteses, 
informamos o primeiro argumento, inserimos “;” (ponto e vírgula), e então 
fechamos os parênteses, por exemplo a função POTÊNCIA(núm;potência). 
 
Aula 57 – Fórmulas cujo argumento seja um intervalo de 
células 
 
Existem fórmulas no Excel cujos argumentos da função são intervalos de 
células, ou matrizes, como é o caso da função MAIOR ou a função PROCV. No VBA, 
é possível criar fórmulas com um intervalo como argumento. Este intervalo também 
pode ser chamado de FAIXA. 
http://academia.aegea.com.br/moodle/
Pág. 37 
 
Módulo XI – Criar fórmulas personalizadas no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 58 – Fórmulas com argumento opcional 
 
Em determinadas fórmulas no Excel os parâmetros não são obrigatórios, 
como a função ESQUERDA() cujo segundo argumento não é obrigatório. 
No VBA também é possível criar esse tipo de função com argumento 
opcional. 
http://academia.aegea.com.br/moodle/
Pág. 38 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo XII – Trabalhando com caixas de 
diálogo no VBA 
 
Aula 59 – Função MsgBox (caixa de mensagem) 
 
O que é? 
A função MsgBox exibe uma caixa de mensagem ao usuário e aguarda com 
que o usuário clique em um de seus botões para que esta seja fechada. A estrutura 
de chamada à função MsgBox se faz da seguinte forma: 
 
MsgBox([prompt][, buttons] [, title] [, helpfile, context]) As VbMsgBoxResult 
 
Prompt 
Obrigatória. Expressão de seqüência de caracteres exibida como mensagem 
na caixa de diálogo. O comprimento máximo de prompt é de aproximadamente 
1.024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt 
consistir em mais de uma linha, você poderá separar as linhas utilizando um 
caractere de retorno de carro (Chr(13)), um caractere de alimentação de linha 
(Chr(10)) ou uma combinação de caracteres de retorno de carro e alimentação de 
linha (Chr(13) & Chr(10)) entre cada linha. 
 
Buttons 
Opcional. Expressão numérica que é a soma de valores que especifica o 
número e o tipo de botões a exibir, o estilo de ícone a utilizar, a identidade do botão 
padrão e a modalidade da caixa de mensagem. Se omitido, o valor padrão para 
buttons é 0. 
 
 
http://academia.aegea.com.br/moodle/
Pág. 39 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Title 
Opcional. Expressão de seqüência de caracteres exibida na barra de título da 
caixa de diálogo. Se você omitir title, o nome do aplicativo será inserido na barra de 
título. 
 
Helpfile 
Opcional. Expressão de seqüência de caracteres que identifica o arquivo de 
Ajuda a ser utilizado para fornecer ajuda sensível ao contexto relativa à caixa de 
diálogo. Se helpfile for fornecido, context também deverá ser fornecido. 
 
Context 
Opcional. Expressão numérica que é o número de contexto da Ajuda 
atribuído ao tópico da Ajuda apropriado por seu autor. Se context for fornecido, 
helpfile também deverá ser fornecido. 
 
Definições 
As definições do argumento buttons são as seguintes: 
CONSTANTE VALOR DESCRIÇÃO 
VbOKOnly 0 Exibe somente o botão OK. 
VbOKCancel 1 Exibe os botões OK e Cancelar. 
VbAbortRetryIgnore 2 
Exibe os botões Abortar, Repetir e 
Ignorar. 
VbYesNoCancel 3 Exibe os botões Sim, Não e Cancelar. 
VbYesNo 4 Exibe os botões Sim e Não. 
VbRetryCancel 5 Exibe os botões Repetir e Cancelar. 
vbCritical 16 Exibe o ícone Mensagem crítica. 
vbQuestion 32 Exibe o ícone Consulta de aviso. 
vbExclamation 48 Exibe o ícone Mensagem de aviso. 
vbInformation 64 Exibe o ícone Mensagem de informação. 
vbDefaultButton1 0 O primeiro botão é o padrão. 
vbDefaultButton2 256 O segundo botão é o padrão. 
vbDefaultButton3 512 O terceiro botão é o padrão. 
vbDefaultButton4 768 O quarto botão é o padrão. 
http://academia.aegea.com.br/moodle/
Pág. 40 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
vbApplicationModal 0 
Janela restrita do aplicativo; o usuário 
deve responder à caixa de mensagem 
antes de continuar o trabalho no 
aplicativo atual. 
vbSystemModal 4096 
Janela restrita de sistema; todos os 
aplicativos são suspensos até que o 
usuário responda à caixa de mensagem. 
vbMsgBoxHelpButton 16384 
Adiciona o botão ‘Ajuda’ à caixa de 
mensagens 
VbMsgBoxSetForeground 65536 
Especifica a janela da caixa de mensagens 
como a janela de primeiro plano 
vbMsgBoxRight 524288 O texto é alinhado à direita 
vbMsgBoxRtlReading 1048576 
Especifica que o texto deve aparecer 
como leitura da direita para a esquerda 
em sistemas hebraico e árabe 
 
O primeiro grupo de valores (0 a 5) descreve o número e o tipo de botões 
exibidos na caixa de diálogo; o segundo grupo (16, 32, 48, 64) descreve o estilo de 
ícone; o terceiro grupo (0, 256, 512) determina qual botão é o padrão e o quarto 
grupo (0, 4.096) determina a modalidade da caixa de mensagem. Quando estiver 
somando números para criar um valor final para o argumento buttons, utilize 
somente um número de cada grupo. 
Observação: Essas constantes são especificadas pelo Visual Basic for Applications. 
Como resultado, os nomes podem ser utilizados em qualquer lugar do seu código 
em vez dos valores reais. 
 
Valores retornados 
CONSTANTE VALOR DESCRIÇÃO 
vbOK 1 OK 
vbCancel 2 Cancelar 
vbAbort 3 Abortar 
vbRetry 4 Repetir 
vbIgnore 5 Ignorar 
vbYes 6 Sim 
vbNo 7 Não 
http://academia.aegea.com.br/moodle/
Pág. 41 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Como o MsgBox é uma Função (Function), é possível capturar o valor 
retornado conforme a ação do usuário. 
 
Exemplo 
Apesar do grande número de opções e parâmetro oferecidos pelo MsgBox, vamos 
nos concentrar em sua funcionalidade mais simples neste momento, que é emitir 
mensagens ao usuários. Veja este exemplo de código abaixo: 
 
1 Public Sub TesteMsgBox() 
2 MsgBox "Seja bem vindo ao Microsoft Excel!" 
3 End Sub 
Execute a função e terá o seguinte resultado: 
 
No código de exemplo, apenas o primeiro parâmetro é informado, o 
suficiente para fazer uso de mensagens simples. Porém é possível personalizar ainda 
mais a caixa de mensagem conforme mostra o próximo código de exemplo: 
1 
2 
 
3 
Public Sub TesteMsgBox() 
 MsgBox "Seja bem vindo ao Microsoft Excel!", vbInformation, _ 
 "Testando o MsgBox" 
End Sub 
Note que mais dois parâmetros foram informados, o parâmetro Buttone 
Title. Execute a função e terá o seguinte resultado: 
http://academia.aegea.com.br/moodle/
http://www.tomasvasquez.com.br/blog/microsoft-office/vba-emitindo-mensagens-personalizadas-com-msgbox
Pág. 42 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
 
 
O parâmetro Title permitiu alterar o título da MsgBox, enquanto o 
parâmetro Button alterou o contexto da informação. Como foi informado que o 
botão a ser mostrado seria do tipo vbInformation, um ícone de informação foi 
adicionado ao caixa e mensagem. Outro tipos de Buttons podem ser utilizadas, que 
geraram diferentes ícones, conjunto de botões, alterando inclusive o som que é 
executado ao mostrar a caixa. Claro que o ideal é sempre colocar uma mensagem 
que esteja de acordo com o contexto. Veja a diferença da aparência se mudar o 
parâmetro para o seguinte: 
1 
2 
3 
Public Sub TesteMsgBox() 
 MsgBox "Ocorreu algum erro!", vbCritical, "Testando o MsgBox" 
End Sub 
O resultado da execução do código será a seguinte: 
 
Note a mudança do ícone e do som emitido pelo aplicativo. A mensagem 
também foi alterada para refletir a contexto do ícone utilizado. 
 
http://academia.aegea.com.br/moodle/
http://www.tomasvasquez.com.br/blog/microsoft-office/vba-emitindo-mensagens-personalizadas-com-msgbox
http://www.tomasvasquez.com.br/blog/microsoft-office/vba-emitindo-mensagens-personalizadas-com-msgbox
Pág. 43 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Aula 60 – Função InputBox 
 
Os parâmetros do InputBox: Em primeiro lugar, vejamos a sintaxe desta 
função Visual Basic: 
InputBox (prompt de [, título] [, padrão] [, xpos] [, ypos] [, helpfile] [,contexto]) 
As configurações entre colchetes ([]) são opcionais. Apenas uma configuração 
é obrigatória: o Prompt. 
 
Prompt (Mensagem) 
Esta é a mensagem que você envia para o usuário fazer o seu pedido. Esta 
configuração é obrigatória (mandatory) e deve ser como uma String (cadeia de 
caracteres). 
Observação: Em geral, convém fazer uma pergunta (ou enviar uma mensagem para 
o usuário) solicitando que ele digite uma resposta que não seja "sim" ou "não". Caso 
contrário, será preciso usar uma MsgBox. 
Exemplo: 
Dim Nom As String 
 
Nome= InputBox ("Digite seu nome;") 
 
Title (Título) 
Esta é a primeira configuração opcional. Como o próprio nome indica, é 
preciso adicionar um título ao diálogo. Este título será na forma de uma cadeia de 
caracteres (string) e será inserido na barra de título da caixa de diálogo. 
 
 
http://academia.aegea.com.br/moodle/
Pág. 44 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Exemplo: 
Dim Nome As String 
Nome = InputBox ("Digite o seu NOME:", "NOME") 
 
Observação: esta configuração é opcional, se ela for omitida, o padrão aparecerá 
com o nome do aplicativo utilizado na barra de título. 
Default (Valor padrão) 
A caixa de diálogo InputBox é composta de 4 partes: a janela, a barra de título, a 
caixa de texto e os botões. Aqui, Default vai exibir, em sua inicialização, um valor 
padrão na TextBox (caixa de texto). 
Exemplo: 
Dim Nome As String 
Nome = InputBox ("Digite o seu NOME;", "NOME", "OLIVEIRA") 
xPos & ypos 
Essas duas configurações também são opcionais e permitem colocar o nosso 
InputBox onde desejarmos. Trata-se do posicionamento horizontal (xpos) e vertical 
(ypos), mais especificamente, a distância, em pixels, que separa a borda esquerda 
(ou superior) do InputBox, da margem esquerda (ou superior) da tela. Da tela, e não 
do aplicativo. 
Exemplo: 
Dim Nome As String 
Nome = InputBox ("Digite o seu NOME", "NOME", "OLIVEIRA", 100, 100) 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 45 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Helpfile e Context 
Essas duas configurações opcionais são inseparáveis. Se você fizer referência 
a uma, deverá fazer referência a outra, caso contrário você obterá um erro de 
execução 5: argumento ou chamada de procedimento incorreto. 
Helpfile: ou arquivo de ajuda, é utilizado para identificar o arquivo de ajuda. Trata-
se do seu nome (ex: "DEMO.HLP") ou do seu caminho de acesso (ex: "c:\Help.cam"). 
Context: ou ajuda contextual, é o número de ajuda contextual, atribuída pelo autor, 
para ajudar no tópico correspondente. 
No Microsoft Office Excel 2007, por exemplo, se estas duas configurações 
forem corretamente referenciadas, um botão adicional Help será adicionado ao 
diálogo. Este botão corresponde à tecla F1 do seu aplicativo. 
Exemplo: 
<codw basic>Dim Nome As String 
Nome = InputBox ("Digite o seu NOME", "NOME",,,, "c:\Help.cam", 0) </code> ou: 
 
Dim Nome As String 
Nome = InputBox ("Digite o seu NOME", "NOME", "OLIVEIRA", 200, 200, 
"DEMO.HLP", 10) 
 
Configurações em variáveis 
Assim como todas as funções VB, as configurações podem ser armazenadas 
em variáveis. Mas, muito cuidado para definir o tipo certo. Veja um exemplo que 
passa por todas as configurações variáveis intermediárias: 
 
 
http://academia.aegea.com.br/moodle/
Pág. 46 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Dim Número As Integer 
Mensagem Dim As String, Titulo As String, Por padrão As String, PosX As Integer, 
PosY As Integer, Ajuda AS String, NumAJUDA As Long 
Mensagem = "Entre um número inteiro" 
Titulo = "digitação numérica" 
Por padrão= "13" 
PosX = 250 
PosY = 360 
Help = "c:\Help.cam" 
NumAjuda = 3152 
Número= InputBox (Mensagem, Título, PorPadrão, PosX, PosY, NumAjuda) 
 
Observação: Aqui, nós digitamos, por padrão, um valor do tipo String: PorPadrão= 
"13". Ora, nossa variável encarregada de armazenar o resultado do InputBox é 
Integer. Assim, esperaríamos um retorno de erro Tipo errado. Mas não, neste caso, 
VB sabe reconhecer que o valor digitado é numérico. Para confirmar isso, basta 
adicionar no final do código anterior: 
 
MSGBox Número * 2 
 
InputBox - os botões 
Existem três botões diferentes possíveis no InputBox: 
O botão OK 
Quando o usuário pressiona este botão (ou pressiona a tecla "Enter"), a 
função InputBox retorna tudo o que a caixa de texto contém. Se nada foi digitado, 
ela retorna a cadeia: "". 
 
 
http://academia.aegea.com.br/moodle/
Pág. 47 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
O botão CANCELAR 
Quando o usuário pressiona esta tecla, a função InputBox retorna a 
sequência de comprimento zero: "". 
O botão AJUDA 
Este botão abre a ajuda do aplicativo ou a ajuda correspondente ao arquivo 
e contexto de ajuda, definidos nas configurações. 
Erros comuns 
Saiba que com este recurso, você deverá lidar com tudo que é tipo de erro 
que o usuário possa fazer. Do erro de entrada ao erro de incompreensão, passando 
pelo erro voluntário. Na certa, você vai precisar de um gerenciador de erros, 
adaptado e integrado ao seu código. 
 
Erro de tipo de digitação 
Erro de execução "13" Incompatibilidade de tipo: esta mensagem de erro 
aparece quando você pede ao usuário um determinado tipo de dado (que você 
declara em suas variáveis) e digita outro. Por exemplo, você pede a introdução de 
um número inteiro e ele entra um número decimal. 
Exemplo: 
Dim Número As Integer 'Aqui nós sabemos que é pedido um Integer 
Número = InputBox ("Digite um número inteiro:", "Digitação numérica") 
 
Se o usuário digitar 13,5 e pressionar o botão OK, uma mensagem de erro 
aparecerá. Mesma coisa, mesma sanção, se o usuário digitar uma letra, ou não digitar 
nada e pressionar o botão Cancelar. 
 
 
http://academia.aegea.com.br/moodle/
Pág. 48 
 
Módulo XII – Trabalhandocom caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Como remediar esta situação? 
 
Simplesmente com a ajuda de um processamento de erro. 
 
Exemplo: 
 
Dim Número As Integer 
"Em caso de erro, acesse a etiqueta <bold>Tipo errado</bold> 
On Error GoTo Tipo errado 
Número = InputBox ("Digite um número inteiro:", "Digitação numérica") 
 
`Veja o exemplo do tratamento desejado 
 
Selecione a casa Número 
 Case Is > = 18: MsgBox "Menção Muito Bem" 
 Case Is > = 16: MsgBox "Menção Bem" 
 Case Is > = 14: MsgBox "Menção Passável" 
 Case Is > = 10: MsgBox "Nenhuma menção" 
 Case Is > = 8: MsgBox "Menção nada boa" 
 Case Is > = 6 MsgBox "Menção ruim" 
 Case Else: MsgBox "Menção muito ruim" 
End Select 
Exit Sub 'Não esquecer a Saída para não tratar Tipo Errado 
 
Tipo Errado: 
MsgBox "Você não digitou um número inteiro", vbCritical 
 
Número de caracteres 
Visível pelo seu tamanho, o InputBox não é feito para inserir dados longos. 
Na verdade, a entrada é limitada a 255 caracteres. Além disso, a função InputBox só 
envia 254. Portanto, cuidado para não pedir dados muito "longos" através dela. 
 
 
 
http://academia.aegea.com.br/moodle/
Pág. 49 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Variável obrigatória 
A função InputBox precisa de uma variável para ser armazenada nela. Ao 
contrário da MsgBox que não precisa disso, sem variável você obterá certamente a 
mensagem de erro: Erro de compilação Esperado: = 
Exemplo do que não devemos fazer: 
InputBox ("Digite um número inteiro: ", "Digitação numérica") 
 
Botão CANCELAR 
Como vimos anteriormente, não é possível cancelar se o código pedir um 
número. Na verdade, a função retorna uma string ("" é uma cadeia de caracteres...) 
quando clicarmos neste botão; teremos o erro 13, ou seja, incompatibilidade de 
tipo. Para uma variável declarada As String, isso é diferente. Se o usuário cancelar, 
a variável conterá um dado: "". Ora, este dado pode ser primordial para o sucesso 
do resto do seu código. 
Como evitar isso? 
Fazendo looping, enquanto o comprimento da cadeia enviada pela função 
for igual a zero. Assim: 
Exemplo: 
Dim Nome As String 
Nome = InputBox ("Digite seu NOME: ", "Entre NOME") 
Do While Len (Name) = 0 
 MsgBox "Este dado é obrigatório" 
 Nome = InputBox ("Digite seu NOME:", "Entre NOME") 
Loop 
MsgBox "Seu NOME é: " & Nome 
 
http://academia.aegea.com.br/moodle/
Pág. 50 
 
Módulo XII – Trabalhando com caixas de diálogo no VBA 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Pois é, mas isso cria um problema adicional. Se o usuário, após um momento 
de pouca sorte, só vir o botão Cancelar, minha macro vai ficar dando voltas para 
sempre? Para remediar isso, vamos inserir um registro e uma porta de saída. 
Exemplo: 
Dim Nome As String Dim, Cpt As Integer 
Cpt = 1 
Nome = InputBox ("Digite seu NOME:", "Entre NOME") 
Do While Len (Nome) = 0 
 Cpt = Cpt + 1 
 If Cpt = 4 Then GoTo Muitoburroparacontinuar 
 MsgBox "Este dado é obrigatório. Mais que " & 4 -. Cpt & " tentativas." 
 Nome = InputBox ("Digite seu NOME:", "Entre NOME") 
Loop 
MsgBox "Seu NOME é:" & Nome 
Exit Sub 
Muitoburroparacontinuar: 
MsgBox "Por favor, pare com a informática. 
 
Aula 61 – Método GetOpenFileName (janela para abrir 
arquivo) 
 
O método 
GetOpenFileName no VBA 
é responsável por exibir 
uma caixa de diálogo 
(como a da imagem 
abaixo), onde o usuário 
pode selecionar um 
determinado arquivo numa 
pasta do computador. 
http://academia.aegea.com.br/moodle/
Pág. 51 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Módulo XIII – Trabalhando com 
formulários e controles de formulários 
 
Aula 62 – Visão geral 
 
Um formulário, seja impresso ou online, é um documento projetado com 
uma estrutura e um formato padrão que facilitam a captura, a organização e a 
edição de informações. 
✓ Formulários impressos contêm instruções, formatação, rótulos e espaços 
em branco para escrever ou digitar dados. Você pode usar o Excel e os 
modelos do Excel para criar formulários impressos. 
✓ Formulários online contêm os mesmos recursos de formulários 
impressos e também possuem controles. Controles são objetos que 
exibem dados ou permitem que os usuários facilmente insiram ou editem 
dados, realizem ações ou façam seleções. Em geral, esses controles 
tornam o formulário mais fácil de utilizar. Exemplos de controles comuns 
incluem caixas de listagem, botões de opção e botões de comando. 
Controles também podem executar macros atribuídas e responder a 
eventos, como cliques com o mouse, por meio da execução de um código 
VBA (Visual Basic for Applications). 
 
Um UserForm do objeto é uma caixa de diálogo ou janela que compõe a 
parte da interface do usuário do aplicativo. 
Coleção UserForms é uma coleção cujos elementos representam cada 
carregado UserForm em um aplicativo. A coleção de UserForms tem uma 
propriedade Count, uma propriedade do Item e um método Add. Contagem 
Especifica o número de elementos na coleção; Item (o membro padrão) especifica 
http://academia.aegea.com.br/moodle/
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
Pág. 52 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
um membro da coleção específico; e Adicionar um novo elemento UserForm a 
coloca na coleção. 
Para criar uma caixa de diálogo personalizada, você deve criar um UserForm. 
Para criar um UserForm, clique em UserForm no menu Inserirno Editor do Visual 
Basic. 
Use a janela Propriedades para alterar o nome, o comportamento e a 
aparência do formulário. Por exemplo, para alterar a legenda em um formulário, 
defina a propriedade Caption. 
 
Como exibir um UserForm 
 
A sintaxe é usada para exibir um UserForm programaticamente é o seguinte: 
 
UserFormName.Show 
 
Para exibir um UserForm cujo nome seja UserForm1, use o código a seguir: 
 
UserForm1.Show 
 
Você pode carregar um UserForm na memória sem exibi-lo realmente. Um 
UserForm complexo pode levar vários segundos para aparecer. Como você pode 
pré-carregar um UserForm na memória, você pode decidir quando provocar essa 
sobrecarga. Para carregar UserForm1 na memória sem exibi-lo, use o seguinte 
código: 
 
Load UserForm1 
 
Para exibir o formulário de usuário, você deve usar o método Show que foi mostrado 
anteriormente. 
http://academia.aegea.com.br/moodle/
Pág. 53 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Como ocultar temporariamente um UserForm 
 
Se você deseja ocultar temporariamente um UserForm, use o método 
Ocultar. Você talvez queira ocultar um UserForm, se seu aplicativo envolve a 
movimentação entre os UserForms. Para ocultar um UserForm, utilize o seguinte 
código: 
 
UserForm1.Hide 
 
Como remover um UserForm da memória 
 
Para remover um UserForm da memória, use a instrução Unload. Para 
descarregar um UserForm é chamado UserForm1, utilize o seguinte código: 
 
Unload UserForm1 
 
Se você descarregar um UserForm em um procedimento de evento que está 
associado com um UserForm ou que está associado com um controle em um 
formulário de usuário (por exemplo, você clica um controle CommandButton ), você 
pode usar "Me" palavra-chave em vez do nome do UserForm. Para usar o "Me" 
palavra-chave para descarregar um UserForm, use o seguinte código: 
 
Unload Me 
 
Como usar eventos UserForm 
 
Os UserForms suportam muitos eventos predefinidos que você pode anexar 
os procedimentos do VBA. Quando o evento ocorrer,é executado o procedimento 
anexado ao evento. Uma única ação executada por um usuário pode iniciar vários 
http://academia.aegea.com.br/moodle/
Pág. 54 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
eventos. Entre os eventos mais frequentemente usados para um UserForm são o 
evento Inicializar, o evento Clicar e o evento Finalizar. 
 
Observação: Um módulo do Visual Basic que contenha um procedimento de evento 
pode ser chamado como um módulo "UserForm atrás". Um módulo que contém os 
procedimentos de evento não é visível na coleção Modules da janela do Microsoft 
Project Explorer do Editor do Visual Basic. Clique duas vezes no corpo de um 
UserForm para exibir o módulo do código do UserForm. 
 
Aula 63 – Exemplo de Userform 
 
 
 
Aula 64 – Controles de Userform 
 
Os controles de formulários podem ser inseridos através da caixa de 
ferramentas do VBA Editor. 
Controles de formulário são os 
controles originais que são compatíveis 
com versões anteriores do Excel, 
começando com a versão 5.0. Esses 
controles também foram projetados para uso em planilhas de macros XLM. 
http://academia.aegea.com.br/moodle/
Pág. 55 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Use Controles de Formulário quando desejar fazer referência a dados de 
célula e interagir com eles facilmente sem usar código VBA ou quando quiser 
adicionar controles a planilhas de gráfico. Por exemplo, depois de adicionar um 
controle de caixa de listagem a uma planilha e vinculá-lo a uma célula, você pode 
retornar um valor numérico para a posição atual do item selecionado no controle. 
Em seguida, pode usar esse valor numérico junto com a função ÍNDICE para 
selecionar diferentes itens na lista. 
Também é possível executar macros usando controles de Formulário. Você 
pode anexar uma macro existente a um controle ou escrever e gravar uma nova 
macro. Quando um usuário do formulário clicar no controle, este executará a macro. 
No entanto, esses controles não podem ser adicionados a UserForms, usados para 
controlar eventos ou modificados para executar scripts da Web em páginas da Web. 
 
http://academia.aegea.com.br/moodle/
Pág. 56 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Resumo de controles de formulário 
Nome do botão Exemplo Descrição 
 
Rótulo 
 
Identifica a finalidade de uma célula ou caixa de texto ou exibe texto descritivo 
(como títulos, legendas, imagens) ou breves instruções. 
 
Caixa de grupo 
 
Controles relacionados a grupos em uma unidade visual de um retângulo com um 
rótulo adicional. Em geral, botões de opção, caixas de seleção ou itens de 
conteúdo intimamente relacionados são agrupados. 
 
Botão 
 
Executa uma macro que realiza uma ação quando um usuário clica nele. Um 
botão também é chamado de botão de ação. 
http://academia.aegea.com.br/moodle/
Pág. 57 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Nome do botão Exemplo Descrição 
 
Caixa de seleção 
 
Ativa ou desativa um valor que indica uma opção oposta ou não ambígua. Você 
pode marcar mais de uma caixa de seleção em uma planilha ou em uma caixa de 
grupo. Uma caixa de seleção pode ter um destes três estados: marcada (ativada), 
desmarcada (desativada) e mista, significando uma combinação dos estados 
ativado e desativado (como em uma seleção múltipla). 
 
Botão de opção 
 
Permite uma única opção dentro de um conjunto limitado de opções 
mutuamente exclusivas; um botão de opção está geralmente contido em uma 
caixa de grupo ou em um quadro, podendo ter um destes três estados: marcado 
(ativado), desmarcado (desativado) e misturado, significando uma combinação 
dos estados ativado e desativado (como em uma seleção múltipla). Um botão de 
opção também é chamado de botão de rádio. 
http://academia.aegea.com.br/moodle/
Pág. 58 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Nome do botão Exemplo Descrição 
 
Caixa de listagem 
 
Exibe uma lista de um ou mais itens de texto na qual um usuário pode escolher 
uma opção. Use uma caixa de listagem para exibir diversas opções que variam em 
número ou conteúdo. Existem três tipos de caixas de listagem: 
• Uma caixa de listagem de seleção única permite apenas uma opção. Nesse caso, 
ela se assemelha a um grupo de botões de opção, com a diferença de que a caixa 
de listagem pode lidar com um grande número de itens de maneira mais 
eficiente. 
• Uma caixa de listagem de seleção múltipla permite uma opção ou opções 
contíguas (adjacentes). 
• Uma caixa de listagem com seleção estendida permite uma opção, opções 
contíguas e opções não contíguas (ou disjuntas). 
http://academia.aegea.com.br/moodle/
Pág. 59 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Nome do botão Exemplo Descrição 
 
Caixa de 
combinação 
 
Combina uma caixa de texto com uma caixa de listagem de modo a criar uma 
caixa de listagem suspensa. Uma caixa de combinação é mais compacta do que 
uma caixa de listagem, mas requer que o usuário clique na seta para baixo para 
exibir a lista de itens. Use uma caixa de combinação para permitir que um usuário 
digite uma entrada ou escolha apenas um item da lista. O controle exibe o valor 
atual na caixa de texto, independentemente de como esse valor foi inserido. 
 
Barra de rolagem 
 
Percorre um intervalo de valores quando você clica nas setas de rolagem ou 
arrasta a caixa de rolagem. Além disso, é possível percorrer uma página (ou um 
intervalo predefinido) de valores clicando na área entre a caixa de rolagem e uma 
das setas de rolagem. Normalmente, um usuário também pode digitar um valor 
de texto diretamente em uma célula ou caixa de texto associada. 
 
Botão de rotação 
 
Aumenta ou diminui um valor, como um incremento de número, um horário ou 
uma data. Para aumentar o valor, clique na seta para cima e, para diminuí-lo, 
clique na seta para baixo. Normalmente, um usuário também pode digitar um 
valor de texto diretamente em uma célula ou caixa de texto associada. 
http://academia.aegea.com.br/moodle/
Pág. 60 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
 
Aula 65 – Propriedades úteis do Userform 
 
Formulários de usuário têm Propriedades que determinam a aparência como 
posição, tamanho e cor; e aspectos do seu comportamento. 
Você pode checar as propriedades de um UserForm na janela de 
propriedades do Editor de VBA. 
Ao criar formulários de usuário, defina a propriedade BorderStyle para definir 
bordas e define a propriedade Caption para colocar o texto na barra de título. No 
código, você pode usar o Ocultar e Mostrar métodos para tornar um UserForm 
invisíveis ou visíveis em tempo de execução. 
 
Aula 66 – Principais eventos do Userform 
 
Formulários de usuário também podem responder a eventos iniciada por um 
usuário ou disparado pelo sistema. Por exemplo, você pode escrever o código no 
procedimento de evento inicializar de UserForm para inicializar variáveis de nível de 
módulo antes UserForm seja exibida. 
Além das propriedades e eventos, você pode usar os métodos para manipular 
os formulários de usuário usando o código. Por exemplo, você pode usar o método 
Move para alterar o local e o tamanho de um UserForm. 
UserForm é um tipo de dados do objeto. Você pode declarar variáveis como 
tipo UserForm antes de defini-los para uma instância de um tipo de UserForm 
declaradasem tempo de design. Da mesma forma, você pode passar um argumento 
para um procedimento como tipo UserForm. Você pode criar várias instâncias de 
formulários do usuário no código, usando a palavra-chave New em instruções Dim, 
Defina e estática. 
http://academia.aegea.com.br/moodle/
Pág. 61 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Você pode acessar a coleção de controles em um UserForm usando a coleção 
Controls. Por exemplo, para ocultar todos os controles em um UserForm, use código 
semelhante ao seguinte: 
For Each Control in UserForm1.Controls 
 Control.Visible = False 
Next Control 
 
Evento Initialize: Ocorre depois que um objeto é carregado, mas antes de ser 
mostrada. 
 
Sintaxe 
Private Sub objeto _Initialize() 
 
O espaço reservado do objeto representa uma expressão de objeto que avalia 
para um objeto na lista Aplica-se a. 
O evento Initialize geralmente é usado para preparar um aplicativo ou um 
UserForm para uso. Variáveis são atribuídos valores iniciais e controles podem ser 
movidos ou redimensionados para acomodar os dados de inicialização. 
 
Eventos ativar e desativar 
 
O evento Activate ocorre quando um objeto se torna a janela ativa. O evento 
Deactivate ocorre quando um objeto não é mais a janela ativa. 
 
Sintaxe 
Private Sub objeto _Activate() 
Private Sub objeto _Deactivate() 
 
http://academia.aegea.com.br/moodle/
Pág. 62 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
O espaço reservado do objeto representa uma expressão de objeto que avalia 
para um objeto na lista Aplica-se a. 
Um objeto pode se tornar ativo usando o método Show no código. 
O evento Activate somente pode ocorrer quando um objeto está visível. Um 
UserForm carregado com Load não estiver visível, a menos que você use o método 
Show. 
Os eventos ativar e desativar somente ocorrerem quando você mover o foco 
em um aplicativo. Mover o foco para ou de um objeto em outro aplicativo não aciona 
o evento. 
O evento Deactivate não ocorre quando o descarregamento de um objeto. 
 
Evento QueryClose 
 
Ocorre antes que um UserForm feche. 
 
Sintaxe 
 
Private Sub UserForm_QueryClose( cancel As Integer, closemode As Integer) 
A sintaxe do evento QueryClose tem estas partes: 
 
Parte Descrição 
cancelar Um número inteiro. A configuração desse argumento como qualquer 
valor diferente de 0 para o evento QueryClose em todos os 
formulários de usuário carregados e impede que o UserForm e o 
aplicativo fechem. 
closemode Um valor ou constante que indica a causa do evento QueryClose. 
 
Return Values 
 
O argumento closemode retorna os seguintes valores: 
http://academia.aegea.com.br/moodle/
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
Pág. 63 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
Constante Valor Descrição 
vbFormControlMenu 0 O usuário escolheu o comando Close do menu 
Control no UserForm. 
vbFormCode 1 A instrução Unload é invocada do código. 
vbAppWindows 2 A sessão operacional atual do Windows está 
terminando. 
vbAppTaskManager 3 O Task Manager do Windows está fechando o 
aplicativo. 
 
Estas constantes estão listadas na biblioteca de objetos do Visual Basic for 
Applications no Pesquisador de Objetos. Observe que vbFormMDIForm também é 
especificado no Object Browser, mas ainda não tem suporte. 
 
Remarks 
 
Este evento é tipicamente usado para garantir que não haja tarefas 
inacabadas nos formulários do usuário incluídas em um aplicativo antes que o 
aplicativo seja fechado. Por exemplo, se um usuário não tiver salvado dados novos 
em qualquer UserForm, o aplicativo poderá solicitar que o usuário salve os dados. 
Quando um aplicativo fechar, você poderá usar o procedimento de eventos 
QueryClose para definir a propriedade Cancel como True, parando o processo de 
fechamento. 
 
Aula 67 – Label propriedades 
 
Controles de rótulo são principalmente usados para descrever outros controles 
em um formulário de usuário. Um controle de rótulo não pode ser editado pelo usuário 
durante a execução do UserForm. Use a propriedade Caption para definir ou retornar o 
http://academia.aegea.com.br/moodle/
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
https://msdn.microsoft.com/pt-br/library/office/gg264568.aspx
Pág. 64 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
texto em um controle Label. Outras propriedades usadas com frequência para a 
formatação de um controle de rótulo incluem a propriedade Font e a propriedade 
ForeColor. 
Como usar uma instrução WITH para formatar um controle Label 
Para usar a instrução WITH para alterar as propriedades de um controle 
Label, siga estas etapas: 
1. Inicie o Excel e abra uma nova pasta de trabalho em branco. 
2. No menu Ferramentas, aponte para Macro e, em seguida, clique em 
Editor do Visual Basic. 
3. No menu Inserir, clique em UserForm para inserir um formulário de 
usuário em sua pasta de trabalho. 
4. Adicione um controle de rótulo ao UserForm. 
5. Adicione um controle CommandButton ao UserForm. 
6. Clique duas vezes no controle CommandButton para abrir a janela de código 
para o formulário de usuário. 
7. Na janela código, digite o seguinte código para o evento Click 
CommandButton1: 
Private Sub CommandButton1_Click() 
 
 With Label1 
 ' Set the text of the label. 
 .Caption = "This is Label Example 1" 
 ' Automatically size the label control. 
 .AutoSize = True 
 .WordWrap = False 
 ' Set the font used by the Label control. 
 .Font.Name = "Times New Roman" 
 .Font.Size = 14 
 .Font.Bold = True 
 ' Set the font color to blue. 
 .ForeColor = RGB(0, 0, 255) 
 End With 
 
End Sub 
8. No menu Executar, clique em Executar Sub/UserForm. 
http://academia.aegea.com.br/moodle/
Pág. 65 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
9. Clique no CommandButton. 
 
Aula 68 – Label eventos 
 
O conteúdo não apresentado na Aula 67 estão disponíveis na vídeo-aula do 
seu curso. 
 
Aula 69 - TextBox propriedades 
 
Controles TextBox são frequentemente usados para coletar entrada do 
usuário. A propriedade Text contém a entrada que é feita em um controle TextBox. 
 
Como usar um controle TextBox para validar uma senha 
 
Se você definir a propriedade PasswordChar de um controle TextBox, ele se 
torna um controle de "edição mascarada". Cada caractere digitado no controle 
TextBox é substituído visualmente pelo caractere que você especificar. Para usar um 
controle TextBox para validar a senha, execute estas etapas: 
 
1. Inicie o Excel e abra uma nova pasta de trabalho em branco. 
2. No menu Ferramentas, aponte para Macro e, em seguida, clique em 
Editor do Visual Basic. 
3. No menu Inserir, clique em UserForm para inserir um formulário de 
usuário em sua pasta de trabalho. 
4. Adicione um controle TextBox para o formulário de usuário. 
5. No menu Exibir, clique em Propriedades para tornar visível a janela 
Propriedades. 
http://academia.aegea.com.br/moodle/
Pág. 66 
 
Módulo XIII – Trabalhando com formulários e controles de formulários 
 
 
http://academia.aegea.com.br/moodle/ - Profº Ricardo Bortoli 
6. Na propriedade PasswordChar do controle TextBox, digite *. 
Observação: Você está alterando o valor de um asterisco. 
7. Adicione um controle CommandButton ao UserForm. 
8. Clique duas vezes no controle CommandButton para abrir a janela de 
código para o formulário de usuário. 
9. Na janela código,

Outros materiais