Você está na página 1de 154

Excel 2013

com VBA
Excel 2013
com VBA

Nome do Aluno

S e n a c S ã o P a u l o – S ã o P a u l o – 2 0 1 3
© Senac São Paulo 2013

Administração Regional do S enac no E stado de São P aulo

Gerência de Desenvolvimento
Luciana Bon Duarte Fantini

Coordenação Técnica
Richard Martelli

Apoio Técnico
Abraão Gomes de Godoy
Paulo Roberto Pereira Dias

Elaboração do Recurso Didático


Clóvis Ferrari
Maria Silvia Mendonça de Barros

Editoração e Revisão
Globaltec Editora Ltda.
Excel 2013 com VBA

SUMÁRIO
CAPÍTULO 1 – MACROS / 7
Introdução / 8
Atividade 1 – Criar uma macro interativa / 8
Gravando uma macro / 10
Executando uma macro / 12
Salvando uma pasta com macros / 13
Atividade 2 – Criando macros com deslocamento relativo / 13
Executando a macro Transporta / 16
Executando uma macro pela guia Desenvolvedor / 16
Excluindo uma macro / 16
Atividade 3 – Segurança de macros / 17
Habilitar macros ao abrir a pasta / 17
Configurando a segurança de macro / 17
Exercício Proposto / 19

CAPÍTULO 2 – VISUAL BASIC FOR APPLICATIONS (VBA) / 20


Introdução / 21
Recursos interativos X VBA / 21
Atividade 1 – Editor do Visual Basic e elementos do VBA / 22
Conhecendo o editor do Visual Basic / 22
Elementos da linguagem VBA / 23
Sintaxe / 24
Sintaxe – Hierarquia / 24
hierarquia dos objetos do excel / 25
Objeto Range / 25
Procedimentos e funções / 25
Cores do Visual Basic / 27
Criando um procedimento / 27
Executando a macro no editor / 30

CAPÍTULO 3 – APRESENTAÇÃO DO PROJETO CONCEITOS / 31


Descrição do aplicativo a ser criado / 32
Fases de construção / 33

CAPÍTULO 4 – OBJETO WORKSHEET, PROPRIEDADES SELECT E OFFSET / 34


Objeto Worksheet / 35
Propriedades das coleções / 35
Propriedade Offset e Select / 35
Atividade 1 – Preparando a área de entrada / 36
Atividade 2 – Criando os procedimentos para transporte dos dados / 37

4 Senac São Paulo


Excel 2013 com VBA

Digitando o código – Livros / 37


Digitando o código – Sócios / 38
EXERCÍCIO PROPOSTO / 39

CAPÍTULO 5 – INPUTBOX, MSGBOX, IF...THEN...ELSE / 40


Criando caixa de diálogo para digitação de dados / 41
InputBox / 41
Método InputBox / 41
Função InputBox / 42
Atividade 1 – Criando procedimentos para entrada de dados usando
InputBox / 43
Criando o procedimento Cadastra_LIVRO / 43
Criando o procedimento Cadastra_Socio / 44
Atividade 2 – Utilizando MsgBox e If...Then...Else / 45
UTILIZando caixa de mensagem MsgBox / 45
UTILIZando desvios condicionais If...Then...Else / 47
Atividade 3 – Introduzindo caixas de diálogo nas macros criadas na
Atividade 1 / 48
Uso do ElseIf... / 49
Atividade 4 – Utilizando Select Case / 49
EXERCÍCIO PROPOSTO / 50

CAPÍTULO 6 – BOTÕES DE COMANDO / 51


Atividade 1 – Inserindo botões de comando na planilha Biblioteca –
dados / 52
EXERCÍCIO PROPOSTO / 53

CAPÍTULO 7 – EVENTOS E VARIÁVEIS / 54


Atividade 1 – Utilizando eventos / 55
Eventos da pasta de trabalho / 55
Eventos de planilha / 55
Atividade 2 – Constantes e variáveis / 58
Compreendendo o escopo e a visibilidade / 61
Definindo o escopo em nível de procedimento / 61
Definindo o escopo em nível de módulo privado / 62
Definindo o escopo em nível de módulo público / 62
Atividade 3 – Criando procedimentos para preencher a planilha Biblioteca
Circulante / 63
EXERCÍCIO PROPOSTO / 67

CAPÍTULO 8 – OPERADORES E CONSISTÊNCIA DOS DADOS / 68


Operadores / 69
Operadores aritméticos / 69

Senac São Paulo 5


Excel 2013 com VBA

Operadores lógicos / 69
Operadores de comparação / 70
Atividade 1 – Verificando se os itens digitados existem / 70

CAPÍTULO 9 – ESTRUTURAS DE REPETIÇÃO / 73


Atividade 1 – Utilizando a estrutura For...Next / 74
Atividade 2 – Utilizando a estrutura For...Each / 75
Coleção Workbooks / 77
Coleção Worksheets / 78
Consultando a lista de propriedades e métodos dos Objetos / 78
Atividade 3 – Utilizando a estrutura Do...While / 79

CAPÍTULO 10 – FORMULÁRIOS PERSONALIZADOS / 82


Atividade 1 – Inserindo o formulário Cadastra Livros e seus controles / 83
Criando formulários personalizados / 83
Atividade 2 – Criando procedimentos para os botões / 91
Atribuindo funcionalidade aos controles / 91
Criação de um botão que chama o formulário / 93
Definindo a ordem de tabulação / 94
Atividade 3 – Inserindo o formulário Cadastra Sócio e seus controles / 95
EXERCÍCIO PROPOSTO / 97

CAPÍTULO 11 – FUNÇÕES DEFINIDAS PELO USUÁRIO / 98


Atividade 1 – Criando funções / 99
Criando uma função definida pelo usuário / 99
Atividade 2 – Criando funções com parâmetros opcionais / 101
Atividade 3 – Criando função para cálculo do Imposto de Renda / 102
EXERCÍCIO PROPOSTO / 104

CAPÍTULO 12 – TRATAMENTO DE ERROS / 105


Atividade 1 – Tratando erros / 106
A Instrução On Error / 106
Objeto Err / 107
Tratamento de erros do procedimento Calculo / 107
Atividade 2 – Depurando o procedimento / 109
Depurando cada instrução / 114
Definindo pontos de interrupção / 117
EXERCÍCIO PROPOSTO / 118

ANEXOS / 119
REFERÊNCIAS BIBLIOGRÁFICAS / 153

6 Senac São Paulo


excel 2013 com vbA

CAPÍTULO 1
MACROS

ObJETIvO:
• Apresentar o gravador de macros

Senac São Paulo 7


excel 2013 com vbA

Introdução
o curso excel 2013 com vbA foi desenvolvido para usuários que tenham concluído o
curso avançado do excel 2013 ou que possuam conhecimentos equivalentes. Alguns
recursos do excel 2013 serão utilizados no decorrer dos capítulos desta apostila, po-
rém não serão detalhadamente explicados, sendo considerados de conhecimento do
aluno.
Ao final da apostila são apresentados anexos que servirão como material de consulta
para aqueles que desejam avançar em seus conhecimentos relativos ao vbA.
mACroS
As macros são utilizadas para automatizar tarefas que são repetitivas no dia a dia do
usuário, tornando o trabalho do profissional mais ágil e, consequentemente, liberan-
do seu tempo para a realização de outras tarefas.
no excel é possível gravar uma macro rapidamente a partir de uma sequência de
ações realizadas nas planilhas. essas macros são chamadas de macros Interativas e
são criadas utilizando o gravador de macros. também é possível criar uma macro pela
utilização da linguagem de programação vbA (visual basic for Applications) no editor
do vbA, que é um ambiente de programação embutido no excel onde você escreve
um novo código, acrescenta novos procedimentos ao código de uma macro já criada,
executa a depuração de códigos para localizar erros lógicos, de sintaxe ou de tempo
de execução. uma vez que a macro seja criada, é possível associá-la a um objeto para
que seja executada.

atividade 1 – Criar uma macro interativa


Objetivo:
• Identificar um processo que pode ser automatizado, planejar e criar uma macro.
Tarefas:
• exibir a guia desenvolvedor.
• Gravar uma macro.
• executar uma macro.
• Salvar um arquivo com macros.

nessa atividade você criará uma macro que irá automatizar as tarefas que envolvem
o preenchimento de um relatório demonstrativo do movimento mensal de uma em-
presa. esse relatório contém informações relativas ao período de seis meses. quando
a informação atualizada for recebida, os dados do primeiro mês deverão ser descar-
tados e os novos dados deverão ser incluídos.

8 Senac São Paulo


Excel 2013 com VBA

1. Verifique se a guia Desenvolvedor está presente na Faixa de Opções.

2. Caso a guia não esteja presente, clique na guia Arquivo, Opções, Personalizar
Faixa de Opções e habilite a opção Desenvolvedor.

3. Clique em OK. Observe que a guia Desenvolvedor agora está presente na Faixa
de Opções.
4. Abra a pasta Macros.xlsx.

Lembre-se de copiar a pasta PLANILHAS - ATIVIDADES disponível no CD que


acompanha a apostila para o disco rígido do seu computador, facilitando o acesso
aos arquivos disponíveis para a realização das atividades.

5. Digite os dados de teste: 100 em B9, 200 em B10, 300 em B11 e 400 em B12.

Senac São Paulo 9


Excel 2013 com VBA

Gravando uma macro

1. Clique no botão Gravar Macro, do grupo Código da guia Desenvolvedor.

O gravador de macros também pode ser acessado pela Barra de Status no rodapé
do Excel.

2. Na janela de diálogo Gravar macro digite Preenche no campo Nome da macro.


3. Atribua uma combinação de teclas para ativar a macro pressionando a tecla Shift
e a tecla P no campo Tecla de atalho.
4. No campo Armazenar macro em selecione a opção Esta pasta de trabalho.
5. Clique em OK para iniciar a gravação da macro.

10 Senac São Paulo


Excel 2013 com VBA

A partir de agora todos os comando utilizados serão gravados.


6. Vamos eliminar os dados referentes a Janeiro, movendo os dados de Fevereiro a
Junho para a esquerda. Selecione o intervalo C2:G6.
7. Copie essa seleção.
8. Selecione com o botão direito do mouse a célula B2 e cole o conteúdo copiado.
Veja o resultado:

9. Para preencher o nome do próximo mês automaticamente, selecione a célula F2,


coloque o cursor na alça de preenchimento e arraste até a célula G2.
10. Transporte os dados da área de entrada para o último mês. Selecione as células
B9:B12, copie e cole em G3.
11. Selecione as células F2:F6 e copie o formato para as células G2:G6.

Senac São Paulo 11


Excel 2013 com VBA

12. Finalize a gravação da macro. Clique na guia Desenvolvedor, grupo Código, bo-
tão Parar Gravação. A macro Preenche está pronta para ser utilizada.

Você também pode parar a gravação da macro pressionando o respectivo botão na


Barra de Status do Excel.

Executando uma macro

1. Para testar a macro que você acabou de gravar, digite valores na área Entrada da
planilha.
2. Execute a macro pressionando as teclas de atalho anteriormente definidas: Ctrl
+ Shift + P.
A macro é executada e todas as ações realizadas na sua gravação são seguidas passo
a passo. Veja o resultado a seguir:

12 Senac São Paulo


excel 2013 com vbA

Salvando uma pasta com macros

Ao tentar salvar uma pasta de trabalho com extensão .xlsx que contenha uma ou mais
macros, o excel enviará uma mensagem alertando que as macros só serão gravadas
junto com a pasta se o tipo do arquivo for alterado para pasta de Trabalho Habilitada
para Macro do Excel (.xlsm).
1. Clique no botão salvar da Barra de ferramentas de acesso rápido. A seguinte men-
sagem será exibida:

2. escolha o formato correto para salvar a pasta. no campo salvar como tipo esco-
lha a opção pasta de Trabalho Habilitada para Macro do Excel.
3. Selecione o local desejado para armazenar a pasta e mantenha o nome Macros.
o arquivo será salvo com o nome Macros.xlsm.

atividade 2 – Criando macros com deslocamento relativo


Objetivo:
• Gravar macros utilizando a opção deslocamento relativo.
Tarefas:
• Gravar a macro Transporta.
• executar a macro Transporta.
• executar a macro pela guia desenvolvedor.
• excluir uma macro.

na gravação de uma macro, quando efetuamos um deslocamento tornando ativa uma


determinada célula, seu endereço é gravado como sendo absoluto. em muitas ocasi-
ões, porém, esse deslocamento deve ser tratado como sendo relativo. Por exemplo:
suponha que desejamos tornar ativa a primeira célula vazia à esquerda da última cé-
lula preenchida em uma linha. Se durante a gravação da macro não informarmos que
o endereço da célula que deve ser selecionada deve mudar de acordo com as células
preenchidas, na execução da macro a célula ativa será sempre a mesma, independen-
te de conter valores ou não.

Senac São Paulo 13


Excel 2013 com VBA

No exercício que estamos trabalhando, imagine que desejamos armazenar os meses


descartados na planilha Registro e, a cada execução da macro, os dados do mês des-
cartado devam ser colocados na primeira coluna vazia da planilha. Para que esse pro-
cedimento seja efetuado corretamente, é necessário determinar automaticamente a
primeira coluna vazia.
1. Ative a planilha Dados da pasta Macros.xlsm.
2. Inicie a gravação da macro.
3. Atribua o nome Transporta para a macro.
4. Atribua as teclas Shift + T como teclas de atalho.
5. No campo Armazenar macro em: escolha Esta pasta de trabalho.
6. No campo Descrição digite: “Transporta os dados do mês excluído. Deve ser
executada antes da macro Preencher.”
7. Clique no botão OK.

8. Selecione o intervalo do mês a ser descartado: B2:B6.


9. Clique com o botão direito do mouse sobre o intervalo selecionado.
10. Escolha a opção Copiar.
11. Selecione a planilha Registro.
12. Pressione a tecla F5 (Ir Para).
13. Preencha o campo Referência com o endereço XFD1.

14 Senac São Paulo


Excel 2013 com VBA

14. Clique no botão OK. A célula ativa será a primeira célula da última coluna (XFD1).

15. Clique no botão Usar Referências Relativas, do grupo Código, da guia Desenvol-
vedor. Cerifique-se que o botão esteja ativado.
16. Pressione a tecla END e, a seguir, pressione seta para a esquerda. Essa opera-
ção percorre a linha no sentido da seta até encontrar uma célula preenchida,
tornando-a ativa.
17. Pressione a tecla seta à direita para posicionar na primeira célula vazia.

18. Clique com o botão direito sobre a célula B1 e selecione Colar.


19. Clique no botão Usar Referências Relativas para desativá-lo.

Senac São Paulo 15


Excel 2013 com VBA

20. Volte à planilha Dados.


21. Pare a gravação. A macro Transporta está pronta para ser utilizada.

Executando a macro Transporta

1. Execute a macro pressionando suas teclas de atalho Ctrl + Shift + T.


2. Salve a pasta.

Executando uma macro pela guia Desenvolvedor

1. Selecione a guia Desenvolvedor.


2. No grupo Código clique no botão Macros. O seguinte quadro de diálogo será
aberto:

3. Selecione a macro Transporta.


4. Clique no botão Executar.

Excluindo uma macro

1. Grave uma nova macro, de nome Temporaria, com os comandos que desejar.
2. Execute a macro.
3. Agora você vai excluir a macro Temporaria. No grupo Código clique em Macros.
4. Selecione a macro Temporaria.
5. Clique no botão Excluir.
6. Confirme a exclusão da macro pressionando o botão OK.
7. Salve a pasta.

16 Senac São Paulo


excel 2013 com vbA

atividade 3 – Segurança de Macros


Objetivo:
• Controlar o nível de segurança das planilhas.
Tarefas:
• Habilitar macros ao abrir a pasta.
• Configurar a segurança de macro.

As macros de fontes desconhecidas podem conter códigos que infectam o computa-


dor com vírus. Podemos estabelecer como o excel tratará as macros quando a pasta
de trabalho for aberta.

Habilitar as macros ao abrir a pasta

1. feche a pasta Macros.xlsm se estiver aberta.


2. Abra-a novamente. o seguinte aviso será mostrado:

3. Clique em Habilitar Conteúdo.

Configurando a segurança de macro

Podemos estabelecer como o excel tratará as macros.


1. Selecione a guia arquivo e opções.
2. Selecione a opção Central de Confiabilidade.
3. Clique no botão Configurações da Central de Confiabilidade...
4. Selecione a opção Configurações de Macro. A seguinte janela será mostrada:

Senac São Paulo 17


Excel 2013 com VBA

• Desabilitar todas as macros sem notificação: todas as macros serão desabilitadas


nos documentos e nos alertas de segurança de macro.
• Desabilitar todas as macros com notificação: esta é a opção padrão. Neste caso
você poderá decidir quando habilitar as macros.
• Desabilitar todas as macros, exceto as digitalmente assinadas: esta configuração
é similar à opção anterior. A diferença é que, se a macro for digitalmente assinada
por um editor confiável, poderá ser executada se o editor já tiver sido previamen-
te autorizado por você. Caso contrário você receberá uma notificação. Todas as
macros não assinadas será desabilitadas.
• Habilitar todas as macros: permite a execução de todas as macros sem enviar no-
tificações. Esta opção não é recomendável, pois códigos possivelmente perigosos
podem ser executados.
5. Clique no botão OK para fechar a janela.

18 Senac São Paulo


Excel 2013 com VBA

Exercício Proposto
Criar uma macro que transporte os dados da Entrada para a primeira linha disponível
da lista abaixo.
1. Abra a planilha Exercício Macro.xlsx.

2. Digite dados na área de Entrada (A3:C3).


3. Crie a macro Transfere. Não esqueça de utilizar o deslocamento relativo.

Senac São Paulo 19


excel 2013 com vbA

CAPÍTULO 2
VISUAL BASIC FOR
APPLICATIONS (VBA)

ObJETIvO:
• Conhecer os elementos básicos do vbA

20 Senac São Paulo


Excel 2013 com VBA

Introdução
O Visual Basic é uma linguagem de programação que tem a sua origem no BASIC.
Com ela é possível criar aplicativos autônomos.
O Visual Basic for Applications (VBA) é semelhante ao Visual Basic, mas voltado à pro-
gramação de procedimentos nos objetos criados nos aplicativos do Microsoft Office,
criando rotinas de programação internas e dependentes aos aplicativos não sendo,
portanto, autônomas.
O VBA é útil quando se tem a necessidade de complementar os recursos interativos
disponíveis no aplicativo com os recursos da linguagem de programação, visando
obter o resultado esperado.

Recursos interativos x vba


Um usuário com conhecimentos avançados nos recursos interativos do aplicativo e
do gravador de macros, consegue resolver parte dos problemas que encontra. No
entanto, existem situações que exigem soluções que justificam recorrer à linguagem
de macro, como também situações em que a macro interativa não funciona adequa-
damente.
Só o gravador de macro não resolve:
• Apresentar um quadro de diálogo pedindo uma confirmação antes de executar
um comando.
• Apresentar um quadro de diálogo interno do Excel.
• Executar comandos sem a interferência do usuário.
• Manipular dados antes de apresentá-los na planilha.
• Encadear macros.
• Criar funções de usuário.
• Alterar uma macro sem a necessidade de gravá-la novamente.
• Utilizar formulários personalizados.

Senac São Paulo 21


excel 2013 com vbA

atividade 1 – Editor do visual basic e elementos do vba


Objetivo:
• Conhecer o ambiente de desenvolvimento oferecido pelo editor do visual basic.
Tarefas:
• Conhecer o editor do visual basic.
• reconhecer elementos da linguagem.
• Criar procedimentos.

Conhecendo o Editor do visual basic

1. Se você fechou a pasta Macros.xlsm, abra-a novamente.


2. Clique na guia desenvolvedor e, no grupo Código, clique no botão Visual Basic
para abrir o editor do visual basic.

também podemos acessar o editor pressionando as teclas alt + F11.

menu

barra de ferramentas

janela Project explorer

janela de Código

janela Propriedades

22 Senac São Paulo


Excel 2013 com VBA

3. Clique no sinal de expansão que antecede a pasta Módulos e uma lista dos mó-
dulos será apresentada.

Uma pasta de trabalho nova não possui a pasta Módulos. Ao criarmos a primeira ma-
cro, utilizando o gravador de macros, o Excel passa a apresentar a pasta Módulos com
a subpasta Módulo 1, onde é armazenado o código gerado. Quando gravamos mais
de uma macro em uma mesma seção de trabalho, seus códigos também são armaze-
nados na pasta Módulo 1. Se fecharmos a pasta de trabalho e a abrirmos novamente,
o Excel introduz outra pasta de módulo (Módulo 2) para armazenar as novas macros
criadas. A numeração das pastas de módulos é incrementada a cada nova seção de
trabalho. Os módulos podem ser organizados e renomeados pelo desenvolvedor.

Elementos da linguagem VBA

Para uma melhor compreensão sobre os elementos que compõem a sintaxe da lin-
guagem VBA, vamos fazer uma analogia com exemplos em nossa linguagem normal.
Se desejamos, por exemplo, solicitar a alguém que abra uma janela, provavelmente
daremos a seguinte ordem:
“Abrir a janela”
Existe um verbo – abrir – e um substantivo – janela.
O VBA é uma linguagem orientada a objetos, ou seja, os objetos (no caso de nossa
linguagem, os substantivos) são mais importantes na composição da ordem. Assim, a
ordem “Abra a janela” poderia ser traduzida como “Janela.Abrir”, no VBA.

Senac São Paulo 23


Excel 2013 com VBA

Os elementos observados na linguagem VBA são:


• Objeto: representa um elemento de um aplicativo, como uma planilha, uma cé-
lula, um gráfico ou um formulário.
• Propriedade: atributo de um objeto, que define suas características (como ta-
manho, cor ou localização na tela) ou um aspecto do seu comportamento (como
ativa ou visível).
• Método: ação aplicada ao objeto.
• Evento: ação reconhecida pelo objeto, como clicar com o mouse ou pressionar
uma tecla e para a qual você pode escrever um código para responder. Podem
ocorrer eventos em resposta a uma ação do usuário ou a um código do programa.

Sintaxe
Como em qualquer idioma, as linguagens de programação possuem regras que de-
vem ser seguidas à risca para que possam ser obedecidas.
No VBA indicamos o nome do objeto e separamos com um ponto sua propriedade
ou método.
• NomeDoObjeto.Propriedade = Valor da propriedade
Por exemplo:
Janela.cor = azul
Aqui houve a atribuição de um valor à propriedade do objeto. Essa atribuição é
indicada pelo sinal de igual.
• NomeDoObjeto.Método
Por exemplo:
Janela.abrir
Aqui houve uma ação aplicada ao objeto.

Sintaxe – Hierarquia
Alguns objetos podem estar contidos em outro objeto. Nesse caso é criada uma hie-
rarquia, que deve ser explicitada ao aplicarmos uma propriedade ou método ao ob-
jeto. Por exemplo:
• Casa.Cozinha.Janela.Cor = azul
Nesse caso estamos atribuindo a cor azul à janela da cozinha da casa.
• Casa.Sala.Porta.Abrir
Neste caso estamos abrindo a porta da sala da casa.

24 Senac São Paulo


Excel 2013 com VBA

Hierarquia dos Objetos do Excel

Application (aplicação) à Workbook (pasta de trabalho) à Worksheet (planilha) à


Range (intervalo)

Objeto Range
Este objeto pode representar uma célula ou um intervalo.

Referências às células

Referência Significado
Range(“C4”) Célula C4
Range(“A1:B5”) Intervalo de A1 até B5
Range(“C5:D9,G9:H16”) Seleção de dois intervalos
Range(“A:A”) Coluna A
Range(“2:2”) Linha 2
Range(“A:C”) Colunas de A até C
Range(“2:5”) Linhas 2 até 5
Range(“2:2,5:5,8:8”) Linhas 2, 5 e 8
Range(“A:A,C:C,F:F”) Colunas A, C e F
[C4] Célula C4
[A1:C4] Intervalo de A1 até C4
[A1:C5,H6:I8] Intervalos A1 até C5 e H6 até I8
Range(“A2”).Range(“C2”) Célula C3
Cells(4,3) Célula C4
Range(Cells(1,1),Cells(5,5)) Intervalo de A1 até E5
Range(“nome”) Intervalo nomeado como “nome”
[nome] Intervalo nomeado como “nome”
Range(“A1”,ActiveCell) Intervalo de A1 até a célula ativa
ActiveCell Célula ativa

Procedimentos e Funções

Um procedimento é uma sequência nomeada de instruções executadas como uma


unidade, como a função Preencher que vimos na última atividade. Todo código exe-
cutável deve estar contido em um procedimento.
Uma função é um tipo especial de procedimento que retorna um valor.
Os procedimentos iniciam com a instrução SUB NomeDoProcedimento e terminam
com END SUB.

Senac São Paulo 25


Excel 2013 com VBA

As funções iniciam com a instrução FUNCTION NomeDaFunção e terminam com


END FUNCTION.

Uma propriedade pode ser definida na janela Propriedades ou em uma instrução no


procedimento. Nesse caso a propriedade é atribuída quando o procedimento é exe-
cutado e por isso dizemos que a propriedade é “atribuída em tempo de execução”.

26 Senac São Paulo


Excel 2013 com VBA

Cores do Visual Basic

• Vermelho: mostra a digitação de uma linha incompleta de instrução. Nesse caso,


devemos analisar as instruções contidas na linha e efetuar as correções necessá-
rias.
• Verde: mostra as linhas que são digitadas como comentários. Essas linhas têm
como objetivo a documentação e explicação dos procedimentos. A linha de co-
mentário sempre deve iniciar com um apóstrofe (‘). Esse sinal indica que a linha
não será executada.
• Amarelo: realça a linha onde foi encontrado um erro. Nesse caso a execução do
procedimento é interrompida na linha realçada.

Criando um procedimento

Vamos criar um procedimento que escreva SENAC SP na célula E10, na fonte Times
New Roman, tamanho 14, cor Vermelha e Negrito.
1. Feche todas as pastas de trabalho.
2. Abra uma nova pasta e, na guia Desenvolvedor, clique em Visual Basic do grupo
Código. Você também pode pressionar as teclas Alt + F11 para entrar no editor
do VB.
3. No menu Inserir selecione Módulo.

4. Na Janela de Código digite:


Sub Formata
5. Tecle Enter. Formata será o nome do procedimento.

Senac São Paulo 27


Excel 2013 com VBA

6. Vamos iniciar a digitação do código do procedimento. A primeira instrução será


para selecionar a célula E10. Para isso você utilizará o objeto Range e o método
Select. Pressione a tecla Tab e digite:
Range(“E10”).
Assim que o ponto é digitado, aparece um menu com uma lista de sugestões de pre-
enchimento.

7. Digite a letra S para exibir sugestões que iniciam com essa letra.

8. Dê um duplo clique na opção Select e pressione a tecla Enter para mudar de


linha. A instrução digitada torna ativa a célula E10.

Você pode simplesmente digitar Select se não quiser utilizar a sugestão de preen-
chimento.

Você deve digitar o código exatamente como indicado. Caso o VBA localize um erro
nas instruções, ao pressionarmos Enter a linha aparecerá com os caracteres em verme-
lho alertando para o erro. Pode ocorrer de utilizarmos um nome em desacordo com
o objeto, como por exemplo, referência a um intervalo nomeado que não existe ou
atribuir à propriedade Cor da Fonte um nome de fonte inexistente. Essas ocorrências

28 Senac São Paulo


Excel 2013 com VBA

são detectadas pelo Visual Basic no momento da execução, quando será apresentada
uma mensagem de alerta. Se clicarmos em Depurar, a linha que contém o erro será
realçada em amarelo.
Quando a instrução a ser escrita for muito longa, poderá ser dividida em duas linhas.
No ponto em que quiser mudar de linha, digite um espaço, um sublinhado e então
pressione Enter. Continue a instrução na próxima linha.
9. Na nova linha digite:
ActiveCell.FormulaR1C1 = “SENAC SP”
ActiveCell representa a célula ativa e FormulaR1C1 habilita a célula ativa a receber o
texto entre aspas.

10. Digite as linhas abaixo:


Selection.Font.Name = “Times New Roman”
Selection.Font.FontStyle = “Negrito”
Selection.Font.Size = 14
Selection.Font.ColorIndex = 3

Font é uma das partes que compõem a célula, referindo-se à fonte aplicada. Ou-
tras partes são Borders, referente às bordas, e Interior, referente ao preenchimen-
to da célula.

11. Digite a instrução a seguir que ativa a célula A1:


Range(“A1”).Select
A macro está concluída.

Senac São Paulo 29


Excel 2013 com VBA

Executando a macro no Editor

1. Mantenha o cursor entre as instruções Sub Formata() e End Sub. Para executar a
macro pressione a tecla F5.
Outra forma de executar a macro é por meio da opção Executar Sub/User Form
do menu Executar ou clicando no botão Executar Sub/User Form indicado na
figura abaixo:

2. Volte à planilha teclando Alt + F11 e veja o resultado.


3. Salve a pasta de trabalho com o nome Formatação.xlsm.
4. Feche a janela do VBA.

Para abreviar a digitação, o VBA oferece a instrução With... End With, que permite
agrupar várias propriedades e métodos aplicados ao mesmo objeto. Compare os
exemplos abaixo que se equivalem.

Outros objetos serão apresentados ao longo dos capítulos.

30 Senac São Paulo


excel 2013 com vbA

CAPÍTULO 3
APRESENTAÇÃO DO
PROJETO CONCEITOS

ObJETIvO:
• Apresentar o projeto a ser desenvolvido durante o curso

Senac São Paulo 31


Excel 2013 com VBA

O projeto Conceitos será desenvolvido no decorrer do curso para a introdução e


aplicação dos recursos do VBA.

Descrição do aplicativo a ser criado

Uma biblioteca mantém em seu cadastro dados sobre livros, sócios e valores cobra-
dos, além de manter controle do acervo onde são registradas as informações dos em-
préstimos efetuados. A nossa tarefa será automatizar e agilizar o controle do acervo e
dos cadastros de livros e sócios.
• Controle do acervo: ao digitar o código de um dos livros do acervo no campo
apropriado, os campos Nome do livro, Autor, Tipo e Preço serão preenchidos
automaticamente. Ao digitar o Código do Sócio no campo apropriado, o campo
Nome do Sócio é preenchido automaticamente.

• Cadastro de Livros e Sócios: serão criados os botões Cadastra Livro e Cadastra


Sócio para acessar formulários para alimentação das listas de livros e sócios.

32 Senac São Paulo


Excel 2013 com VBA

Fases de construção

• Fase 1: será criada uma área para digitação de dados relativos ao cadastro de li-
vros e sócios. Serão criados procedimentos para transporte desses dados para a
planilha Biblioteca – dados.
• Fase 2: serão introduzidos aprimoramentos por meio de quadros de diálogo para
confirmação e digitação de dados.
• Fase 3: serão introduzidos botões para executar as macros.
• Fase 4: serão criadas funções para preenchimento automático das colunas da
planilha Biblioteca Circulante quando o código do livro e o código do sócio forem
introduzidos.
• Fase 5: as caixas de digitação de dados serão substituídas por formulários perso-
nalizados.
Um outro projeto, que chamaremos de Projeto Funcionários, será desenvolvido por
você e constituído das mesmas fases.

Senac São Paulo 33


excel 2013 com vbA

CAPÍTULO 4
OBJETO WORKSHEET,
PROPRIEDADES SELECT E
OFFSET

ObJETIvOS:
• Apresentar o objeto Worksheet e as propriedades select e offset
• Iniciar a fase 1 do projeto Conceitos

34 Senac São Paulo


Excel 2013 com VBA

Objeto Worksheet
O objeto Worksheet é aquele que representa a planilha de trabalho.
O objeto Chart é aquele que representa a planilha de gráfico.
O objeto Sheet pode representar tanto uma planilha de trabalho quanto uma planilha
de gráfico.
O conjunto de planilhas de uma pasta de trabalho forma uma coleção. O conjunto de
planilhas forma a coleção Sheets, o conjunto de planilhas de trabalho forma a coleção
Worksheets e o conjunto de planilhas de gráficos forma a coleção Charts.
As coleções também possuem suas próprias propriedades.

Propriedades das coleções

Propriedade Significado
Sheets(2) Representa a segunda planilha da pasta de trabalho
ativa.
Sheets(“Biblioteca – dados”) Representa a planilha Biblioteca – dados.
Sheets.Count Retorna o número de planilhas na pasta de trabalho.
Worksheets.Count Retorna o número de planilhas de trabalho na pasta.
Sheets(Sheets.Count) Representa a última planilha da pasta de trabalho.
Charts.Count Retorna o número de planilhas de gráfico na pasta.
Sheets(“Plan3”).Range(“B5”) Representa a célula B5 da planilha Plan 3.
Sheets(3).Name = “Custos” Renomeia a terceira planilha da pasta ativa para
Custos.
ActiveSheet Representa a planilha ativa.

Assim:
Sheets.Count = Worksheets.Count + Charts.Count
Ou seja, o número total de planilhas da pasta de trabalho é igual ao número de plani-
lhas de trabalho na pasta mais o número de planilhas de gráfico na pasta.

Propriedade Offset e Select

Esta propriedade é utilizada para representar deslocamentos. Sua sintaxe é:


Objeto.Offset(RowOffset, ColumnOffset)
Valores positivos de RowOffset indicam deslocamentos de linha para baixo. Valores
negativos de RowOffset indicam deslocamentos de linha para cima.
Valores positivos de ColumnOffset indicam deslocamentos de coluna para a direita.
Valores negativos de ColumnOffset indicam deslocamentos de coluna para a esquerda.

Senac São Paulo 35


excel 2013 com vbA

Range(“A1”).Offset(RowOffset:=2, ColumnOffset:=3) Indica a célula D3.


Range(“A1”).Offset(2,3) Indica a célula D3.
Range(“A1”).Offset(ColumnOffset:=3).Select Seleciona a célula D1.
Range(“A1:C3”).Offset(2,3).Select Desloca o intervalo.

atividade 1 – Preparando a área de entrada


Objetivo:
• Preparar a planilha plan 3 para digitação dos dados.
Tarefas:
• digitar e formatar a planilha de entrada.
• renomear a planilha e nomear os intervalos.

1. Abra a pasta Conceitos.xlsx.


2. renomeie a planilha plan 3 para Entrada.
3. digite os dados como mostrado na figura abaixo e formate-os.

4. Crie os intervalos nomeados:

Intervalo Nome do intervalo


Célula B3 Título
Célula B4 Autor
Célula B5 Tipo
Célula B9 Sócio

36 Senac São Paulo


excel 2013 com vbA

atividade 2 – Criando os procedimentos para transporte dos


dados
Objetivo:
• familiarizar-se com as instruções do visual basic.
Tarefas:
• digitar o código do procedimento que transporta o livro.
• testar o funcionamento do procedimento.
• digitar o código do procedimento que transporta o sócio.
• testar o funcionamento do procedimento.

Digitando o código – Livros

1. Ative o editor do visual basic.


2. no menu Inserir clique em Módulo. vamos criar o procedimento que transporta
os dados da área de Entrada para a lista de livros.
3. na janela de códigos digite:
sub Tr_Livro
4. Pressione a tecla Enter e digite:
‘ Transporta os dados para o cadastro de livros
sheets(“Biblioteca - dados”).select
range(“a2”).select
selection.End(xldown).select
activeCell.offset(1, 0).select
selection.Entirerow.Insert
activeCell.offset(-1, 0).select
selection.autoFill destination:=range(activeCell, activeCell.offset(1, 0)), _
Type:=xlFillseries
activeCell.offset(1, 0).select
activeCell.offset(0, 1) = range(“Titulo”)
activeCell.offset(0, 2) = range(“autor”)
activeCell.offset(0, 3) = range(“Tipo”)

Senac São Paulo 37


Excel 2013 com VBA

‘Copia o formato
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range(“A1:D1”).Select
Selection.Copy
Selection.End(xlDown).Select
Range(ActiveCell, ActiveCell.Offset(0, 3)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.End(xlDown).Select
Sheets(“Entrada”).Select

Digitando o código – Sócios

1. Vamos criar o procedimento que transportará os dados da área de Entrada para


a lista de sócios. Após a instrução End Sub digite:
Sub Tr_Socio
2. Pressione a tecla Enter e digite as seguintes linhas de código:
Sheets(“Biblioteca - dados”).Select
Sheets(“Biblioteca - dados”).Cells(Rows.Count, 1).Select
Selection.End(xlUp).Select
Selection.AutoFill Destination:=Range(ActiveCell, ActiveCell.Offset(1, 0)), _
Type:=xlFillSeries
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, 1) = Range(“Socio”)
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range(“A1:B1”).Select
Selection.Copy
Selection.End(xlDown).Select
Range(ActiveCell, ActiveCell.Offset(0, 1)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

38 Senac São Paulo


Excel 2013 com VBA

3. Digite alguns dados na área de Entrada.


4. Execute os procedimentos criados.

Caso ocorra erro na execução, clique no botão Depurar e a linha com erro será
realçada em amarelo. Verifique se a digitação das instruções está correta, se os
nomes atribuídos aos objetos correspondem aos nomes digitados na linha de có-
digo ou se as linhas longas foram separadas corretamente utilizando um espaço
e um sublinhado.

5. Salve o arquivo como tipo Pasta de trabalho Habilitada para Macros e feche-o.

Exercício proposto

Projeto Funcionários – Fase 1

Inicie o projeto Funcionários para praticar os conhecimentos abordados até aqui. A


pasta utilizada nesse projeto contém as planilhas Folha de Pagamentos, Tabelas e En-
trada. O objetivo é que, na conclusão do projeto, a planilha Folha de Pagamento seja
alimentada com os dados do funcionário e que as demais informações sejam preen-
chidas automaticamente com base nas tabelas.
Na Fase 1 você deve criar um procedimento que transporte os dados introduzidos na
planilha Entrada para a planilha Folha de Pagamentos.
1. Abra a pasta Projeto Funcionários.xlsx.
2. Entre no Editor do VB.
3. Insira um módulo.
4. Crie um procedimento que transporte os dados da planilha Entrada para a plani-
lha Folha de Pagamentos.
5. Digite os dados abaixo na planilha Entrada.

Nome Cargo No de filhos VT


Reinaldo Diretor 3 Não

6. Execute o procedimento.
7. Digite os dados abaixo e execute novamente o procedimento.

Nome Cargo No de filhos VT


Ana Paula Sub-Gerente 3 Não

8. Salve a pasta alterando o tipo para Pasta de Trabalho Habilitada para Macros.

Senac São Paulo 39


excel 2013 com vbA

CAPÍTULO 5
INPUTBOX, MSGBOX,
IF... THEN...ELSE

ObJETIvOS:
• utilizar as caixas de entrada e de mensagens
• utilizar a estrutura condicional IF... THEn... ELsE
• Iniciar a fase 2 do projeto Conceitos

40 Senac São Paulo


Excel 2013 com VBA

Criando caixa de diálogo para digitação de dados

InputBox

InputBox exibe uma caixa de diálogo simples para que você possa inserir informa-
ções que serão utilizadas em uma macro. A caixa de diálogo apresenta um botão OK
e um botão Cancelar. Quando você escolhe o botão OK, o InputBox atribui o valor
inserido na caixa de diálogo a uma variável ou a uma célula indicada. Se clicar no bo-
tão Cancelar, o InputBox atribuirá False ou vazio.

Método InputBox

Sintaxe:
expressão.InputBox(Prompt, [Title], [Default], [Left], [Top], [HelpFile], [HelpContex-
tID], [Type]
onde:
expressão: variável que representa um objeto Application.
Os parâmetros entre colchetes são opcionais.

Nome Descrição
Prompt Mensagem a ser exibida na caixa de diálogo.
Título Título da caixa de entrada. Se for omitido, o título padrão será
“Entrada”.
Default Especifica um valor que aparecerá na caixa de texto quando
a caixa de entrada for inicialmente exibida. Se esse argumen-
to for omitido, a caixa de texto será deixada vazia. Esse valor
pode ser um objeto Range.
Left Especifica uma posição X (em pontos) para a caixa de diálo-
go em relação ao canto superior esquerdo da tela. Um ponto
corresponde a uma unidade de medida que se refere à altura
de um caractere impresso. Um ponto equivale a 1/72 de uma
polegada ou, aproximadamente, 1/28 de um centímetro.
(cont.)

Senac São Paulo 41


Excel 2013 com VBA

Top Especifica uma posição Y (em pontos) para a caixa de diálogo


em relação ao canto superior esquerdo da tela.
HelpFile Nome do arquivo de ajuda para a caixa de entrada. Se os argu-
mentos HelpFile e Context estiverem presentes, um botão Ajuda
aparecerá na caixa de diálogo.
HelpContextID Número de identificação do contexto do tópico de Ajuda em
HelpFile.
Type Especifica o tipo de dados retornado. Se este argumento for
omitido, a caixa de diálogo retornará texto.

A tabela a seguir mostra os valores que podem ser informados no argumento Type,
podendo ser um deles ou a soma de vários. Por exemplo, para uma caixa de entrada
que possa aceitar tanto texto como números, definimos Type como 1 + 2.

Valor Significado
0 Uma fórmula.
1 Um número.
2 Um texto (sequência de caracteres).
4 Um valor lógico (True ou False).
8 Uma referência a células, como um objeto Range.
16 Um valor de erro, como #N/D.
64 Uma matriz de valores.

Função InputBox

Sintaxe:
InputBox(Prompt, Title], [Default], [XPos], [YPos], [HelpFile Context]
onde:
Xpos corresponde a Left e YPos corresponde a Top.
A diferença entre o método e a função InputBox é que o método permite a entrada
seletiva de valores e a função não.

42 Senac São Paulo


excel 2013 com vbA

atividade 1 – Criando procedimentos para entrada de dados


usando InputBox
Objetivo:
• utilizar InputBox para entrada de dados.
Tarefas:
• Criar o procedimento Cadastra_Livro utilizando InputBox para a entrada de dados.
• Criar o procedimento Cadastra_socio utilizando InputBox para a entrada de dados.

Criando o procedimento Cadastra_Livro

1. digite o código a seguir em um módulo da pasta Conceitos:

sub Cadastra_Livro()
sheets(“Biblioteca - dados”).select ‘ seleciona a planilha Biblioteca - dados
range(“a2”).select ‘ seleciona a célula a2
selection.End(xldown).select ‘ procura a última linha preenchida
activeCell.offset(1, 0).select ‘ seleciona a linha seguinte
selection.Entirerow.Insert ‘ insere uma linha
activeCell.offset(-1, 0).select ‘ retorna e seleciona a linha de cima
selection.autoFill destination:=range(activeCell, activeCell.offset(1, 0)), _
Type:=xlFillseries ‘ preenche com o próximo código
activeCell.offset(1, 0).select ‘ desce uma linha

‘ atribui os valores digitados nas caixas de entrada às células vizinhas


activeCell.offset(0, 1) = InputBox(“digite o Título do livro”, “Título”)
activeCell.offset(0, 2) = InputBox(“digite o autor do livro”, “autor”)
activeCell.offset(0, 3) = InputBox(“digite o Tipo do livro”, “Tipo”)

‘Copia o formato
selection.End(xlUp).select ‘ seleciona a primeira linha
activeCell.offset(1, 0).range(“a1:d1”).select ‘ seleciona as 4 colunas desta linha
selection.Copy ‘ copia
selection.End(xldown).select ‘ selciona a última linha

Senac São Paulo 43


Excel 2013 com VBA

Range(ActiveCell, ActiveCell.Offset(0, 3)).Select ‘ seleciona as 4 colunas


Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False ‘ cola o formato
Application.CutCopyMode = False ‘ retira o pontilhado
Selection.End(xlDown).Select
Sheets(“Entrada”).Select ‘ seleciona a planilha Entrada
End Sub

2. Execute o procedimento.

Criando o procedimento Cadastra_Socio

1. Para reduzir o trabalho de digitação, você copiará as linhas de código de um


arquivo texto. Abra o arquivo Cadastra_Socio.txt que se encontra na pasta
ATIVIDADES.
2. Selecione todas as linhas e copie para a área de transferência.
3. Volte ao Editor do VB.
4. Coloque o cursor após End Sub do procedimento criado anteriormente.
5. Cole as linhas copiadas.
Sub Cadastra_Socio()
Sheets(“Biblioteca - dados”).Select
Sheets(“Biblioteca - dados”).Cells(Rows.Count, 1).Select
Selection.End(xlUp).Select
Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy
ActiveCell.Offset(1, 0).Range(“A1:B1”).PasteSpecial
Paste:=xlPasteFormats, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveCell = ActiveCell.Offset(-1, 0) + 1
ActiveCell.Offset(0, 1) = InputBox(“Digite o nome do sócio”, “Sócio”)
Application.CutCopyMode = False
End Sub
6. Execute o procedimento.
7. Salve a pasta de trabalho.

44 Senac São Paulo


excel 2013 com vbA

atividade 2 – Utilizando MsgBox e If... Then... Else


Objetivo:
• utilizar a função MsgBox e o comando If... Then... Else.
Tarefas:
• Criar um procedimento para cálculo de comissão de vendedores.

Utilizando caixa de mensagem MsgBox

A função MsgBox permite interagir com o usuário por meio de uma caixa de diálogo.

Sintaxe:
MsgBox(prompt [, Buttons] [, Title] [, HelpFile Context]
As definições do argumento Buttons são as seguintes:

CONSTaNTE vaLOR DESCRIÇÃO


Grupo de Botões
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.
Grupo Ícones
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.
(cont.)

Senac São Paulo 45


Excel 2013 com VBA

Grupo Botão Padrã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.
Grupo Comportamento da Janela
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 aplicati-
vos são suspensos até que o usuário respon-
da à caixa de mensagem.
Outros
vbMsgBoxHelpButton 16384 Adiciona o botão “Ajuda” à caixa de mensa-
gens.
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 siste-
mas hebraico e árabe.

Quando um botão for pressionado, um dos valores abaixo é retornado.

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

Variações do argumento Buttons


Podemos definir os botões, o ícone, o botão padrão e o comportamento da caixa de
diálogo combinando um número ou uma constante de cada grupo, ou ainda soman-
do ao valores das opções. Exemplos equivalentes:

46 Senac São Paulo


Excel 2013 com VBA

• MsgBox(“Mensagem”, VbYesNo+VbCritical+VbDefaultButton2+BvApplicationMo
dal, “Título”)
• MsgBox(“Mensagem”, 4+16+256+0, “Título”)
• MsgBox(“Mensagem”, 276, “Título”)
Prompt é o único parâmetro obrigatório. Portanto, se escrevermos:
• MsgBox(“Mensagem”)
O VBA apresenta uma caixa de diálogo com o botão OK, sem ícone e seu comporta-
mento é VbApplicationModal.
O valor retornado pelo pressionamento de um botão deve ser armazenado em uma
variável. Podemos, assim, analisar o conteúdo da variável e criar código que responda
a esse pressionamento. Você estudará as variáveis mais adiante.

Utilizando desvios condicionais – If... Then... Else

Estas instruções permitem desviar o fluxo de um procedimento de acordo com uma


determinada condição, estabelecendo um desvio condicional do tipo Se... Então...
Senão.
Sua estrutura é a seguinte:
If condição Then
Instruções que serão executadas para a condição verdadeira:
Else
Instruções que serão executadas para a condição falsa:
End If
Neste momento vamos criar uma macro que calcule a comissão de vendedores con-
siderando o seguinte critério:
• Se o valor da venda for maior do que R$ 10.000,00, então o vendedor terá 10% de
comissão.
• Se o valor da venda for menor ou igual a R$ 10.000,00, então o vendedor terá 7%
de comissão.
1. Feche todas as pastas abertas.
2. Abra uma nova pasta de trabalho.
3. Entre no Editor do VB.
4. Insira um módulo.

Senac São Paulo 47


excel 2013 com vbA

5. digite o código abaixo:


sub calculo()
If range(“B2”) > 10000 Then
range(“C2”) = range(“B2”) * 0.1
Else
range(“C2”) = range(“B2”) * 0.07
End If
MsgBox “a Comissão é: “ & range(“C2”).Value
End sub

6. volte à planilha e digite um valor na célula B2.


7. na guia desenvolvedor, grupo Código, clique em Macros.
8. Selecione Calculo na lista de macros e clique em Executar.
9. verifique o resultado apresentado na caixa de mensagem e na célula C2.
10. Salve a planilha como Caixas de dialogo.xlsm

atividade 3 – Introduzindo caixas de diálogo nas macros criadas


na atividade 1
Objetivo:
• utilizar caixas de mensagens nos procedimentos.
Tarefas:
• Criar uma caixa de diálogo pedindo confirmação da execução do procedimento.
• utilizar If... Then... Else para capturar a resposta do usuário.

vamos criar uma caixa de diálogo solicitando a confirmação do usuário antes de


transportar os dados da planilha.
1. Abra a pasta Conceitos.xlsm para dar sequência ao projeto Conceitos.
2. entre no editor do vb.
3. localize o módulo e a macro Cadastra_Livro.
4. logo após a instrução sub Cadastra_Livro(), digite a instrução a seguir. não se es-
queça do espaço e sublinhado caso seja necessária a mudança de linha no meio
da digitação da instrução.

48 Senac São Paulo


excel 2013 com vbA

If MsgBox(“deseja transportar os dados para a Biblioteca - dados?”, vbYesno, _


“Confirma”) = vbYes Then
5. Antes de End sub digite End If.
6. execute a macro e veja seu funcionamento.

Uso do ElseIf...

observe a tabela abaixo. os códigos são equivalentes, mas o da direita utiliza um


número menor de linhas.

Uso do If... e do End If Uso do ElseIf


If Capital = “São Paulo” Then If Capital = “São Paulo” Then
Estado = “São Paulo” Estado = “São Paulo”
End If ElseIf Capital = “Florianópolis” Then
If Capital = “Florianópolis” Then Estado = “Santa Catarina”
Estado = “Santa Catarina” Else
End If Estado = “Rio de Janeiro”
If Capital = “Rio de Janeiro” Then End If
Estado = “Rio de Janeiro”
End If

atividade 4 – Utilizando Select Case


Objetivo:
• utilizar a estrutura select Case em substituição à estrutura ElseIf.
Tarefas:
• Criar um procedimento utilizando a estrutura select Case.

1. Abra a pasta Caixas de diálogo.xls.


2. em algum módulo digite o procedimento abaixo:
sub selcase()
Capital = InputBox(“digite a capital”)
select Case Capital
Case “são paulo”
Estado = “são paulo”

Senac São Paulo 49


Excel 2013 com VBA

Case “Florianópolis”
Estado = “Santa Catarina”
Case Else
Estado = “Outra Capital”
End Select
MsgBox Estado
End Sub

3. Execute a macro.

Você pode utilizar múltiplas expressões ou intervalos em cada cláusula Case. Por
exemplo, as linhas a seguir são válidas:
Case 1 To 4, 7 To 9, 11, 13, Is MaxNumber
Case “tudo”, “nozes” To “sopa”, TestItem
Utilize To para definir intervalo de valores.

Exercício Proposto

Projeto Funcionários – Fase 2

No projeto Funcionários você substituirá o procedimento de transporte de dados por


outro que utilize InputBox para entrada de dados.
1. Abra a pasta Funcionários.xlsm.
2. Substitua o procedimento criado na Fase 1 por outro que utilize caixas de entra-
da para digitação de dados.
3. Introduza os funcionários listados abaixo:

Nome Cargo No de filhos VT


Rosana Auxiliar 2 Sim
Tiago Auxiliar 0 Sim

4. No final do procedimento mostre uma caixa de diálogo que avise que os dados
foram cadastrados com sucesso.
5. Salve o arquivo.

50 Senac São Paulo


excel 2013 com vbA

CAPÍTULO 6
BOTÕES DE
COMANDO

ObJETIvOS:
• utilizar os botões de comando para a execução de macros
• Iniciar a fase 3 do Projeto Conceitos

Senac São Paulo 51


excel 2013 com vbA

atividade 1 – Inserindo botões de comando na planilha


biblioteca – dados
Objetivo:
• dotar a planilha de recursos para executar macros.
Tarefas:
• Criar um botão de comando para executar o procedimento Cadastra_Livro.
• Criar um botão de comando para executar o procedimento Cadastra_socio.

1. Criando um botão de comando para executar a macro.


2. Abra a pasta Conceitos.xlsm.
3. Selecione a planilha Biblioteca – dados.
4. na guia desenvolvedor, grupo Controles, clique no botão Inserir.

5. desenhe o botão na planilha.


6. no quadro de diálogo atribuir macro escolha a macro Cadastra_Livro e clique
em oK.
7. formate o botão.
8. Clique fora do botão para desfazer a seleção.
9. repita os passos 3 a 7 para criar um botão que execute a macro Cadastra_socio.

52 Senac São Paulo


Excel 2013 com VBA

Exercício Proposto

Projeto Funcionários – Fase 3

No Projeto Funcionários você criará um botão que executará a macro criada para o
transporte de dados.
1. Abra a pasta Projeto Funcionários.xlsm.
2. Insira um botão para executar a macro.

Senac São Paulo 53


excel 2013 com vbA

CAPÍTULO 7
EVENTOS E VARIÁVEIS

ObJETIvOS:
• utilizar eventos, variáveis e constantes
• Iniciar a fase 4 do Projeto Conceitos

54 Senac São Paulo


excel 2013 com vbA

atividade 1 – Utilizando Eventos


Objetivo:
• utilizar eventos no vbA.
Tarefas:
• Criar um evento de pasta de trabalho.
• Criar um evento de planilha.

um evento é uma ação reconhecida por um objeto, como clicar o mouse ou pressio-
nar uma tecla e para a qual você pode escrever um código para responder. Podem
ocorrer eventos em resposta a uma ação do usuário ou a um código do programa,
podendo, também, ser acionados pelo sistema.
os eventos de pasta de trabalho ficam armazenados no módulo Estapasta_de_traba-
lho. os eventos de planilha de trabalho ou planilha de gráfico ficam armazenados no
módulo da planilha correspondente.
quando um mesmo módulo serve a planilhas diferentes, você pode criar procedi-
mentos dentro dos módulos padrões e fazer com que os eventos chamem o proce-
dimento.

Eventos da pasta de trabalho

Para visualizar a lista de todos os eventos da pasta de trabalho siga os passos abaixo:
1. Abra uma pasta de trabalho vazia.
2. Selecione o módulo Estapasta_de_trabalho com um duplo clique.
3. na caixa de combinação objeto selecione Workbook.

Senac São Paulo 55


Excel 2013 com VBA

4. Clique na caixa de combinação Procedimentos à direita da interface e alista de


eventos será aberta.

5. Abra a pasta Conceitos.xlsm.


6. Vamos colocar uma mensagem que irá ser exibida ao ativar a pasta Conceitos.
xlsm.
7. Entre no editor do VB.
8. Selecione o módulo EstaPasta_de_trabalho com duplo clique.
9. Na caixa de combinação Objeto selecione Workbook.
10. Na caixa de combinação Procedimento escolha o evento Activate.
11. Surgem as seguintes instruções:

Private Sub Workbook_Activate()


End Sub
12. Coloque o cursor na linha vazia entre as duas instruções e digite:

MsgBox “O autor desta pasta é Artemio Ernesto Gonzaga”

13. Torne ativa a pasta de trabalho em branco que está aberta.


14. Retorne à pasta Conceitos.xlsm.
15. Observe que a caixa de mensagem é exibida. Clique em OK para fechá-la.

Consulte os principais eventos no ANEXO A – EVENTOS que se encontra no final


da apostila.

Eventos de planilha

Vamos criar um evento de planilha que mostre uma mensagem quando o botão di-
reito do mouse é pressionado. Normalmente quando você clica com o botão direito
do mouse em uma célula é apresentado um menu de contexto. A nossa tarefa será
alterar esse comportamento, mostrando uma mensagem personalizada.

56 Senac São Paulo


Excel 2013 com VBA

1. Abra a pasta Conceitos.xlsm, se ela não estiver aberta.


2. Entre no Editor do VB e selecione um objeto de planilha com duplo clique
(Biblioteca Circulante, Biblioteca – dados ou Entrada).
3. Na caixa de combinação Objeto escolha Worksheet.

Quando escolhemos o objeto Worksheet surge a instrução Private Sub Worksheet_


SelectionChange(ByVal Target As Range) seguida da instrução End Sub. Isso acon-
tece porque o evento SelectionChange é o evento padrão para o objeto. Todo ob-
jeto tem um evento padrão e o VBA presume que o desenvolvedor desejará usá-lo
na maioria das vezes. Desconsidere e continue a seguir as instruções.

4. Na caixa de combinação Procedimento escolha o evento BeforeRightClick.


5. Na janela de código aparecem as seguintes linhas:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boo-


lean)
End Sub

6. Na linha vazia entre as duas instruções digite:

Cancel = True
MsgBox “Você pressionou o botão direito”

O argumento Target informa ao procedimento em qual célula ou intervalo estava


apontando o mouse no momento em que o botão direito foi pressionado.
Cancel definido como True inibe a ação padrão que, neste caso, é a exibição do
menu de contexto.

Senac São Paulo 57


excel 2013 com vbA

ByVal Opcional. Indica que o argumento é passado por valor. É uma


forma de passar o valor de um argumento a um procedimento em
vez de passar o endereço. Permite que o procedimento acesse uma
cópia da variável. Como resultado, o valor da variável não pode ser
alterado pelo procedimento ao qual é passado.
ByRef Opcional. Indica que o argumento é passado por referência.
Byref é o padrão no VB, sendo uma forma de passar o endereço de
um argumento a um procedimento em vez de passar um valor. Isso
permite que o procedimento acesse a variável real. Como resulta-
do, o valor real da variável pode ser alterado pelo procedimento
ao qual é passado. A menos que seja especificado o contrário, os
argumentos são passados por referência.

7. volte à planilha selecionada no passo 2.


8. Clique com o botão direito do mouse e será apresentada a caixa de mensagem
abaixo:

Para eventos de planilha de gráfico consulte o anEXo a – EVEnTos.

atividade 2 – Constantes e variáveis


Objetivo:
• utilizar constantes e variáveis.
Tarefas:
• Conceituar constantes e variáveis.
• Conceituar escopo.
• definir escopo em nível de procedimento.
• definir escopo em nível de módulo privado.
• definir escopo em nível de módulo público.

em alguns casos necessitamos armazenar uma informação para uso futuro dentro do
procedimento no vbA.

58 Senac São Paulo


Excel 2013 com VBA

Se o valor armazenado não tiver que ser modificado durante o processamento, uti-
lizaremos as constantes. Os valores que são manipulados e alterados durante o pro-
cessamento são armazenados em variáveis.
Variáveis definidas nas linhas de código normalmente são do tipo Variant, ou seja,
aceitam qualquer tipo de dado, seja texto, número, data, valor lógico, etc.
As variáveis podem ter seu tipo declarado antes de seu uso na linha de código. A ra-
zão é impedir a atribuição de tipos de dados indevidos àquela variável. Outra razão é
que as variáveis utilizam espaços de armazenamento diferentes.
Exemplos de declaração de constantes e variáveis:
ConstNumeroPI As Single = 3,141592654
Public Const Seculo As Integer = 21
Dim StrNome As String
Public StrEstado As String
Se a instrução de declaração aparecer dentro de um procedimento, a variável poderá
ser utilizada somente nesse procedimento. Se a instrução de declaração aparecer na
seção Declarações do módulo, a variável estará disponível para todos os procedimen-
tos dentro do módulo, mas não para procedimentos em outros módulos do projeto.
Para tornar essa variável disponível para todos os procedimentos no projeto, preceda
a declaração com a instrução Public, como no exemplo a seguir:
Public StrNome As String

Tamanho de
Tipo de dados Intervalo
armazenamento
Byte 1 byte De 0 a 255.
Boolean 2 bytes True ou False.
Integer 2 bytes De -32.768 a 32.767.
Long
(número inteiro 4 bytes De -2.147.483.648 a 2.147.483.647.
longo)
De -3,402823E38 a -1,401298E-45 para
Single
valores negativos.
(vírgula flutuante de 4 bytes
De 1,401298E-45 a 3,402823E38 para
precisão simples)
valores positivos.
(cont.)

Senac São Paulo 59


Excel 2013 com VBA

De -1,79769313486231E38 a
-4,94065645841247E-324 para valores
Double
negativos.
(vírgula flutuante de 8 bytes
De 4,94065645841247E-324 a
precisão dupla)
1,79769313486231E38 para valores
positivos.
Currency
De -922.337.203.685.477,5808 a
(número inteiro em 8 bytes
922.337.203.685.477,5807.
escala)

+/-
79.228.162.514.264.337.593.543.950.335
sem vírgula decimal.
+/-7,9228162514264337593543950335
Decimal 14 bytes com
28 casas decimais à direita
o menor número diferente de zero é
+/-0,0000000000000000000000000001.

Date 8 bytes De 01/01/0100 a 31/12/9999.


Objeto 4 bytes Qualquer referência Object.
String 10 bytes +
De 0 a aproximadamente 2 bilhões de
(comprimento comprimento da
caracteres.
variável) sequência

String Comprimento da
De 1 a aproximadamente 64.400.
(comprimento fixo) sequência

Variant Qualquer valor numérico até o intervalo


16 bytes
(com números) de um Double.

Variant 22 bytes +
O mesmo intervalo de String de compri-
comprimento da
(com caracteres) mento variável.
sequência
Definido pelo
usuário Número requeri- O intervalo de cada elemento é igual ao
do por elementos intervalo do seu tipo de dados.
(usando Type)

Matrizes de qualquer tipo de dados requerem 20 bytes de memória, mais 4 bytes para
cada dimensão da matriz, mais o número de bytes ocupados pelos próprios dados.
A memória ocupada pelos dados pode ser calculada multiplicando-se o número de
elementos de dados pelo tamanho de cada elemento. Por exemplo: os dados em uma
matriz de dimensão única, que consiste de quatro elementos de dados Integer de

60 Senac São Paulo


Excel 2013 com VBA

2 bytes cada, ocupam 8 bytes. Os 8 bytes exigidos para os dados, mais os 24 bytes fi-
xos, fazem com que o requisito de memória total para a matriz seja de 32 bytes.

Compreendendo o escopo e a visibilidade

O escopo diz respeito à disponibilidade de uma variável, constante ou procedimento


para ser utilizado por outro procedimento. Há três níveis de escopo: nível de proce-
dimento, nível de módulo privado e nível de módulo público.
Você determina o escopo de uma variável quando a declara. É interessante declarar
todas as variáveis explicitamente para evitar erros de conflito de nomenclatura entre
as variáveis com diferentes escopos.

Definindo o escopo em nível de procedimento

Uma variável ou constante definida dentro de um procedimento não é visível fora


desse procedimento. Somente o procedimento que contém a declaração da variável
poderá utilizá-la.
1. Abra a pasta Conceitos.xlsm.
2. No Editor de VB clique no menu Inserir.
3. Clique na opção Módulo.
4. Digite os procedimentos abaixo. O primeiro procedimento declara a variável
strMsg e atribui um conteúdo a ela, apresentando, a seguir, o seu valor em uma
caixa de mensagem. O segundo procedimento apresenta seu valor em uma caixa
de mensagem.
Sub VariavelLocal()
Dim strMsg As String
strMsg = “Esta variável não pode ser utilizada fora deste procedimento.”
MsgBox strMsg
End Sub

Sub ForaDoEscopo()
MsgBox strMsg
End Sub

5. Execute o procedimento VariavelLocal.


6. Em seguida, execute o procedimento ForaDoEscopo. Observe que a caixa de
mensagem aparece vazia, pois o conteúdo da variável strMsg perde-se ao térmi-
no do procedimento VariavelLocal.

Senac São Paulo 61


Excel 2013 com VBA

Definindo o escopo em nível de módulo privado

Você pode definir variáveis e constantes em nível de módulo na seção Declarações


do módulo. Essas variáveis podem ser públicas ou privadas. As variáveis públicas es-
tarão disponíveis para todos os procedimentos em todos os módulos de um projeto.
As variáveis privadas estarão disponíveis somente para os procedimentos naquele
módulo. Como padrão, o escopo das variáveis declaradas com a instrução Dim na
seção Declarações é privado. No entanto, quando se precede a declaração da variável
com a palavra-chave Private, o escopo no seu código se torna óbvio.
No exemplo a seguir, a variável de sequência de caracteres strMsg está disponível
para os procedimentos definidos no módulo. Quando o segundo procedimento for
chamado, ele exibirá o conteúdo da variável strMsg em uma caixa de diálogo.
1. Ainda na pasta de trabalho Conceitos.xlsm, abra o módulo usado anteriormente.
2. Na caixa de combinação Procedimento escolha (Declaração).
3. Na área de Declarações aberta digite o código:

Private strMsg As String


Sub VarPublica()
strMsg = “Esta variável não pode ser utilizada fora deste módulo.”
End Sub
Sub MostraVarPub()
MsgBox strMsg
End Sub
4. Execute o procedimento VarPublica.
5. Em seguida execute o procedimento MostraVarPub. Observe que o conteúdo da
variável é visualizado pelo procedimento MostraVarPub.

Definindo o escopo em nível de módulo público

Caso você declare uma variável em nível de módulo como pública, ela estará dis-
ponível para todos os procedimentos no projeto. No exemplo a seguir a variável se
sequência de caracteres strMsg pode ser utilizada por qualquer procedimento em
qualquer módulo do projeto.
1. Na caixa de combinação Procedimento escolha (Declaração).
2. Digite o código:

Public strMsg As String

62 Senac São Paulo


excel 2013 com vbA

todos os procedimentos são públicos como padrão, exceto os procedimentos de


evento. quando o vb cria um procedimento de evento, a palavra chave private é au-
tomaticamente inserida antes da declaração do procedimento. Para todos os outros
procedimentos, você deve declarar explicitamente o procedimento com a palavra-
-chave private, caso não deseje torná-lo público.

atividade 3 – Criando procedimentos para preencher a planilha


Biblioteca Circulante
Objetivo:
• Criar procedimentos para dotar as planilhas de funcionalidade. Corresponde à
fase 4 do projeto Conceitos.
Tarefas:
• Criar um procedimento que localiza e atualiza os intervalos referentes às listas
de livros, sócios e tipo.
• Criar um procedimento que preenche as colunas da planilha com dados corres-
pondentes ao livro e ao sócio escolhido.
• Criar código para os eventos Change das planilhas que chamem os procedimentos.
nesta atividade você irá criar os seguintes procedimentos:
• atualiza_Intervalo: localiza e renomeia os intervalos quando ocorrer alguma alte-
ração nas listas dos livros, sócios ou tipo.
• procura: localiza a célula alterada e preenche as colunas necessárias utilizando a
função proCV.
• evento Worksheet_Change da planilha Biblioteca – dados, que chama o procedi-
mento atualiza_Intervalo.
• evento Worksheet_Change da planilha Biblioteca circulante que chama o proce-
dimento procura.

1. Abra a pasta Conceitos.xlsm.


2. no editor do vb dê duplo clique no módulo 1.
3. na área declarações do módulo digite o código abaixo para declarar as variáveis
Linha e Coluna como públicas.

public Linha as Long


public Coluna as Long

Senac São Paulo 63


Excel 2013 com VBA

4. Digite o procedimento a seguir:

Sub Atualiza_Intervalo()
5. Pressione a tecla Enter. Surge a instrução End Sub
6. Digite o código a seguir:

Dim planilha As Worksheet


Dim lin
Dim col

‘ informações sobre a planilha e célula quando o procedimento é chamado


Set planilha = ActiveSheet
lin = ActiveCell.Row
col = ActiveCell.Column

7. Abra o arquivo de texto Atualiza_Intervalo.txt para copiar as linhas restantes.


8. Cole as linhas copiadas após a última instrução digitada:

O procedimento acima redefine e renomeia os intervalos da planilha Biblioteca –


dados. Algumas instruções são descritas a seguir:

64 Senac São Paulo


Excel 2013 com VBA

Rows.Count – representa o número de linhas da planilha.


Range(ActiveCell, Range(“A3”)) – representa o intervalo que vai da célula atual até a
célula A3.
Propriedade Name – permite renomear intervalos.
9. Vamos agora criar uma instrução no evento Worksheet_Change, que ocorrerá
toda vez que a planilha Biblioteca – dados for alterada. Esse evento chamará o
procedimento Atualiza_Intervalo, criado no item anterior. Dê duplo clique no
módulo da planilha Biblioteca – dados.
10. Na caixa de combinação Objeto escolha Worksheet.
11. Na caixa de combinação Procedimento escolha o evento Change.
12. Digite a seguinte instrução para completar o código:

Atualiza_Intervalo

Dessa forma teremos:

13. Volte ao Módulo 1 e digite o procedimento Procura listado a seguir. Atenção às


quebras de linha. Utilize espaço seguido de sublinhado para dividir as linhas.
Sub Procura()
If Coluna = 1 Then ‘ preenche colunas Nome do livro, Autor, Tipo e Preço
Application.EnableEvents = False
Cells(Linha, 2) = WorksheetFunction.VLookup(Cells(Linha, Coluna), _
Range(“Livros”), 2)
Cells(Linha, 3) = WorksheetFunction.VLookup(Cells(Linha, Coluna), _
Range(“Livros”), 3)
Cells(Linha, 4) = WorksheetFunction.VLookup(Cells(Linha, Coluna), _
Range(“Livros”), 4)
Cells(Linha, 10) = WorksheetFunction.VLookup(Cells(Linha, Coluna + 3), _
Range(“Tipos”), 2)
Cells(Linha, 11) = Cells(Linha, 10)

Senac São Paulo 65


Excel 2013 com VBA

Application.EnableEvents = True
End If
If Coluna = 5 Then
Application.EnableEvents = False
Cells(Linha, 6) = WorksheetFunction.VLookup(Cells(Linha, Coluna), _
Range(“Socios”), 2)
Application.EnableEvents = True
End If
‘ preenche coluna Atrasado
If Coluna = 7 Or Coluna = 8 Then
Application.EnableEvents = False
If CDate(Cells(Linha, 8)) > CDate(Cells(Linha, 7)) + 7 Then
Cells(Linha, 9) = “Sim”
Cells(Linha, 11) = Cells(Linha, 10) + 2
Else
Cells(Linha, 9) = “Não”
End If
Application.EnableEvents = True
End If
‘aplica bordas
Range(“A7”).CurrentRegion.Borders.LineStyle = xlContinuous
‘aplica estilo moeda
Range(“J7”, Range(“K7”).End(xlDown)).Select
Selection.Style = “Currency”
‘autoajuste da seleção
Columns(“A:K”).AutoFit
End Sub
14. Crie o código para o evento Change. Dê duplo clique no módulo da planilha
Biblioteca circulante.
15. Na caixa de combinação Objeto escolha Worksheet.
16. Na caixa de combinação Procedimento escolha Change.

66 Senac São Paulo


Excel 2013 com VBA

17. Digite o código:

Private Sub Worksheet_Change(ByVal Target As Range)


Coluna = Target.Column
Linha = Target.Row
Procura ‘ chama o procedimento Procura
End Sub

18. Vá à planilha Biblioteca circulante e digite alguns códigos de livros e sócios para
teste.
19. Salve a pasta Conceitos.xlsm.

Podemos utilizar a instrução Application.ScreenUpdating = False no início do pro-


cedimento para inibir a atualização de telas durante a execução. No final do pro-
cedimento introduzimos outra instrução atribuindo o valor True para retornar ao
funcionamento normal.

Exercício Proposto

Projeto Funcionários – Fase 4

Você criará os procedimentos necessários para a automação da planilha Folha de


Pagamento.
1. Abra a pasta Funcionários.xlsm.
2. Crie um procedimento que preencha as colunas Salário, Valor do INSS, Valor do
IR, Salário Família, Plano de Saúde, Desconto V.T. e Salário Líquido quando as
colunas Cargo, Nº de Filhos ou V.T. forem preenchidas ou alteradas.
Sugestão: utilize a função VLookup.
3. Digite no evento Worksheet_Change uma instrução que chame o procedimento
criado.
4. Introduza os funcionários abaixo:

Nome Cargo No de filhos VT


Ernesto Analista 2 Sim
Vilma Secretária 4 Não

5. Salve a pasta.

Senac São Paulo 67


excel 2013 com vbA

CAPÍTULO 8
OPERADORES E
CONSISTÊNCIA DOS
DADOS

ObJETIvO:
• Garantir o procedimento correto dos procedimentos

68 Senac São Paulo


Excel 2013 com VBA

Operadores
Apresentamos a seguir os operadores aritméticos, lógicos e de comparação reconhe-
cidos pelo VBA.
Operadores aritméticos

Operador Descrição Exemplo


* Multiplicação 5*10 é igual a 50
/ Divisão 20/2 é igual a 10
\ Retorna a parte inteira de uma divisão. 5\2 é igual a 2
15\4 é igual a 3
Mod Retorna o resto de uma divisão. 17 mod 4 = 1
50 mod 4 = 2
50 mod 4.4 = 2
+ Soma 10+30 = 40
- Subtração 30-5 = 25
^ Potência 4^3 = 64

Operadores lógicos

Operador Descrição Exemplo


And Acrescenta condições: se todas as condições 50>20 And 10<7 é
forem verdadeiras o resultado será True. Se False
pelo menos uma condição for False o
resultado será False.
Or Se pelo menos uma das condições for 50>30 Or 5<10 é True
verdadeira o resultado será True. Se todas as
condições forem False, o resultado será False.
Not Gera uma negação lógica, ou seja, inverte a Not 20>10 é False
lógica.
Eqv Se todas as condições forem verdadeiras ou 15>10 Eqv 6>3 é True
todas as condições forem falsas, retorna True,
15<10 Eqv 6<3 é True
caso contrário retorna False.
Xor Exclusão lógica. Retorna True se apenas uma 10>5 Xor 5<3 é True
das expressões for verdadeira.
10>5 Xor 6>3 é False

Senac São Paulo 69


excel 2013 com vbA

Operadores de comparação

Operador Descrição Exemplo


< Menor que 20<10+10 é False
<= Menor ou igual a 20<=10+10 é True
> Maior 50>100-60 é True
>= Maior ou igual a 50=30-18 é False
Is É. Compara duas variáveis de referência a obje- Fim = Cde Cde = Sim
tos
Fim Is Sim é True
Like Como. Compara duas sequências de caracte- “AxxxA” Like “A*A” é
res. True

atividade 1 – verificando se os itens digitados existem


Objetivo:
• Criar linhas de código que verifiquem a consistência dos dados.
Tarefas:
• verificar se o código do livro existe.
• verificar se o código do sócio existe.

1. Abra a pasta Conceitos.xlsm.


2. localize o procedimento procura.
3. Após as instruções If Coluna = 1 Then e application.EnableEvents = False, digite:

maior = range(“Livros”).rows.Count
If Cells(Linha, Coluna) < 1 or Cells(Linha, Coluna) > maior Then
Cells(Linha, Coluna).select
MsgBox “Este livro não consta da relação de livros”, vbCritical, “Livro _
inexistente”
application.Undo
application.EnableEvents = True
Exit sub
End If

70 Senac São Paulo


Excel 2013 com VBA

4. Após as instruções If Coluna = 5 Then e Application.EnableEvents = False digite:

maior = Range(“Socios”).Rows.Count
If Cells(Linha, Coluna) < 1 Or Cells(Linha, Coluna) > maior Then
Cells(Linha, Coluna).Select
MsgBox “Este sócio não consta da relação de sócios”, vbCritical, “Sócio _
inexistente”
Application.Undo
Application.EnableEvents = True
Exit Sub
End If

Senac São Paulo 71


Excel 2013 com VBA

Nas linhas de código digitadas temos:


Método Rows.Count – retorna a quantidade de linhas do intervalo.
Application.Undo – desfaz a digitação.
Exit Sub – interrompe a execução do procedimento.
5. Na planilha Biblioteca circulante insira códigos de livros e de clientes. As mensa-
gens abaixo devem aparecer quando um código inexistente é digitado.

72 Senac São Paulo


excel 2013 com vbA

CAPÍTULO 9
ESTRUTURAS DE
REPETIÇÃO

ObJETIvO:
• utilizar as estruturas de repetição

Senac São Paulo 73


excel 2013 com vbA

atividade 1 – Utilizando a estrutura For... Next


Objetivo:
• utilizar o laço de repetição For...next.
Tarefas:
• Criar um procedimento que conte o número de linhas que contém livros, mas
sem sócios, ou linhas com sócios e sem livros.

A estrutura For... next é utilizada quando desejamos repetir as instruções um deter-


minado número de vezes.

Sintaxe:

For contador = Inicio To Fim [passo]


[Instruções]
[Exit For]
[Instruções]
next [contador]

• Inicio – valor inicial da variável contador.


• Fim – valor final da variável contador.
• Passo – argumento opcional que determina o incremento ou decremento ao pas-
sar pala instrução next. valores positivos representam incrementos e valores ne-
gativos indicam decrementos.
• Contador – variável que é incrementada ou decrementada ao atingir a instrução
next de acordo com o valor de passo. Ao atingir a instrução next, o controle re-
torna à instrução For, executando todas as instruções novamente até que o valor
da variável Contador se iguale ao valor da variável Fim.
vamos criar um procedimento que conte as linhas incompletas da planilha Biblioteca
circulante.
1. Acesse a planilha Biblioteca circulante.
2. digite alguns códigos de livros e, nessas linhas, não preencha o código do sócio.
3. digite alguns códigos de sócios deixando estas linhas sem os códigos de livros.
4. Acesse o editor do vb.
5. digite o procedimento abaixo:

74 Senac São Paulo


excel 2013 com vbA

sub Contador()
dim Lintotal as Long
dim i as Long
dim acumula as Long
Lintotal = Cells(6, 1).Currentregion.rows.Count + 5
For i = 7 To Lintotal
If Cells(i, 1) = “” or Cells(i, 5) = “” Then
acumula = acumula + 1
End If
next
MsgBox “Existem “ & acumula & “linhas incompletas”
End sub

6. execute a macro. verifique a contagem das linhas onde falta um dos códigos ou
os dois.

atividade 2 – Utilizando a estrutura For... Each


Objetivo:
• repetir um grupo de instruções para cada elemento em uma matriz ou coleção.
Tarefas:
• utilizar o laço de repetição For... Each.
• Criar um procedimento para substituir zeros por células vazias.
• Criar um procedimento para preencher células com os nomes das planilhas da
pasta de trabalho.
• utilizar as coleções Workbooks e Worksheets.

Sintaxe:

For Each elemento In coleção


Instruções
[Exit For]
Instruções
next [elemento]

Senac São Paulo 75


Excel 2013 com VBA

Vamos criar um procedimento que percorre todas as células preenchidas (UsedRan-


ge) de todas as planilhas da pasta de trabalho substituindo zeros por células vazias.
1. Abra a pasta Laços de repetição.xlsm localizada na pasta Atividades.
2. Vá para o Editor do VB
3. Insira um módulo e digite:

Public Planilha As Worksheet


Public Celula As Range
Sub LimparZerosPlans()
For Each Planilha In Worksheets
Planilha.Select
For Each Celula In Planilha.UsedRange
If Celula.Value = 0 Then
Celula.ClearContents
End If
Next
Next
End Sub

4. Selecione a planilha Dados.


5. Execute o procedimento.
6. Clique na planilha Dados e verifique que as células preenchidas com zeros tive-
ram seu conteúdo apagado pelo método ClearContents.
7. Feche a pasta salvando-a.
O próximo procedimento que iremos criar relaciona os nomes das planilhas da pasta
atual na primeira planilha Worksheets(1).
8. Abra uma nova pasta de trabalho.
9. Altere o nome da primeira planilha para Contabilidade.
10. Altere o nome da segunda planilha para Produção.
11. Altere o nome da terceira planilha para Vendas.
12. Entre no Editor do VB.
13. Insira um módulo.

76 Senac São Paulo


Excel 2013 com VBA

14. Digite o código:

Sub Rel_plan()
Dim plan As Worksheet
For Each plan In Worksheets
ActiveCell = plan.Name
ActiveCell.Offset(1, 0).Select
Next
End Sub

15. Selecione a planilha Contabilidade e execute o procedimento.


16. Salve a pasta com o nome Planilhas.xlsm.

Coleção Workbooks

Representa a coleção de pastas de trabalho abertas na memória. Cada elemento da


coleção Workbook pode ser representado:
• Pela ordem de abertura na seção de trabalho. Exemplo: Workbooks(1).
• Pelo nome do arquivo. Exemplo: Workbooks(“C:\Conceitos.xlsm”)

Principais propriedades e métodos

Workbooks.Add Abre uma nova pasta de trabalho vazia.


Workbooks.Count Retorna o número de pastas abertas no momento.
Workbooks.Open Abre uma pasta existente.
Workbooks(1).Close Fecha a primeira pasta aberta.
Workbooks(1).Name Retorna o nome da primeira pasta.
Workbooks(“C:\Conceitos.xlsm”) Representa a pasta Conceitos.xlsm.
Workbooks(1).Activate Torna ativa a primeira pasta de trabalho aberta.
Workbooks(1).Save Salva a primeira pasta.
Workbooks(1).Saveas Salva como a primeira pasta.
Workbooks(1).Sheets.add Insere uma nova planilha na pasta.
Workbooks(1).Sheets.copy Copia a planilha.
Workbooks(1).Sheets.move Move a planilha.
Workbooks(1).Sheets.Select Seleciona uma planilha da pasta.
Workbooks(1).Sheets.Count Retorna o número de planilhas da pasta.
Workbooks(1).Sheets.delete Exclui a planilha.

Senac São Paulo 77


Excel 2013 com VBA

Coleção Worksheets

Representa a coleção de planilhas da pasta de trabalho. Cada elemento da coleção


Worksheets pode ser referenciado da seguinte forma:
• Pela ordem das guias das planilhas na pasta de trabalho. Exemplo: Worksheets(1).
• Pelo nome atribuído à planilha. Exemplo: Worksheets(“Biblioteca circulante”),
Worksheets(“Plan1”).

Worksheets(1) corresponderá a Worksheets(“Plan1”) somente se Plan1 for a pla-


nilha possicionada mais à esquerda na pasta de trabalho. O índice numérico indi-
ca a posição da planilha da esquerda para a direita.

Principais propriedades e métodos:

Worksheets.Add Insere uma planilha.


Worksheets.Copy Copia uma planilha.
Worksheets.Count Retorna o número de planilhas na pasta.
Worksheets.Delete Exclui a planilha.
Worksheets.Move Move a planilha.
Worksheets.Select Seleciona a planilha.
Worksheets.Visible Oculta/Reexibe uma planilha.

Consultando a lista de propriedades e métodos dos Objetos

1. No Editor do VB clique no menu Exibir.


2. Clique em Pesquisador de Objetos ou pressione a tecla F2.

78 Senac São Paulo


excel 2013 com vbA

atividade 3 – Utilizando a estrutura Do... While


Objetivo:
• repetir um grupo de instruções utilizando a estrutura do... While.
Tarefas:
• utilizar a estrutura do... While.
• Criar um procedimento que percorra e exclua as linhas incompletas da planilha
Biblioteca circulante.

Variações: podemos utilizar a estrutura do com as cláusulas:


• While: enquanto uma condição é verdadeira.
• Until: até que a condição se torne verdadeira.

Senac São Paulo 79


Excel 2013 com VBA

Sintaxe:

Do [{While | Until} condição]


[instruções]
[Exit Do]
[instruções]
Loop

Pode-se também utilizar a sintaxe a seguir:

Do
[instruções]
[Exit Do]
[instruções]
Loop[{While | Until} condição]

Vamos criar um procedimento que exclua as linhas incompletas utilizando a estrutura


Do... While.
1. Abra a pasta Conceitos.xlsm.
2. Abra o Editor do VB.
3. Copie o conteúdo do arquivo LimparDO.txt que se encontra na pasta Atividades
e cole em um módulo.
Sub LimparDo()
Dim Lintotal As Long
Dim contador As Long
Lintotal = Cells(6, 1).CurrentRegion.Rows.Count + 3
contador = 7
Do While contador <= Lintotal
If Cells(contador, 1) = “” Or Cells(contador, 5) = “” Then
Application.EnableEvents = False
Cells(contador, 1).EntireRow.Delete
Application.EnableEvents = True
If contador = Lintotal Then Exit Sub
Lintotal = cells(6,1).currentregion.rows.count+3

80 Senac São Paulo


Excel 2013 com VBA

contador = contador - 1
End If
contador = contador + 1
Loop
End Sub

4. Digite alguns códigos de livros sem sócios e alguns códigos de sócios sem livros.
5. Execute o procedimento. Confirme a exclusão das linhas incompletas.

Variações do uso da instrução Do:

Do While condição
Instruções
Executa as instruções entre Do e Loop
Exit Do
enquanto a condição é verdadeira.
Instruções
Loop
Do Until condição
Instruções
Executa as instruções entre Do e Loop até
Exit Do
que a condição seja verdadeira.
Instruções
Loop
Do
Instruções
Executa as instruções uma vez e
Exit Do
enquanto a condição é verdadeira.
Instruções
Loop While condição
Do
Instruções
Executa as instruções uma vez e até que
Exit Do
a condição seja verdadeira.
Instruções
Loop Until condição

O comando Exit Do pode ser usado para interromper uma sequência de instruções,
sendo frequentemente utilizado após a avaliação de alguma outra condição, quando
o comando Exit Do transfere o controle para a instrução imediatamente após o Loop.

Senac São Paulo 81


excel 2013 com vbA

CAPÍTULO 10
FORMULÁRIOS
PERSONALIZADOS

ObJETIvO:
• Criar interface amigável para o usuário

82 Senac São Paulo


excel 2013 com vbA

atividade 1 – Inserindo o formulário Cadastra Livros e seus


controles
Objetivo:
• Criar formulários personalizados.
Tarefas:
• Criar o formulário Cadastra Livros.

Criando formulários personalizados

1. Abra a pasta Conceitos.xlsm.


2. Acesse o editor do vb.
3. no menu Inserir clique em UserForm.

os objetos presentes na Caixa de Ferramentas são denominados Controles. São utili-


zados para criar uma interface com o usuário.

Senac São Paulo 83


Excel 2013 com VBA

Controles:

Nome na barra Identificação na janela


Controle Função
de ferramentas Propriedades
Selecionador de Permite a seleção com o
objetos mouse.
Apresenta um texto no
Rótulo Label 1, Label 2, etc
formulário.
Campo para entrada de
Caixa de texto TextBox 1...
dados.
Caixa de Apresenta itens em uma lista
ComboBox 1...
combinação suspensa.
Apresenta itens em um espaço
Caixa de listagem ListBox 1...
aberto.
Permite selecionar ou não um
Caixa de seleção CheckBox 1...
item.
Botão de ativação ToggleButton 1... Ativa ou não uma opção.
Permite escolher uma opção.
Para colocar um grupo de
Botão de opção OptionButton 1...
opções devemos utilizar o
controle Quadro.
Quadro Frame 1... Delimita controles.
Botão de Executa um procedimento
CommandButton 1...
comando quando pressionado.
Contém uma coleção de uma
TabStrip TabStrip 1...
ou mais guias.
Contém uma coleção de uma
Multipágina MultiPage 1... ou mais páginas. Cada página
é um formulário diferente.

Barra de rolagem ScrollBar 1... Controle de rolamento.

Incrementa ou decrementa
Botão de rotação SpinButton 1
um valor.
Apresenta uma imagem no
Imagem Image 1...
formulário.

4. Crie um rótulo para indicar o título do livro. Selecione o controle Rótulo.


5. Com o mouse na área do formulário, desenhe um retângulo que definirá o ta-
manho do rótulo.

84 Senac São Paulo


Excel 2013 com VBA

Na janela Propriedades podemos nomear o controle e alterar suas propriedades.

Senac São Paulo 85


Excel 2013 com VBA

Principais propriedades do rótulo:

Propriedade Função
Name Nome que utilizamos para referenciar o controle na linha de
código.
AutoSize Definido como True, ajusta o contorno do controle ao texto.
BackColor Define a cor de fundo do controle.
BackStyle Define o estilo de fundo do controle.
BorderColor Define a cor da borda do controle.
BorderStyle Define o estilo da borda do controle.
Caption Define o texto que será exibido no controle.
Enabled Definido como True, torna-se disponível no formulário.
Font Define a fonte do texto exibido.
ForeColor Define a cor do texto exibido.
Height Define a altura do controle em pontos.
Width Define o comprimento do controle em pontos.
Left Define a distância do controle em relação à borda esquerda do
formulário
Top Define a distância do controle em relação à borda superior do
formulário
TabIndex Inicia em zero. Indica a ordem de tabulação dos controles no
formulário. Se esta propriedade não for alterada, a ordem de
tabulação será a ordem de inserção dos controles no formulário.
TabStop Pode assumir os valores True ou False, indicando se o controle
receberá ou não o foco quando a tecla Tab for pressionada.
Visible Definido como True, torna o controle visível no formulário.

6. Clique na propriedade Name e digite lblTitulo. A seguir, pressione a tecla Enter.

Para facilitar a identificação do tipo de controle é costume iniciar seu nome com três
letras que representem seu tipo. Por exemplo: lbl para Rótulos (label), txt para Caixa
de Texto, frm para Formulários, fra para Quadros (frames), etc. Essa convenção é utili-
zada por muitos programadores. No entanto, você pode criar sua própria convenção.

7. Clique na propriedade Caption e digite Título.

86 Senac São Paulo


Excel 2013 com VBA

8. Selecione o controle Caixa de texto na Caixa de ferramentas.


9. Desenhe o controle Caixa de texto no formulário à direita do Rótulo lblTitulo.

10. Na propriedade Name digite txtTitulo.


Além das propriedades já vistas para o controle Rótulo, existem outras para a Caixa de
texto. A seguir são mostradas algumas diferenças.

Propriedade Função
Name Propriedade não existente para a Caixa de texto.
Text Atribui ou retorna o texto contido na Caixa de texto.
Value Qualquer valor atribuído à propriedade Text é atribuído a Value.

11. Na Caixa de Ferramentas selecione o controle Quadro.


12. Desenhe o controle Quadro abaixo dos controles existentes.

Senac São Paulo 87


Excel 2013 com VBA

13. Mantendo o controle selecionado, digite fraLivro na propriedade Name.


14. Na propriedade Caption digite Dados do livro.
15. Selecione o rótulo lblTitulo.
16. Arraste-o para dentro do quadro fraLivro.
17. Selecione a caixa de texto txtTitulo.
18. Arraste-a para dentro do quadro fraLivro.

É preferível inserir primeiramente o Quadro no formulário, para depois inserir os


controles que ficarão nele contidos.

19. Utilize os recursos do menu Formatar para alinhar, dimensionar e espaçar os


controles.
20. Baseando-se nos passos anteriores insira os seguintes controles dentro do qua-
dro e altere suas propriedades:

Controle Propriedade Name Propriedade Caption


Rótulo lblAutor Autor
Caixa de texto txtAutor
Rótulo lblTipo Tipo

21. Em seguida, clique em Caixa de Listagem e insira o controle.


22. Defina a propriedade Name como lstTipo.
23. Clique no formulário. Nenhum controle deve ficar selecionado.
24. Clique na caixa de combinação da Janela de propriedades.

88 Senac São Paulo


Excel 2013 com VBA

25. Se não estiver selecionada, escolha na caixa de combinação a opção UserForm 1


para ter acesso às propriedades do formulário. Você também pode ter acesso às
propriedades do formulário clicando próximo à sua borda externa.
26. Altere a propriedade Name para frmCadastraLivro.
27. Defina a propriedade Caption para Cadastro de Livros.

Acrescentando itens à Caixa de Combinação ou Caixa de Listagem

28. Dê um duplo clique no formulário. Você terá acesso à janela de código do ob-
jeto.

29. Escolha UserForm na caixa de combinação Objeto.


30. Escolha Initialize na caixa de combinação Procedimento. O evento Initialize de-
termina o que acontece quando acessamos o formulário.
31. Digite o código a seguir para o evento Initialize do formulário:

Private Sub UserForm_Initialize()


lstTipo.AddItem “Lançamento”
lstTipo.AddItem “Best Seller”
lstTipo.AddItem “Catálogo”
End Sub

Os controles ListBox e ComboBox têm propriedades e métodos que só podem ser


atribuídos em tempo de execução. O código inserido é um exemplo.
O método AddItem cria a lista a ser apresentada pelo controle.
Outras propriedades ou métodos importantes dos controles ListBox e ComboBox são:
• ListBox1.ListIndex: retorna o item selecionado na lista. O número 0 representa o
primeiro item, o número 1 o segundo item e assim por diante. Quando nenhum
item está selecionado a propriedade retorna o número -1.

Senac São Paulo 89


Excel 2013 com VBA

• ListBox1.ListCount: retorna a quantidade de itens na lista.


• ListBox1.List(ListBox1.ListIndex): retorna o texto do item selecionado.

32. Clique no botão Exibir Objeto para voltar ao formulário.

33. Ajuste os controles e o formulário.


34. Clique no menu Executar, opção Executar Sub/UserForm para verificar o formulá-
rio. Você também pode executar o formulário pressionando a tecla F5.

35. Feche o formulário para voltar ao Editor.


36. Insira dois botões de comando com as seguintes propriedades:

Propriedade Name Propriedade Caption Propriedade Cancel


cmdCadastrar Cadastrar False
cmdCancelar Cancelar True

37. Atribuir True à propriedade Cancel habilita o uso da tecla Esc para fechar o for-
mulário.

90 Senac São Paulo


excel 2013 com vbA

atividade 2 – Criando procedimentos para os botões


Objetivo:
• dotar os botões de comando de funcionalidade.
Tarefas:
• Criar procedimentos de evento para o botão Cadastrar.
• Criar procedimentos de evento para o botão Cancelar.

atribuindo funcionalidade aos controles

vamos criar um procedimento de evento para o botão Cadastrar, que acrescentará os


dados do formulário à lista de livros da planilha Biblioteca – dados quando o botão
for clicado.
1. no formulário em construção dê duplo clique no botão Cadastrar (cmdCadas-
trar).
2. na janela de códigos aparece o evento cmdCadastrar_Click. o evento Click é o
evento padrão para os botões de comando.
3. digite o código a seguir:
private sub cmdCadastrar_Click()
‘verificar se todos os campos estão preenchidos
If txtTitulo = “” Then
MsgBox “nome do Livro não preenchido”, , “nome ausente”
txtTitulo.setFocus
Exit sub
ElseIf txtautor = “” Then

Senac São Paulo 91


Excel 2013 com VBA

MsgBox “Campo Autor não preenchido”, , “Autor ausente”


txtAutor.SetFocus
Exit Sub
ElseIf lstTipo.ListIndex = -1 Then
MsgBox “Tipo não escolhido”, , “Tipo ausente”
lstTipo.SetFocus
Exit Sub
End If

‘acrescenta à lista dos livros


Application.EnableEvents = False
Sheets(“Biblioteca - dados”).Select
Range(“A2”).End(xlDown).Offset(1, 0).Select
Selection.EntireRow.Insert ‘insere linha

‘atribui os valores
Codigo = ActiveCell.Offset(-1, 0) + 1 ‘preenche novo código do livro
ActiveCell = Codigo
ActiveCell.Offset(0, 1) = txtTitulo
ActiveCell.Offset(0, 2) = txtAutor
ActiveCell.Offset(0, 3) = lstTipo.List(lstTipo.ListIndex)

‘aplica bordas
ActiveCell.Range(“A1:D1”).Select
Selection.Borders.LineStyle = xlContinuous
Application.EnableEvents = True

‘mensagem de sucesso
msg = Codigo & “ - “ & txtTitulo & “ - “ & txtAutor
msg = msg & “ - “ & lstTipo.List(lstTipo.ListIndex)
MsgBox “O livro foi cadastrado com sucesso:” & vbCrLf & msg, , “Cadastro”

92 Senac São Paulo


Excel 2013 com VBA

‘zerar os controles
txtTitulo = “”
txtAutor = “”
lstTipo.ListIndex = -1
End Sub

4. Digite o código abaixo para o botão Cancelar.


Private Sub cmdCancelar_Click()
‘ descarrega o formulário
Unload Me
End Sub

Criação de um botão que chama o formulário

5. Vá para a planilha Biblioteca – dados.


6. Clique na guia Desenvolvedor.
7. Selecione o Modo Design.
8. Selecione o botão Cadastrar livro e pressione a tecla Delete.
9. Na guia Desenvolvedor clique no botão Inserir do grupo Controles.
10. Clique em Botão (controle de formulário).
11. Desenhe o botão na planilha.
12. Ao surgir o quadro de diálogo Atribuir macro, clique no botão Cancelar.
13. No grupo Controles clique em Exibir Código. A janela de código para o botão é
aberta.
14. Digite o código abaixo:

Sub Botão4_Clique
frmCadastraLivro.Show
End Sub

15. Para testar o funcionamento do botão, volte à planilha Biblioteca – dados, clique
no botão criado e cadastre os seguintes livros:

Senac São Paulo 93


Excel 2013 com VBA

Título Autor Tipo


Um dia sonhei minha realidade Jairo de Paula Catálogo
1984 George Orwell Catálogo

16. Salve o arquivo.

Definindo a ordem de tabulação

A ordem de tabulação indica a sequência em que o cursor percorre os controles


ao pressionar a tecla Tab. Quando o primeiro controle é inserido no formulário sua
propriedade TabIndex recebe o número zero. Essa propriedade é incrementada em
uma unidade para cada novo controle inserido. Assim, a propriedade TabIndex do
segundo controle recebe o número um, a do terceiro recebe o número dois e assim
por diante.
17. Para alterar a ordem de tabulação no formulário acesse o Editor do VB.
18. Analise a disposição dos controles.
19. Clique no menu Exibir.
20. Clique em Ordem de tabulação.

94 Senac São Paulo


excel 2013 com vbA

21. Selecione o controle que deve ter a ordem de tabulação alterada.


22. Clique no botão Mover para cima ou Mover para baixo até posicionar o controle
na ordem desejada. Podemos também refazer a numeração por meio da proprie-
dade TabIndex.

atividade 3 – Inserindo o formulário Cadastra Sócio e seus


controles
Objetivo:
• Criar um formulário para a entrada de dados na lista de sócios.
Tarefas:
• Criar o formulário Cadastra sócio.
• Insira um novo formulário no editor do vb.
• na propriedade name digite frmCadastrasocio.

1. Insira os seguintes controles e suas propriedades:

Controle Nome Propriedade


Rótulo lblSocio Caption = Nome do Sócio
Caixa de texto txtSocio
Botão de comando cmdCadastrar Caption = Cadastrar
Botão de comando cmdCancelar Caption = Cancelar
Cancel = True

Senac São Paulo 95


Excel 2013 com VBA

2. Escreva o procedimento do evento Click para o botão Cadastrar. Esse procedi-


mento deve verificar se o nome do sócio foi preenchido, posicionar o cursor
na próxima linha vazia da lista de sócios da planilha Biblioteca–dados, atribuir o
próximo número ao novo sócio e preencher com o nome do novo sócio. Atribua
“vazio” à caixa de texto.
3. Escreva o procedimento do evento Click para o botão Cancelar. Esse procedi-
mento deve descarregar o formulário.
4. Acesse a planilha Biblioteca – dados.
5. Exclua o botão Cadastra Sócio.
6. Insira um novo botão que chame o formulário frmCadastraSocio.
7. Digite os nomes dos sócios a seguir pelo formulário:
Aristêmio Jesus de Deus
José João Maria Prestes
Feche o formulário.
Salve o arquivo.

96 Senac São Paulo


Excel 2013 com VBA

Exercício Proposto

Projeto Funcionários – Fase 5

1. Abra a pasta Funcionários.xlsm.


2. Insira um formulário que deve conter:
a. Caixa de texto para receber o nome do funcionário.
b. Caixa de listagem ou caixa de combinação para escolha do cargo.
c. Botão de rotação para escolher o número de filhos (de 0 a 7). Definir as pro-
priedades Min = 0 e Max = 7.
d. Botões de opção para vale transporte VT (sim ou não).
3. No evento UserForm_Initialize criar a lista de dados a ser apresentada na caixa
de listagem ou caixa de combinação.
4. Inserir o botão Cadastra que, ao ser clicado, verifica se os campos do formulário
estão preenchidos e transporta os dados do formulário para a primeira linha va-
zia da planilha Folha de Pagamentos.
5. Inserir o botão Cancelar que, ao ser clicado, feche o formulário.
6. Introduzir os dados a seguir utilizando o formulário:

Nome Cargo No de filhos VT


Marcelo Analista 1 Sim
Eduardo Diretor 1 Não
Carlos Gerente 0 Não
Ivone Auxiliar 3 Sim

7. Salve o arquivo.

Senac São Paulo 97


excel 2013 com vbA

CAPÍTULO 11
FUNÇÕES DEFINIDAS
PELO USUÁRIO

ObJETIvO:
• Criar funções personalizadas

98 Senac São Paulo


excel 2013 com vbA

atividade 1 – Criando funções


Objetivo:
• Criar funções para utilizar nos procedimentos e planilhas.
Tarefas:
• Criar a função raizGeral.

estrutura das funções:


[public | private ] [static] nome da função [(lista de argumentos)] [as tipo]
[instruções]
[nome da função = expressão]
[Exit Function]
[instruções]
[nome da função = expressão]
[End Function]

Criando uma função definida pelo usuário

As funções aceitam parâmetros e retornam um valor atribuído ao seu nome. Se o


nosso objetivo fosse, por exemplo, calcular a raiz de qualquer expoente, deveríamos
efetuar o seguinte cálculo:
raiz =número ^ (1/Expoente)
Para tornar esse cálculo disponível em forma de função, vamos criar o procedimento
a seguir:
1. Abra uma nova pasta.
2. Acesse o editor do vb.
3. Clique no menu Inserir.
4. Selecione Módulo.
5. na janela de código digite:

Function raizGeral(numero as Long, Expoente as Long)


raizGeral = numero ^ (1 / Expoente)
End Function

use o nome da função para receber o resultado dos cálculos.

Senac São Paulo 99


Excel 2013 com VBA

6. Volte à planilha.
7. Na célula A1 digite 81.
8. Na célula A2 digite 4.
9. Na célula A3 digite: =RaizGeral(A1;A2):

10. Pressione Enter.


11. Repita a construção da fórmula usando o assistente Inserir Função. Clique no
botão Inserir Função.

12. Na lista das categorias escolha Definido pelo Usuário.


13. Na lista Selecione uma função clique em RaizGeral e, a seguir, clique em OK.
14. No quadro de texto Número digite ou selecione o endereço A1.
15. No quadro de texto Expoente digite ou selecione o endereço A2.

100 Senac São Paulo


excel 2013 com vbA

16. Clique no botão oK e verifique o resultado apresentado.

atividade 2 – Criando funções com parâmetros opcionais


Objetivo:
• Criar funções com parâmetros opcionais.
Tarefas:
• Criar a função Volarea que calcula a área ou o volume de uma figura geométrica.

Algumas funções necessitam de parâmetros opcionais. é o caso, por exemplo, da ne-


cessidade de uma função que calcule a área de retângulos ou volume de paralelepí-
pedos. nesse caso teríamos a seguinte situação:
Cálculo da área do retângulo: Comprimento x Largura.
Cálculo do volume do paralelepípedo: Comprimento x Largura x altura.
nesse caso, tornando o argumento altura opcional, podemos criar uma função que
pode calcular a área do retângulo ou o volume do paralelepípedo.
1. digite o comprimento 100 na célula C1.
2. digite a largura 50 na célula C2.
3. digite a altura 20 na célula C3.
4. no editor do vb crie a função Volarea com o código abaixo:

Function Volarea(Comp as double, Larg as double, optional alt as double = 1)


Volarea = Comp * Larg * alt
End Function

Senac São Paulo 101


excel 2013 com vbA

os parâmetros optional devem ser colocados por último. não deve existir nenhum
argumento obrigatório após um argumento opcional. o valor do argumento optio-
nal pode ser definido na declaração dos argumentos. no caso da função criada, se o
parâmetro alt for omitido ele assume o valor 1.
5. digite a função Volarea na célula C5 sem o parâmetro opcional.
6. digite a função Volarea na célula C6 com todos os parâmetros.
você também pode utilizar o assistente Inserir função.

atividade 3 – Criando função para cálculo do Imposto de Renda


Objetivo:
• Criar funções definidas pelo usuário envolvendo cálculos complexos.
Tarefas:
• Criar a função Ir que calcula o desconto de Imposto de renda.

Para criar a função Ir vamos considerar a tabela Progressiva para o cálculo mensal do
Imposto sobre a renda da Pessoa física para o exercício de 2012, ano-calendário de
2011.
nos meses de abril a dezembro:

base de cálculo mensal em R$ alíquota % Parcela a deduzir do imposto em R$


Até 1.566,61 - -
De 1.566,62 até 2.347,85 7,5 117,49
De 2.347,86 até 3.130,51 15,0 293,58
De 3.130,52 até 3.911,63 22,5 528,37
Acima de 3.911,63 27,5 723,95

fonte: Site da receita federal

vamos criar uma função que calcule o desconto de Imposto de renda de acordo com
a tabela acima.
1. Abra a pasta Imposto de renda.xlsx.
2. Insira um módulo.
3. digite a função abaixo:

102 Senac São Paulo


Excel 2013 com VBA

Function IR(Salario As Currency) As Currency


Select Case Salario
Case Is <= 1566.61
IR = 0
Case 1566.62 To 2347.85
IR = Salario * 0.075 - 117.49
Case 2347.86 To 3130.51
IR = Salario * 0.15 - 293.58
Case 3130.52 To 3911.63
IR = Salario * 0.225 - 528.37
Case Is > 3911.63
IR = Salario * 0.275 - 723.95
End Select
End Function

Para separar a parte decimal de um número nas linhas de código você deve usar
o ponto e não a vírgula.

4. Insira a função em D2 e copie a fórmula para as outras linhas.

Você também pode utilizar a ferramenta Inserir Função.

Senac São Paulo 103


Excel 2013 com VBA

Exercício Proposto
Criar uma função que calcule a hipotenusa quando são informados os catetos de um
triângulo retângulo.
1. Abra uma nova pasta.
2. No Editor do VB insira um novo módulo.
3. Inicie um procedimento Function com o nome Hipotenusa.
4. Defina dois argumentos para a função: Cateto1 e Cateto2.
5. Escreva a fórmula de cálculo:

Hipotenusa = (Cateto1^2 + Cateto2^2)^(1/2)

6. Em uma planilha digite os dados referentes aos catetos.


7. Insira a função em uma célula passando os parâmetros referentes aos catetos.

104 Senac São Paulo


excel 2013 com vbA

CAPÍTULO 12
TRATAMENTO DE
ERROS

ObJETIvO:
• utilizar os recursos para tratamento de erros

Senac São Paulo 105


excel 2013 com vbA

atividade 1 – Tratando erros


Objetivo:
• utilizar a instrução on Error.
Tarefas:
• tratar erros do procedimento Calculo.

na ocorrência de um erro durante a execução de um procedimento, o sistema inter-


rompe a execução e envia uma mensagem de erro. Para evitar o encerramento ines-
perado do processamento, podemos prever os erros potenciais que podem ocorrer e
tratá-los com ações corretivas devolvendo o controle ao usuário.

a instrução On Error

A instrução on Error ativa o manipulador de erros. Com o manipulador de erros ativa-


do é possível executar ações que deem o tratamento adequado ao erro ou que orien-
tem o usuário. Caso ocorra um erro nas linhas de código após a instrução on Error, o
manipulador executa a ação indicada pela instrução. os tipos de ação são:
• on Error GoTo rótulo – a execução é desviada para um ponto do procedimento,
denominado rótulo, indicado por um nome seguido por dois pontos (:). Após o
rótulo escrevemos as instruções adequadas ao tratamento do erro.
• on Error resume next – o erro é ignorado e a execução do procedimento conti-
nua a partir da linha seguinte à linha onde ocorreu o erro.
trechos diferentes do procedimento podem apresentar erros prováveis diferentes e
que necessitam de tratamentos diferentes. dessa forma, em um mesmo procedimen-
to, podemos ter várias instruções on Error. Para que não haja conflito nas diversas
rotinas de tratamento de erros, é necessário desativar um manipulador de erros antes
de ativar outro. A instrução utilizada para esse fim é on Error GoTo 0.
exemplo:
sub Corrige()
on Error GoTo TrataEntrada ‘ativa o manipulador e desvia para TrataEntrada
Grupo de instruções ‘trecho 1

on Error GoTo 0 ‘desativa o manipulador


on Error GoTo TrataCalculo ‘ativa o manipulador e desvia para TrataCalculo
Grupo de instruções ‘trecho 2

106 Senac São Paulo


Excel 2013 com VBA

Exit Sub ‘Fim do processamento normal

TrataEntrada: ‘rótulo
Instruções de tratamento de erro ‘tratamento de erros prováveis no trecho 1
Resume Next ‘volta à instrução seguinte ao erro

TrataCalculo: ‘rótulo
Instruções de tratamento de erro ‘tratamento de erros prováveis no trecho 2
Resume Next ‘volta à instrução seguinte ao erro
End Sub

Objeto Err

Na ocorrência de um erro é necessário conhecê-lo para tratá-lo adequadamente. O


objeto Err fornece informações a respeito do erro ocorrido.

Propriedade Retorno
Err.Clear Limpa explicitamente o objeto Err. O método Clear será chamado
automaticamente sempre que qualquer uma das instruções a seguir
for executada:
• Qualquer tipo de instrução Resume.
• Exit Sub, Exit Function.
• Qualquer instrução On Error.
Err.Description Retorna a descrição do erro.
Err.Number Retorna ou define um valor numérico que especifica um erro.
Number é a propriedade padrão do objeto Err.

Tratamento de erros do procedimento Calculo

1. Abra a pasta Erros.xlsm que se encontra na pasta Atividades.


2. Acesse o Editor do VB.
3. Abra o módulo 1.

Senac São Paulo 107


Excel 2013 com VBA

4. Digite um apóstrofo antes da instrução On Error Resume Next.


5. Execute o procedimento. A seguinte mensagem de erro é mostrada:

6. Clique no botão Fim.


7. Retire o apóstrofo e execute novamente o procedimento. A instrução On Error
Resume Next instrui o manipulador de erros a desprezar o erro e continuar a
execução na próxima instrução após o erro.
8. Na primeira caixa de diálogo apresentada digite 500 e, na segunda, digite 0 (nú-
mero zero). A seguinte mensagem será apresentada:

108 Senac São Paulo


excel 2013 com vbA

9. Clique no botão oK.


10. execute novamente o procedimento. digite 120 na primeira caixa de diálogo e a
letra M na segunda. A seguinte mensagem será apresentada:

Consulte a lista de erros interceptáveis no Anexo d – erros interceptáveis no final


da apostila.

atividade 2 – Depurando o procedimento


Objetivo:
• utilizar as ferramentas de depuração
Tarefas:
• depurar o procedimento Capaz.

depuração é o processo de identificar e corrigir os erros cometidos ao programar.


Podemos ter os seguintes tipos de erro:
• Sintaxe: erros de escrita ou pontuação. Geralmente são acusados no editor pela
cor vermelha.
• Compilação: falta de complemento em uma instrução. exemplo: If sem End If.
estes erros são realçados na execução do procedimento.

Senac São Paulo 109


Excel 2013 com VBA

• Tempo de execução: erro que ocorre durante a execução do procedimento


quando uma instrução ou fórmula não é entendida peloVB. Exemplos: divisão
por zero, propriedade ou método errado, etc.
• Lógica: erro na lógica adotada. São identificados quando o resultado obtido pela
execução do procedimento não é o esperado.
Os erros de sintaxe são corrigidos na digitação. Podemos utilizar a Ajuda do Visual
Basic para solucionar o problema.
Os erros de compilação e tempo de execução surgem ao executar o procedimento
provocando uma interrupção.
Os erros de lógica não são acusados pelo VB. Devemos executar um “teste de mesa”,
executando as instruções do procedimento uma a uma e analisando se os resultados
obtidos são os esperados. O “teste de mesa” é uma simulação passo a passo na exe-
cução das instruções.

Um procedimento deve ser planejado com bastante atenção para que não ocor-
ram erros de lógica durante a execução. Teste o procedimento com dados e re-
sultados conhecidos e efetue as correções, caso os resultados apresentados não
sejam os esperados.

1. No Editor do VB, para exibir a barra de ferramentas Depurar clique no menu Exi-
bir, Barra de ferramentas e Depurar.

Os botões da barra de ferramentas são os seguintes:

Modo Design Ativa e desativa o modo Design.

Executa o procedimento atual se o cursor


estiver em um procedimento, executa o
Executar Sub/UserForm UserForm se um UserForm estiver ativo no
ou Executar macro momento ou executa uma macro se nem a
janela Código nem um UserForm estiver
ativo.
Para a execução de um programa em execu-
Interromper
ção e alterna para o modo de interrupção.
Limpa a pilha de execução e as variáveis em
Redefinir
nível de módulo e redefine o projeto.
Ativar/desativar pontos Define ou remove um ponto de interrupção
de interrupção na linha atual.

110 Senac São Paulo


Excel 2013 com VBA

Depuração total Executa o código uma instrução de cada vez.

Executa o código, um procedimento ou


Depuração parcial
instrução de cada vez na janela Código.
Executa as linhas restantes de um
Depuração circular procedimento em que se encontra o ponto
de execução atual.

Janela Variáveis locais Exibe a janela Variáveis locais.

Janela Verificação
Exibir a janela Verificação imediata.
imediata
Janela Inspeção de
Exibe a janela Inspeção de variáveis.
variáveis
Exibe a caixa de diálogo Inspeção de
Inspeção de variáveis
variáveis rápida com o valor atual da
rápida
expressão selecionada.
Exibe a caixa de diálogo Chamadas, que lista
as chamadas de procedimentos atualmente
Pilha de chamadas
ativos (procedimentos no aplicativo que foram
iniciados mas não concluídos).

2. Crie um módulo.
3. Abra o arquivo Depurar.txt que está na pasta Atividades.
4. Copie todo o seu conteúdo para o módulo criado. O código contém alguns
erros intencionais.
Sub Capaz()
Dim resp as Variant
resp$ = “”
resp = Application.Input(“Informe sua idade”)
If resp >= 18 Then
Msgbox “Você é capaz”
ElseIf resp >= 16 And resp < 18 then
Msgbox “Você é parcialmente capaz”
Else
Msgbox “Você é incapaz”
End Sub

Senac São Paulo 111


Excel 2013 com VBA

5. Pressione o botão Executar ou a tecla de função F5 para executar o procedimento.


6. A seguinte mensagem de erro será mostrada:

O erro é motivado pelo fato da variável resp ter sido declarada como Variant e, de-
pois, ser usada como resp$, que define uma variável tipo String.
7. Clique no botão OK e interrompa a execução clicando no botão Redefinir.
8. Delete o caractere $.
9. Pressione F5 para executar novamente o procedimento. A seguinte mensagem
de erro será mostrada:

112 Senac São Paulo


Excel 2013 com VBA

Nesse caso faltou indicar o final do desvio condicional por meio da instrução End If.
10. Clique no botão OK e interrompa a execução do procedimento.
11. Digite a instrução End If antes da instrução End Sub.
12. Execute novamente o procedimento. A seguinte mensagem de erro será mos-
trada:

13. Clique no botão OK para que o VB indique a instrução a ser corrigida.

Senac São Paulo 113


Excel 2013 com VBA

Nesse caso o método correto para o objeto Application é InputBox.


14. Clique no botão Redefinir para interromper a execução.
15. Substitua Input por InputBox.
16. Execute novamente o procedimento.

Depurando cada instrução

Para analisar o resultado de cada instrução e o valor atual das variáveis, você vai utili-
zar o processo de depuração total do procedimento.
1. Clique no menu Depurar.
2. Clique em Depuração Total.

Pode-se também iniciar o processo de depuração total clicando na ferramenta


Depuração total da barra de ferramentas Depuração ou pressionando a tecla F8.

3. Posicione o ponteiro do mouse sobre a variável. Verifique o seu valor.

114 Senac São Paulo


Excel 2013 com VBA

A seta amarela indica a instrução que será executada. O valor da variável resp neste
momento é vazio.
4. Selecione a variável.
5. Clique no botão Inspeção de variáveis rápida.

6. Clique em Cancelar.

Senac São Paulo 115


Excel 2013 com VBA

7. Prossiga pressionando a tecla F8 até surgir a caixa de digitação.


8. Digite o número 17.

9. Clique em OK.
10. Coloque o mouse sobre a variável resp e verifique seu novo valor.

11. Clique no botão Janela de Verificação Imediata, caso ela não esteja visível.
12. Você pode atribuir outros valores às variáveis para testar o procedimento. Cli-
que na Janela Verificação Imediata e digite:
resp = 14
13. Tecle Enter e verifique o novo valor da variável.
14. Continue a depuração até que a mensagem seja exibida.

116 Senac São Paulo


Excel 2013 com VBA

15. Para testar novos valores arraste a seta amarela até a instrução que atribui o valor
digitado na caixa de mensagem à variável resp.

16. Digite outras idades. Arraste a seta até a instrução indicada anteriormente para
informar cada idade.
17. Encerre a execução do procedimento.

Definindo pontos de interrupção

Você pode definir pontos de interrupção na execução do procedimento.


1. Na barra lateral esquerda da janela de código clique com o mouse na linha que
contém a instrução resp = Application.InputBox(“Informe sua idade”). Se prefe-
rir, selecione a linha e clique no botão Ativar/Desativar pontos de interrupção ou
pressione a tecla F9.

Senac São Paulo 117


Excel 2013 com VBA

2. Execute o procedimento. Ele será interrompido ao encontrar o ponto de inter-


rupção. Você pode colocar vários pontos de interrupção no procedimento.
3. Pressione F8 para seguir executando linha a linha ou pressione F5 para que o
procedimento seja executado até o próximo ponto de interrupção ou até o seu
final.

Exercício Proposto

Projeto Funcionários

1. Depure os procedimentos criados.


Analise os valores das variáveis.
Corrija os erros.
Verifique se os resultados obtidos são os desejados.

118 Senac São Paulo


excel 2013 com vbA

ANEXOS

anexo a – Eventos

Eventos de Pasta de Trabalho

Evento Ocorrência
Workbook_Activate() Quando a pasta de trabalho torna-se
ativa.
Workbook_Deactivate() Quando o foco passa para outra pasta de
trabalho.
Workbook_Open () Quando a pasta de trabalho é aberta
(padrão).
Workbook_BeforeSave(ByVal SaveAsUI as Quando a pasta de trabalho é salva.
Boolean, Cancel as Boolean)
Workbook_BeforePrint(Cancel as boolean) Quando qualquer comando de impressão
é usado.
Workbook_BeforeClose(Cancel as Quando uma pasta de trabalho é fechada.
Boolean)
Workbook_NewSheet(ByVal Sh As Object) Quando uma nova planilha é adicionada
à pasta de trabalho.
Workbook_WindowResize(ByVal Wn As Quando a pasta de trabalho ativa é
Window) redimensionada.
Workbook_WindowActivate(ByVal Wn As Quando qualquer janela da pasta de
Window) trabalho é ativada.
Workbook_WindowDeactivate(ByVal Wn Quando qualquer janela da pasta de
As Window) trabalho é desativada.

Senac São Paulo 119


Excel 2013 com VBA

Workbook_AddInstall() Quando a pasta de trabalho é instalada


como um suplemento (botão Office –
Opções do Excel).
Workbook_AddInUninstall() Quando a pasta de trabalho (suplemento)
é desinstalada.
Workbook_SheetActivate(ByVal Sh As Quando alguma planilha de gráfico ou
Object) não é ativada.
Workbook_SheetBeforeDoubleClick(By Quando o usuário clica duas vezes em
Val Sh As Object, ByVal Target As Range, uma planilha da pasta de trabalho.
Cancel As Boolean)
Workbook_SheetBeforeRightClick(ByVal Quando o usuário clica com o botão
Sh As Object, ByVal Target As Range, direito do mouse em qualquer planilha da
Cancel As Boolean) pasta de trabalho ativa.
Workbook_SheetCalculate(ByVal Sh As Quando qualquer planilha é recalculada.
Object)
Workbook_SheetChange(ByVal Sh As Quando qualquer intervalo em uma
Object, ByVal Target As Range) planilha é alterado.
Workbook_SheetDeactivate(ByVal Sh As Quando qualquer pasta de trabalho é
Object) desativada.
Workbook_SheetFollowHyperlink(ByVal Quando qualquer hyperlink é clicado.
Sh As Object, ByVal Target As Hyperlink)
Workbook_SheetSelectionChange(ByVal Quando um novo intervalo é selecionado
Sh As Object, ByVal Target As Range) em qualquer planilha.

Eventos de Planilha

Evento Ocorrência
WorkSheet_Activate() Quando a planilha torna-se ativa.

WorkSheet_Deactivate() Quando outra planilha torna-se ativa.

WorkSheet_BeforeDoubleClick(ByVal Quando o usuário clica duas vezes na


Target As Range, Cancel As Boolean) planilha.

WorkSheet_BeforeRightClick(ByVal Target Quando o usuário clica com o botão


As Range, Cancel As Boolean) direito do mouse.
WorkSheet_Calculate() Depois que a planilha é recalculada.

WorkSheet_Change(ByVal Target As Quando há alteração no valor de uma


Range) célula.
(cont.)

120 Senac São Paulo


Excel 2013 com VBA

WorkSheet_SelectionChange(ByVal Target Quando um novo intervalo é selecionado.


As Range)
WorkSheet_FollowHyperlink(ByVal Target Quando o usuário clica em um hyperlink.
As Hyperlink)
Worksheet_PivotTableUpdate(ByVal Target Após um relatório de tabela dinâmica ser
As PivotTable) atualizado em uma planilha.

Eventos de Planilha de Gráfico

Evento Ocorrência
Chart_Activate() Quando uma planilha de gráfico é ativada
ou alterada.
Chart_BeforeDoubleClick(ByVal Quando qualquer parte do gráfico é
ElementID As Long, ByVal Arg1 As Long, clicada duas vezes.
ByVal Arg2 As Long, Cancel As Boolean)
Chart_BeforeRightClick(Cancel as Quando um gráfico é clicado com o
Boolean) botão direito do mouse.
Chart_Calculate() Quando um dado é alterado.
Chart_Deactivate() Quando outra planilha torna-se ativa.
Chart_DragOver() Quando um intervalo é arrastado para um
gráfico.
Chart_DragPlot() Quando um intervalo é arrastado e solto
em um gráfico.
Chart_MouseDown(ByVal Button As Long, Quando o mouse está sobre o gráfico e
ByVal Shift As Long, ByVal x As Long, qualquer botão do mouse é pressionado.
ByVal y As Long)
Chart_MouseMove(ByVal Button As Long, Quando o cursor é movido sobre um
ByVal Shift As Long, ByVal x As long, gráfico.
ByVal y As Long)
Chart_MouseUp(ByVal Button As Long, Quando qualquer botão do mouse é
ByVal Shift As Long, ByVal x As Long, liberado estando o cursor sobre o gráfico.
ByVal y As Long)
Chart_Resize() Quando um gráfico é redimensionado.
Chart_Select(ByVal ElementID As long, Quando um elemento do gráfico é
ByVal Arg1 As long, ByVal Arg2 As Long) selecionado.
Chart_SeriesChange(ByVal SeriesIndex As Quando um ponto de dados do gráfico é
Long, ByVal PointIndex As Long) atualizado.

Senac São Paulo 121


Excel 2013 com VBA

Para gráficos inseridos como objeto, os eventos não estão disponíveis. Você pode tor-
ná-los disponíveis adicionando um módulo de classe e seguindo os passos a seguir:
1. Insira um módulo de classe.
2. Renomeie o módulo para cl_ChartEvents.
3. Insira a linha de código no módulo:

Public WithEvents myChartClass As Chart

4. Insira um módulo padrão e as linhas de código a seguir:


Dim myClassModule as New cl_ChartEvents
Sub InitializeChart()
 Set myClassModule.myChartClass = Worksheets(1).ChartObjects(1).Chart
End Sub

Esse procedimento deve ser executado a cada nova sessão.

122 Senac São Paulo


Excel 2013 com VBA

Anexo B – Funções Traduzidas

BANCO DE DADOS
BDCONTAR DCOUNT
BDCONTARA DCOUNTA
BDDESVPA DSTDEVP
BDEST DSTDEV
BDEXTRAIR DGET
BDMÁX DMAX
BDMÉDIA DAVERAGE
BDMÍN DMIN
BDMULTIPL DPRODUCT
BDSOMA DSUM
BDVAREST DVAR
BDVARP DVARP

CUBO
MEMBROKPICUBO CUBEKPIMEMBER
CONJUNTOCUBO CUBESET

CONTAGEMCONJUNTOCUBO CUBESETCOUNT

MEMBROCLASSIFICADOCUBO CUBERANKEDMEMBER
MEMBROCUBO CUBEMEMBER
PROPRIEDADEMEMBROCUBO CUBEMEMBERPROPERTY
VALORCUBO CUBEVALUE

DATA E HORA
AGORA NOW
ANO YEAR
DATA DATE
DATA.VALOR DATEVALUE
DATAM EDATE
DIA DAY
DIAS
DIA.DA.SEMANA WEEKDAY

Senac São Paulo 123


Excel 2013 com VBA

DIAS360 DAYS360
DIATRABALHO WORKDAY
DIATRABALHO.INTL WORKDAY.INTL
DIATRABALHOTOTAL NETWORKDAYS
DIATRABALHOTOTAL.INTL NETWORKDAYS.INTL
FIMMÊS EOMONTH
FRAÇÃOANO YEARFRAC
HOJE TODAY
HORA HOUR
MÊS MONTH
MINUTO MINUTE
NÚMSEMANA WEEKNUM
NÚMSEMANAISO
SEGUNDO SECOND
TEMPO TIME
VALOR.TEMPO TIMEVALUE

ENGENHARIA
BESSELI BESSELI
BESSELJ BESSELJ
BESSELK BESSELK
BESSELY BESSELY
BINADEC BIN2DEC
BINAHEX BIN2HEX
BINAOCT BIN2OCT
BITAND
BITOR
BITXOR
COMPLEXO COMPLEX
CONVERTER CONVERT
DECABIN DEC2BIN
DECAHEX DEC2HEX
DECAOCT DEC2OCT
DEGRAU GESTEP

124 Senac São Paulo


Excel 2013 com VBA

DELTA DELTA
DESLOCDIRBIT
DESLOCESQBIT
FUNERRO ERF
FUNERRO.PRECISO ERF.PRECISE
FUNERROCOMPL ERFC
FUNERROCOMPL.PRECISO ERFC.PRECISE
HEXABIN HEX2BIN
HEXADEC HEX2DEC
HEXAOCT HEX2OCT
IMABS IMABS
IMAGINÁRIO IMAGINARY
IMARG IMARGUMENT
IMCONJ IMCONJUGATE
IMCOS IMCOS
IMCOSEC
IMCOSECH
IMCOSH
IMCOT
IMDIV IMDIV
IMEXP IMEXP
IMLN IMLN
IMLOG10 IMLOG10
IMLOG2 IMLOG2
IMPOT IMPOWER
IMPROD IMPRODUCT
IMRAIZ IMSQRT
IMREAL IMREAL
IMSEC
IMSECH
IMSENH
IMSENO IMSIN
IMSOMA IMSUM
IMSUBTR IMSUB

Senac São Paulo 125


Excel 2013 com VBA

IMTAN
OCTABIN OCT2BIN
OCTADEC OCT2DEC
OCTAHEX OCT2HEX

ESTATÍSTICA
BETA.ACUM.INV BETAINV
CONT.NÚM COUNT
CONT.SE COUNTIF
CONT.SES COUNTIFS
CONT.VALORES COUNTA
CONTAR.VAZIO COUNTBLANK
CORREL CORREL
COVAR COVAR
COVARIAÇÃO.P COVARIANCE.P
COVARIAÇÃO.S COVARIANCE.S
CRESCIMENTO GROWTH
CRIT.BINOM CRITBINOM
CURT KURT
DESV.MÉDIO AVEDEV
DESVPAD.A STDEV.S
DESVPAD.N STDEV
DESVPAD.P STDEV.P
DESVPADA STDEVA
DESVPADP STDEVP
DESVPADPA STDEVPA
DESVQ DEVSQ
DIST.BETA BETA.DIST
DIST.BIN.NEG NEGBINOMDIST
DIST.BIN.NEG.N NEGBINOM.DIST
DIST.F F.DIST
DIST.F.CD F.DIST.RT
DIST.GAMA GAMMA.DIST
DIST.HIPERGEOM HYPGEOMDIST

126 Senac São Paulo


Excel 2013 com VBA

DIST.HIPERGEOM.N HYPGEOM.DIST
DIST.LOGNORMAL LOGNORMDIST
DIST.LOGNORMAL.N LOGNORM.DIST
DIST.NORM.N NORM.DIST
DIST.NORMP.N NORM.S.DIST
DIST.POISSON POISSON.DIST
DIST.QUI CHIDIST
DIST.QUIQUA CHISQ.DIST
DIST.QUIQUA.CD CHISQ.DIST.RT
DIST.T T.DIST
DIST.T.BC T.DIST.2T
DIST.T.CD T.DIST.RT
DIST.WEIBULL WEIBULL.DIST
DISTBETA BETADIST
DISTEXPON EXPONDIST
DISTF FDIST
DISTGAMA GAMMADIST
DISTNORM NORMDIST
DISTNORMP NORMSDIST
DISTORÇÃO SKEW
DISTORÇÃO.P
DISTR.BINOM BINOM.DIST
DISTR.EXPON EXPON.DIST
DISTRBINOM BINOMDIST
DISTT TDIST
EPADYX STEYX
FISHER FISHER
FISHERINV FISHERINV
FREQUÊNCIA FREQUENCY
GAMA
GAUSS
INCLINAÇÃO SLOPE
INT.CONFIANÇA CONFIDENCE
INT.CONFIANÇA.NORM CONFIDENCE.NORM

Senac São Paulo 127


Excel 2013 com VBA

INT.CONFIANÇA.T CONFIDENCE.T
INT.DISTR.BINOM
INTERCEPÇÃO INTERCEPT
INV.BETA BETA.INV
INV.BINOM BINOM.INV
INV.F F.INV
INV.F.CD F.INV.RT
INV.GAMA GAMMA.INV
INV.LOGNORMAL LOGNORM.INV
INV.NORM NORMINV
INV.NORM.N NORM.INV
INV.NORMP NORMSINV
INV.NORMP.N NORM.S.INV
INV.QUI CHIINV
INV.QUIQUA CHISQ.INV
INV.QUIQUA.CD CHISQ.INV.RT
INV.T T.INV
INV.T.BC T.INV.2T
INVF FINV
INVGAMA GAMMAINV
INVLOG LOGINV
INVT TINV
LNGAMA GAMMALN
LNGAMA.PRECISO GAMMALN.PRECISE
MAIOR LARGE
MÁXIMO MAX
MÁXIMOA MAXA
MED MEDIAN
MÉDIA AVERAGE
MÉDIA.GEOMÉTRICA GEOMEAN
MÉDIA.HARMÔNICA HARMEAN
MÉDIA.INTERNA TRIMMEAN
MÉDIAA AVERAGEA
MÉDIASE AVERAGEIF
MÉDIASES AVERAGEIFS
MENOR SMALL
MÍN MIN
MÍNIMOA MINA
MODO MODE
MODO.MULT MODE.MULT

128 Senac São Paulo


Excel 2013 com VBA

MODO.ÚNICO MODE.SNGL
ORDEM RANK
ORDEM.EQ RANK.EQ
ORDEM.MÉD RANK.AVG
ORDEM.PORCENTUAL PERCENTRANK
ORDEM.PORCENTUAL.EXC PERCENTRANK.EXC
ORDEM.PORCENTUAL.INC PERCENTRANK.INC
PADRONIZAR STANDARDIZE
PEARSON PEARSON
PERCENTIL PERCENTILE
PERCENTIL.EXC PERCENTILE.EXC
PERCENTIL.INC PERCENTILE.INC
PERMUT PERMUT
PERMUTAS
PHI
POISSON POISSON
PREVISÃO FORECAST
PROB PROB
PROJ.LIN LINEST
PROJ.LOG LOGEST
QUARTIL QUARTILE
QUARTIL.EXC QUARTILE.EXC
QUARTIL.INC QUARTILE.INC
RQUAD RSQ
TENDÊNCIA TREND
TESTE.F F.TEST
TESTE.QUI CHITEST
TESTE.QUIQUA CHISQ.TEST
TESTE.T T.TEST
TESTE.Z Z.TEST
TESTEF FTEST
TESTET TTEST
TESTEZ ZTEST
VAR.A VAR.S

Senac São Paulo 129


Excel 2013 com VBA

VAR.P VAR.P
VARA VARA
VAREST VAR
VARP VARP
VARPA VARPA
WEIBULL WEIBULL

FINANCEIRA
AMORDEGRC AMORDEGRC
AMORLINC AMORLINC
BD DB
BDD DDB
BDV VDB
CUPDATAANT COUPPCD
CUPDATAPRÓX COUPNCD
CUPDIAS COUPDAYS
CUPDIASINLIQ COUPDAYBS
CUPDIASPRÓX COUPDAYSNC
CUPNÚM COUPNUM
DESC DISC
DPD SLN
DURAÇÃO DURATION
DURAÇÃOP
EFETIVA EFFECT
ÉPGTO ISPMT
ÉPGTO ISPMT
IPGTO IPMT
JUROSACUM ACCRINT
JUROSACUMV ACCRINTM
LUCRO YIELD
LUCRODESC YIELDDISC
LUCROPRIMINC ODDFYIELD
LUCROÚLTINC ODDLYIELD
LUCROVENC YIELDMAT

130 Senac São Paulo


Excel 2013 com VBA

MDURAÇÃO MDURATION
MOEDADEC DOLLARDE
MOEDAFRA DOLLARFR
MTIR MIRR
NOMINAL NOMINAL
NPER NPER
OTN TBILLEQ
OTNLUCRO TBILLYIELD
OTNVALOR TBILLPRICE
PGTO PMT
PGTOCAPACUM CUMPRINC
PGTOJURACUM CUMIPMT
PPGTO PPMT
PREÇO PRICE
PREÇODESC PRICEDISC
PREÇOPRIMINC ODDFPRICE
PREÇOÚLTINC ODDLPRICE
PREÇOVENC PRICEMAT
RECEBIDO RECEIVED
SDA SYD
TAXA RATE
TAXAJURO
TAXAJUROS INTRATE
TIR IRR
VF FV
VFPLANO FVSCHEDULE
VP PV
VPL NPV
XTIR XIRR
XVPL XNPV

Senac São Paulo 131


Excel 2013 com VBA

INFORMAÇÃO
CÉL CELL
É.NÃO.DISP ISNA
É.NÃO.TEXTO ISNONTEXT
ÉCÉL.VAZIA ISBLANK
ÉERRO ISERR
ÉERROS ISERROR
ÉFÓRMULA
ÉIMPAR ISODD
ÉLÓGICO ISLOGICAL
ÉNÚM ISNUMBER
ÉPAR ISEVEN
ÉREF ISREF
ÉTEXTO ISTEXT
INFORMAÇÃO INFO
N N
NÃO.DISP NA
PLAN
PLANS
TIPO TYPE
TIPO.ERRO ERROR.TYPE

LÓGICAS
E AND
FALSO FALSE
NÃO NOT
OU OR
SE IF
SEERRO IFERROR
SENÃODISP
VERDADEIRO TRUE
XOR

132 Senac São Paulo


Excel 2013 com VBA

MATEMÁTICAS E TRIGONOMÉTRICAS
ABS ABS
ACOS ACOS
ACOSH ACOSH
ACOT
ACOTH
AGREGAR AGGREGATE
ALEATÓRIO RAND
ALEATÓRIOENTRE RANDBETWEEN
ARÁBICO
ARRED ROUND
ARREDMULTB.MAT
ARREDONDAR.PARA.BAIXO ROUNDDOWN
ARREDONDAR.PARA.CIMA ROUNDUP
ASEN ASIN
ASENH ASINH
ATAN ATAN
ATAN2 ATAN2
ATANH ATANH
BASE
COMBIN COMBIN
COMBINA
COS COS
COSEC
COSECH
COSH COSH
COTH
DECIMAL
EXP EXP
FATDUPLO FACTDOUBLE
FATO FACT
GRAUS DEGREES
ÍMPAR ODD
INT INT

Senac São Paulo 133


Excel 2013 com VBA

ISO.TETO ISO.CEILING
LN LN
LOG LOG
LOG10 LOG10
MARRED MROUND
MATRIZ.DETERM MDETERM
MATRIZ.INVERSO MINVERSE
MATRIZ.MULT MMULT
MDC GCD
MMC LCM
MOD MOD
MUNIT
MULTINOMIAL MULTINOMIAL
PAR EVEN
PI PI
POTÊNCIA POWER
PRODUTO PRODUCT
QUOCIENTE QUOTIENT
RADIANOS RADIANS
RAIZ SQRT
RAIZPI SQRTPI
ROMANO ROMAN
SEC
SECH
SEN SIN
SENH SINH
SINAL SIGN
SOMA SUM
SOMAQUAD SUMSQ
SOMARPRODUTO SUMPRODUCT
SOMASE SUMIF
SOMASÉRIE SERIESSUM
SOMASES SUMIFS
SOMAX2DY2 SUMX2MY2

134 Senac São Paulo


Excel 2013 com VBA

SOMAX2SY2 SUMX2PY2
SOMAXMY2 SUMXMY2
SUBTOTAL SUBTOTAL
TAN TAN
TANH TANH
TETO.MAT
TRUNC TRUNC

PESQUISA E REFERÊNCIA
ÁREAS AREAS
COLS COLUMNS
COLUNA COLUMN
CORRESP MATCH
DESLOC OFFSET
ENDEREÇO ADDRESS
ESCOLHER CHOOSE
FÓRMULATEXTO
HIPERLINK HYPERLINK
ÍNDICE INDEX
INDIRETO INDIRECT
INFODADOSTABELADINÂ-
GETPIVOTDATA
MICA
LIN ROW
LINS ROWS
PROC LOOKUP
PROCH HLOOKUP
PROCV VLOOKUP
RTD RTD
TRANSPOR TRANSPOSE

Senac São Paulo 135


Excel 2013 com VBA

TEXTO
ARRUMAR TRIM
BAHTTEXT BAHTTEXT
CARACT CHAR
CARACTUNICODE
CÓDIGO CODE
CONCATENAR CONCATENATE
DIREITA RIGHT
ESQUERDA LEFT
EXATO EXACT
EXT.TEXTO MID
FIXO FIXED
MAIÚSCULA UPPER
MINÚSCULA LOWER
MOEDA DOLLAR
MUDAR REPLACE
NÚM.CARACT LEN
PESQUISAR SEARCH
PRI.MAIÚSCULA PROPER
PROCURAR FIND
REPT REPT
SUBSTITUIR SUBSTITUTE
T T
TEXTO TEXT
TIRAR CLEAN
UNICODE
VALOR VALUE
VALORNUMÉRICO

WEB
CODIFURL
FILTROXML
SERVIÇOWEB

136 Senac São Paulo


Excel 2013 com VBA

Anexo C – Caixas de Diálogo


Podemos escrever instruções nos procedimentos que apresentem uma caixa de diá-
logo interna do Excel.
Cada objeto Dialog representa uma caixa de diálogo interna. Não é possível criar uma
nova caixa de diálogo interna ou adicionar uma à coleção. A única utilidade de um
objeto Dialog é ser usado com o método Show para exibir a caixa de diálogo corres-
pondente ao diálogo.
O objeto Dialog representa uma coleção de todos os objetos Dialog no Microsoft
Excel.
A biblioteca de objetos do Visual Basic do Microsoft Excel inclui constantes inter-
nas para muitas caixas de diálogo internas. Cada constante é formada com o prefixo
“xlDialog” seguido do nome da caixa de diálogo. Por exemplo, a constante da caixa
de diálogo Aplicar Nomes é xlDialogApplyNames, enquanto a constante da caixa de
diálogo Localizar Arquivo é xlDialogFindFile. Essas constantes são membros do tipo
enumerado XlBuiltinDialog.
Exemplo:
Resposta = Application.Dialog(xlDialogFontProperties).Show
A instrução acima apresenta a caixa de diálogo Fonte.

Caixas de diálogo internas e seus argumentos

Constante de caixa de diálogo Lista(s) de argumentos


xlDialogActivate window_text, pane_num
font, font_style, size, strikethrough,
superscript, subscript, outline, shadow,
xlDialogActiveCellFont
underline, color, normal, background,
start_char, char_count
xlDialogAddChartAutoformat name_text, desc_text
operation_num, addinname_text, copy_
xlDialogAddinManager
logical
horiz_align, wrap, vert_align, orientation,
xlDialogAlignment
add_indent
name_array, ignore, use_rowcol, omit_
xlDialogApplyNames
col, omit_row, order_num, append_last
xlDialogApplyStyle style_text
xlDialogAppMove x_num, y_num
xlDialogAppSize x_num, y_num

Senac São Paulo 137


Excel 2013 com VBA

arrange_num, active_doc, sync_horiz,


xlDialogArrangeAll
sync_vert
xlDialogAssignToObject macro_ref
xlDialogAssignToTool bar_id, position, macro_ref
xlDialogAttachText attach_to_num, series_num, point_num
xlDialogAttachToolbars
xlDialogAutoCorrect correct_initial_caps, capitalize_days
x_primary, y_primary, x_secondary, y_se-
xlDialogAxes
condary
xlDialogAxes x_primary, y_primary, z_primary
outline, left, right, top, bottom, shade, ou-
xlDialogBorder tline_color, left_color, right_color, top_co-
lor, bottom_color
type_num, iter, max_num, max_change,
xlDialogCalculation update, precision, date_1904, calc_save,
save_values, alt_exp, alt_form
xlDialogCellProtection locked, hidden
xlDialogChangeLink old_text, new_text, type_of_link
ref, rowcol, titles, categories, replace,
xlDialogChartAddData
series
xlDialogChartLocation
xlDialogChartOptionsDataLabels
xlDialogChartOptionsDataTable
xlDialogChartSourceData
type, ord_per, forecast, backcast, inter-
xlDialogChartTrend
cept, equation, r_squared, name
xlDialogChartType
long, ref, gallery_num, type_num, plot_by,
categories, ser_titles, legend, title, x_title,
xlDialogChartWizard
y_title, z_title, number_cats, number_ti-
tles
value, link, accel_text, accel2_text, 3d_
xlDialogCheckboxProperties
shading
xlDialogClear type_num
xlDialogColorPalette file_text
width_num, reference, standard, type_
xlDialogColumnWidth
num, standard_num
xlDialogCombination type_num

138 Senac São Paulo


Excel 2013 com VBA

xlDialogConditionalFormatting
source_refs, function_num, top_row, left_
xlDialogConsolidate
col, create_links
xlDialogCopyChart size_num
xlDialogCopyPicture appearance_num, size_num, type_num
xlDialogCreateNames top, left, bottom, right
xlDialogCreatePublisher file_text, appearance, size, formats
xlDialogCustomizeToolbar category
xlDialogCustomViews
xlDialogDataDelete
xlDialogDataLabel show_option, auto_text, show_key
rowcol, type_num, date_num, step_value,
xlDialogDataSeries
stop_value, trend
xlDialogDataValidation
name_text, refers_to, macro_type, short-
xlDialogDefineName
cut_text, hidden, category, local
style_text, number, font, alignment, bor-
xlDialogDefineStyle
der, pattern, protection
style_text, attribute_num, additional_def_
xlDialogDefineStyle
args, ...
xlDialogDeleteFormat format_text
xlDialogDeleteName name_text
xlDialogDemote row_col
formulas, gridlines, headings, zeros, co-
xlDialogDisplay lor_num, reserved, outline, page_breaks,
object_num
cell, formula, value, format, protection,
xlDialogDisplay
names, precedents, dependents, note
validation_num, multiline_logical, vs-
xlDialogEditboxProperties
croll_logical, password_logical
color_num, red_value, green_value, blue_
xlDialogEditColor
value
xlDialogEditDelete shift_num
edition_type, edition_name, reference,
xlDialogEditionOptions
option, appearance, size, formats
series_num, name_ref, x_ref, y_ref, z_ref,
xlDialogEditSeries
plot_order

Senac São Paulo 139


Excel 2013 com VBA

xlDialogErrorbarX include, type, amount, minus


xlDialogErrorbarY include, type, amount, minus
xlDialogExternalDataProperties
xlDialogExtract unique
xlDialogFileDelete file_text
xlDialogFileSharing
xlDialogFillGroup type_num
xlDialogFillWorkgroup type_num
xlDialogFilter
operation, list_ref, criteria_ref, copy_ref,
xlDialogFilterAdvanced
unique
xlDialogFindFile
xlDialogFont name_text, size_num
font, font_style, size, strikethrough,
superscript, subscript, outline, shadow,
xlDialogFontProperties
underline, color, normal, background,
start_char, char_count
format_num, number, font, alignment,
xlDialogFormatAuto
border, pattern, width
layer_num, view, overlap, angle, gap_wi-
dth, gap_depth, chart_depth, dough-
xlDialogFormatChart
nut_size, axis_num, drop, hilo, up_down,
series_line, labels, vary
apply_to, group_num, dimension, type_
xlDialogFormatCharttype
num
color, backgd, apply, name_text, size_
num, bold, italic, underline, strike,
xlDialogFormatFont
outline, shadow, object_id, start_num,
char_num
name_text, size_num, bold, italic, under-
xlDialogFormatFont
line, strike, color, outline, shadow
name_text, size_num, bold, italic, under-
xlDialogFormatFont line, strike, color, outline, shadow, ob-
ject_id_text, start_num, char_num
xlDialogFormatLegend position_num
type_num, view, overlap, gap_width, vary,
drop, hilo, angle, gap_depth, chart_dep-
xlDialogFormatMain
th, up_down, series_line, labels, dough-
nut_size

140 Senac São Paulo


Excel 2013 com VBA

xlDialogFormatMove x_offset, y_offset, reference


xlDialogFormatMove x_pos, y_pos
xlDialogFormatMove explosion_num
xlDialogFormatNumber format_text
type_num, view, overlap, gap_width, vary,
drop, hilo, angle, series_dist, series_num,
xlDialogFormatOverlay
up_down, series_line, labels, doughnut_
size
xlDialogFormatSize width, height
xlDialogFormatSize x_off, y_off, reference
x_align, y_align, orient_num, auto_text,
xlDialogFormatText auto_size, show_key, show_value, add_
indent
text, in_num, at_num, by_num, dir_num,
xlDialogFormulaFind
match_case, match_byte
xlDialogFormulaGoto reference, corner
find_text, replace_text, look_at, look_by,
xlDialogFormulaReplace
active_cell, match_case, match_byte
xlDialogFunctionWizard
xlDialogGallery3dArea type_num
xlDialogGallery3dBar type_num
xlDialogGallery3dColumn type_num
xlDialogGallery3dLine type_num
xlDialogGallery3dPie type_num
xlDialogGallery3dSurface type_num
xlDialogGalleryArea type_num, delete_overlay
xlDialogGalleryBar type_num, delete_overlay
xlDialogGalleryColumn type_num, delete_overlay
xlDialogGalleryCustom name_text
xlDialogGalleryDoughnut type_num, delete_overlay
xlDialogGalleryLine type_num, delete_overlay
xlDialogGalleryPie type_num, delete_overlay
xlDialogGalleryRadar type_num, delete_overlay
xlDialogGalleryScatter type_num, delete_overlay
xlDialogGoalSeek target_cell, target_value, variable_cell
x_major, x_minor, y_major, y_minor, z_
xlDialogGridlines
major, z_minor, 2D_effect

Senac São Paulo 141


Excel 2013 com VBA

xlDialogImportTextFile
xlDialogInsert shift_num
xlDialogInsertHyperlink
xlDialogInsertNameLabel
object_class, file_name, link_logical, dis-
xlDialogInsertObject play_icon_logical, icon_file, icon_num-
ber, icon_label
xlDialogInsertPicture file_name, filter_number
chart, y_primary, x_primary, y_secondary,
xlDialogInsertTitle
x_secondary
xlDialogLabelProperties accel_text, accel2_text, 3d_shading
range, link, drop_size, multi_select, 3d_
xlDialogListboxProperties
shading
macro_name, description, menu_on,
menu_text, shortcut_on, shortcut_key,
xlDialogMacroOptions
function_category, status_bar_text, help_
id, help_file
to_recipients, cc_recipients, bcc_reci-
xlDialogMailEditMailer
pients, subject, enclosures, which_address
name_text, password_text, download_lo-
xlDialogMailLogon
gical
xlDialogMailNextLetter
type_num, stack, 100, vary, overlap, drop,
xlDialogMainChart
hilo, overlap%, cluster, angle
xlDialogMainChartType type_num
xlDialogMenuEditor
xlDialogMove x_pos, y_pos, window_text
xlDialogNew type_num, xy_series, add_logical
xlDialogNewWebQuery
xlDialogNote add_text, cell_ref, start_char, num_chars
xlDialogObjectProperties placement_type, print_object
xlDialogObjectProtection locked, lock_text
file_text, update_links, read_only, format,
prot_pwd, write_res_pwd, ignore_rorec,
xlDialogOpen file_origin, custom_delimit, add_logical,
editable, file_access, notify_logical, con-
verter

142 Senac São Paulo


Excel 2013 com VBA

document_text1, document_text2, ...,


xlDialogOpenLinks
read_only, type_of_link
xlDialogOpenMail subject, comments
file_name, file_origin, start_row, file_type,
text_qualifier, consecutive_delim, tab,
xlDialogOpenText
semicolon, comma, space, other, other_
char, field_info
type_num, iter, max_num, max_change,
xlDialogOptionsCalculation update, precision, date_1904, calc_save,
save_values
display_blanks, plot_visible, size_with_
xlDialogOptionsChart
window
incell_edit, drag_drop, alert, entermove,
fixed, decimals, copy_objects, upda-
xlDialogOptionsEdit
te_links, move_direction, autocomplete,
animations
R1C1_mode, dde_on, sum_info, tips,
recent_files, old_menus, user_info, font_
xlDialogOptionsGeneral
name, font_size, default_location, alterna-
te_location, sheet_num, enable_under
xlDialogOptionsListsAdd string_array
xlDialogOptionsListsAdd import_ref, by_row
def_rtl_sheet, crsr_mvmt, show_ctrl_char,
xlDialogOptionsME
gui_lang
menu_key, menu_key_action, nav_keys,
xlDialogOptionsTransition
trans_eval, trans_entry
formula, status, notes, show_info, ob-
ject_num, page_breaks, formulas, gridli-
xlDialogOptionsView
nes, color_num, headers, outline, zeros,
hor_scroll, vert_scroll, sheet_tabs
xlDialogOutline auto_styles, row_dir, col_dir, create_apply
type_num, stack, 100, vary, overlap, drop,
xlDialogOverlay hilo, overlap%, cluster, angle, series_num,
auto
xlDialogOverlayChartType type_num
head, foot, left, right, top, bot, hdng, grid,
h_cntr, v_cntr, orient, paper_size, scale,
xlDialogPageSetup
pg_num, pg_order, bw_cells, quality,
head_margin, foot_margin, notes, draft

Senac São Paulo 143


Excel 2013 com VBA

head, foot, left, right, top, bot, size,


h_cntr, v_cntr, orient, paper_size, scale,
xlDialogPageSetup
pg_num, bw_chart, quality, head_margin,
foot_margin, draft
head, foot, left, right, top, bot, orient,
xlDialogPageSetup paper_size, scale, quality, head_margin,
foot_margin, pg_num
xlDialogParse parse_text, destination_ref
xlDialogPasteNames
paste_num, operation_num, skip_blanks,
xlDialogPasteSpecial
transpose
xlDialogPasteSpecial rowcol, titles, categories, replace, series
xlDialogPasteSpecial paste_num
format_text, pastelink_logical, display_
xlDialogPasteSpecial icon_logical, icon_file, icon_number,
icon_label
xlDialogPatterns apattern, afore, aback, newui
lauto, lstyle, lcolor, lwt, hwidth, hlength,
xlDialogPatterns
htype
bauto, bstyle, bcolor, bwt, shadow, aauto,
xlDialogPatterns
apattern, afore, aback, rounded, newui
bauto, bstyle, bcolor, bwt, shadow, aauto,
xlDialogPatterns apattern, afore, aback, invert, apply,
newfill
lauto, lstyle, lcolor, lwt, tmajor, tminor,
xlDialogPatterns
tlabel
xlDialogPatterns lauto, lstyle, lcolor, lwt, apply, smooth
lauto, lstyle, lcolor, lwt, mauto, mstyle,
xlDialogPatterns
mfore, mback, apply, smooth
xlDialogPatterns type, picture_units, apply
xlDialogPhonetic
xlDialogPivotCalculatedField

xlDialogPivotCalculatedItem
xlDialogPivotClientServerSet
xlDialogPivotFieldGroup start, end, by, periods
name, pivot_field_name, new_name,
xlDialogPivotFieldProperties
orientation, function, formats

144 Senac São Paulo


Excel 2013 com VBA

xlDialogPivotFieldUngroup
xlDialogPivotShowPages name, page_field
xlDialogPivotSolveOrder
xlDialogPivotTableOptions
type, source, destination, name, row_
xlDialogPivotTableWizard grand, col_grand, save_data, apply_auto_
format, auto_page, reserved
xlDialogPlacement placement_type
range_num, from, to, copies, draft, pre-
view, print_what, color, feed, quality,
xlDialogPrint
y_resolution, selection, printer_text, print_
to_file, collate
xlDialogPrinterSetup printer_text
xlDialogPrintPreview
xlDialogPromote rowcol
xlDialogProperties title, subject, author, keywords, comments
contents, windows, password, objects,
xlDialogProtectDocument
scenarios
xlDialogProtectSharing
xlDialogPublishAsWebPage
default_logical, cancel_logical, dis-
xlDialogPushbuttonProperties miss_logical, help_logical, accel_text,
accel_text2
font_num, name_text, size_num, bold,
xlDialogReplaceFont italic, underline, strike, color, outline,
shadow
recipients, subject, message, route_num,
xlDialogRoutingSlip
return_logical, status_logical
height_num, reference, standard_height,
xlDialogRowHeight
type_num
xlDialogRun reference, step
document_text, type_num, prot_pwd,
xlDialogSaveAs
backup, write_res_pwd, read_only_rec
xlDialogSaveCopyAs document_text
xlDialogSaveNewObject
document_text, type_num, prot_pwd,
xlDialogSaveWorkbook
backup, write_res_pwd, read_only_rec
xlDialogSaveWorkspace name_text

Senac São Paulo 145


Excel 2013 com VBA

cross, cat_labels, cat_marks, between,


xlDialogScale
max, reverse
min_num, max_num, major, minor, cross,
xlDialogScale
logarithmic, reverse, max
xlDialogScale cat_labels, cat_marks, reverse, between
xlDialogScale series_labels, series_marks, reverse
min_num, max_num, major, minor, cross,
xlDialogScale
logarithmic, reverse, min
scen_name, value_array, changing_ref,
xlDialogScenarioAdd
scen_comment, locked, hidden
xlDialogScenarioCells changing_ref
scen_name, new_scenname, value_array,
xlDialogScenarioEdit changing_ref, scen_comment, locked,
hidden
xlDialogScenarioMerge source_file
xlDialogScenarioSummary result_ref, report_type
value, min, max, inc, page, link, 3d_sha-
xlDialogScrollbarProperties
ding
xlDialogSelectSpecial type_num, value_type, levels
xlDialogSendMail recipients, subject, return_receipt
xlDialogSeriesAxes axis_num
xlDialogSeriesOptions
chart_num, old_series_num, new_se-
xlDialogSeriesOrder
ries_num
xlDialogSeriesShape
xlDialogSeriesX x_ref
xlDialogSeriesY name_ref, y_ref
xlDialogSetBackgroundPicture
xlDialogSetPrintTitles titles_for_cols_ref, titles_for_rows_ref
xlDialogSetUpdateStatus link_text, status, type_of_link
xlDialogShowDetail rowcol, rowcol_num, expand, show_field
bar_id, visible, dock, x_pos, y_pos, width,
xlDialogShowToolbar protect, tool_tips, large_buttons, color_
buttons
xlDialogSize width, height, window_text
orientation, key1, order1, key2, order2,
xlDialogSort
key3, order3, header, custom, case

146 Senac São Paulo


Excel 2013 com VBA

xlDialogSort orientation, key1, order1, type, custom


sort_by, method, key1, order1, key2, or-
xlDialogSortSpecial
der2, key3, order3, header, order, case
xlDialogSplit col_split, row_split
name_text, size_num, bold, italic, under-
xlDialogStandardFont
line, strike, color, outline, shadow
xlDialogStandardWidth standard_num
xlDialogStyle bold, italic
xlDialogSubscribeTo file_text, format_num
at_change_in, function_num, total, repla-
xlDialogSubtotalCreate
ce, pagebreaks, summary_below
xlDialogSummaryInfo title, subject, author, keywords, comments
xlDialogTable row_ref, column_ref
xlDialogTabOrder
destination_ref, data_type, text_delim,
xlDialogTextToColumns consecutive_delim, tab, semicolon, com-
ma, space, other, other_char, field_info
xlDialogUnhide window_text
xlDialogUpdateLink link_text, type_of_link
xlDialogVbaInsertFile filename_text
xlDialogVbaMakeAddIn
xlDialogVbaProcedureDefinition
elevation, perspective, rotation, axes, hei-
xlDialogView3d
ght%, autoscale
xlDialogWebOptionsEncoding
xlDialogWebOptionsFiles
xlDialogWebOptionsFonts
xlDialogWebOptionsGeneral
xlDialogWebOptionsPictures
xlDialogWindowMove x_pos, y_pos, window_text
xlDialogWindowSize width, height, window_text
xlDialogWorkbookAdd name_array, dest_book, position_num
xlDialogWorkbookCopy name_array, dest_book, position_num
xlDialogWorkbookInsert type_num
xlDialogWorkbookMove name_array, dest_book, position_num
xlDialogWorkbookName oldname_text, newname_text

Senac São Paulo 147


Excel 2013 com VBA

xlDialogWorkbookNew
xlDialogWorkbookOptions sheet_name, bound_logical, new_name
xlDialogWorkbookProtect structure, windows, password
xlDialogWorkbookTabSplit ratio_num
xlDialogWorkbookUnhide sheet_text
xlDialogWorkgroup name_array
fixed, decimals, r1c1, scroll, status,
formula, menu_key, remote, entermove,
xlDialogWorkspace
underlines, tools, notes, nav_keys, menu_
key_action, drag_drop, show_info
xlDialogZoom magnification

148 Senac São Paulo


Excel 2013 com VBA

Anexo D – Erros Interceptáveis


Código Mensagem
3 Retornar sem GoSub.
5 Chamada de procedimento inválida.
6 Estouro.
7 Sem memória.
9 Subscrito fora do intervalo.
10 Esta matriz está fixa ou temporariamente bloqueada.
11 Divisão por zero.
13 Tipos incompatíveis.
14 Sem espaço para sequência de caracteres.
16 Expressão muito complexa.
17 Não é possível executar a operação solicitada.
18 Ocorreu uma interrupção do usuário.
20 Continuar sem erro.
28 Sem espaço para pilha.
35 Sub, Function ou Property não definido.
47 Clientes de aplicativo da DLL ou de recurso de código em excesso.
48 Erro ao carregar recurso de código ou DLL.
49 Convenção de chamada de recurso de código ou DLL incorreta.
51 Erro interno.
52 Nome ou número de arquivo incorreto.
53 Arquivo não encontrado.
54 Modo de arquivo incorreto.
55 Arquivo já aberto.
57 Erro de E/S do dispositivo.
58 O arquivo já existe.
59 Comprimento de registro incorreto.
61 Disco cheio.
62 Entrada após fim de arquivo.
63 Número de registro incorreto.
67 Arquivos em excesso.
68 Dispositivo não disponível.
70 Permissão negada.

Senac São Paulo 149


Excel 2013 com VBA

71 Disco não está pronto.


74 Não é possível renomear com unidade diferente.
75 Erro de acesso ao Caminho/Arquivo.
76 Caminho não encontrado.
91 Variável Object ou variável de bloco With não definida.
92 For Loop não inicializado.
93 Sequência de caracteres padrão inválida.
94 Uso de Null inválido.
97 Não é possível chamar o procedimento Friend ou um objeto que não seja
uma ocorrência da classe de definição.
98 Uma chamada de propriedade ou método não pode incluir uma referência
a um objeto particular, tanto como um argumento ou como um valor de
retorno.
298 O recurso ou DLL do sistema não pôde ser carregado.
320 Não é possível usar nomes de dispositivo de caracteres em nomes de arqui-
vo especificados.
321 Formato de arquivo inválido.
322 Não é possível criar o arquivo temporário necessário.
325 Formato inválido no arquivo de recursos.
327 Valor de dados nomeado não encontrado.
328 Parâmetro não permitido; não é possível gravar matrizes.
335 Não foi possível acessar o Registro do sistema.
336 Componente não registrado corretamente.
337 Componente não encontrado.
338 O componente não foi executado corretamente.
360 Objeto já carregado.
361 Não é possível carregar ou descarregar este objeto.
363 Controle especificado não encontrado.
364 O objeto foi descarregado.
365 Não é possível descarregar dentro deste contexto.
368 O arquivo especificado está desatualizado. Este programa requer uma ver-
são mais recente.
371 O objeto especificado não pode ser usado como um formulário de proprie-
tário para Show.
380 Valor de propriedade inválido.
381 Índice de matriz de propriedades inválido.

150 Senac São Paulo


Excel 2013 com VBA

382 Property Set não pode ser executado em tempo de execução.


383 Property Set não pode ser usado com uma propriedade somente leitura.
385 É necessário o índice de matriz de propriedades.
387 Property Set não permitido.
393 Property Get não pode ser executado em tempo de execução.
394 Property Get não pode ser executado na propriedade somente gravação.
400 O formulário já está sendo exibido; não é possível exibir de forma modal.
402 O código deve fechar primeiro o formulário modal superior.
419 Permissão para usar o objeto negada.
422 Propriedade não encontrada.
423 Propriedade ou método não encontrado.
424 Objeto obrigatório.
425 Uso inválido de objeto.
429 O componente não pode criar objeto ou referência de retorno para este
objeto.
430 A classe não suporta Automação.
432 Nome do arquivo ou nome da classe não encontrado durante a operação
de Automação.
438 O objeto não suporta esta propriedade ou método.
440 Erro de automação.
442 A conexão com a biblioteca de tipos ou biblioteca de objetos para o pro-
cesso remoto foi perdida.
443 O objeto de automação não possui um valor padrão.
445 O objeto não suporta esta ação.
446 O objeto não suporta argumentos nomeados.
447 O objeto não aceita a definição de localidade atual.
448 Argumento nomeado não encontrado.
449 Argumento não opcional ou atribuição de propriedade inválida.
450 Número incorreto de argumentos ou atribuição de propriedade inválida.
451 O objeto, não uma coleção.
452 Ordinal inválido.
453 Código de especificado não encontrado.
454 Recurso de código não encontrado.
455 Erro de bloqueio do recurso de código.
457 Esta chave já está associada a um elemento desta coleção.

Senac São Paulo 151


Excel 2013 com VBA

458 A variável usa um tipo não suportado no Visual Basic.


459 Este componente não suporta o conjunto de eventos.
460 Formato inválido da Área de transferência.
461 Método ou membro de dados não encontrado.
462 A máquina do servidor remoto não existe ou não está disponível.
463 Classe não registrada na máquina local.
480 Não é possível criar uma imagem AutoRedraw.
481 Figura inválida.
482 Erro na impressora.
483 A propriedade especificada não é suportada pelo driver da impressora.
484 Problemas ao obter informações da impressora a partir do sistema. Certifi-
que-se de que a impressora esteja configurada corretamente.
485 Tipo de figura inválido.
486 Não é possível imprimir a imagem do formulátio neste tipo de impressora.
520 Não é possível esvaziar a Área de transferência.
521 Não é possível abrir a Área de transferência.
735 Não é possível salvar arquivo no diretório TEMP.
744 Texto de pesquisa não encontrado.
746 Substituições muito longas.
31001 Sem memória.
31004 Nenhum objeto.
31018 A classe não está definida.
31027 Não é possível ativar o objeto.
31032 Não é possível criar objeto incorporado.
31036 Erro ao salvar no arquivo.
31037 Erro ao carregar do arquivo.

152 Senac São Paulo


excel 2013 com vbA

REFERÊNCIAS BIBLIOGRÁFICAS

jelen, b. e SYrStAd, t. VBa e Macros: Microsoft Excel 2010. rio de janeiro, Alfa books, 2012.

mAnzAno, j. A. n.G. e mAnzAno, A. l. n.G. Excel 2013 avançado. São Paulo, editora érica, 2013.

Senac São Paulo 153

Você também pode gostar