Anda di halaman 1dari 55

TORCH Engenharia e Computação Gráfica

CURSO VBA EXCEL


Apostila Excel VBA

INTRODUÇÃO

Esta apostila foi desenvolvida pela TORCH Engenharia e Computação Gráfica para apoio ao aluno
durante o desenvolvimento do curso de Excel com VBA.

O curso introduz o estudo da utilização do VBA na otimização de tarefas do Excel, destacando a


construção de Macros e Funções de Usuário.

Abrange os conceitos fundamentais para criação de macros e funções interagindo com o Excel.

O conteúdo programático deste curso foi projetado com o propósito de, ao final do curso, tornar o
aluno apto a desenvolver macros e funções aplicadas para o Excel, com objetivo de otimizar suas
tarefas na realização dos seus trabalhos.

Salvador: (71) 3272-6612 contato@torch.eng.br


2
www.torch.eng.br
Apostila Excel VBA

SUMÁRIO
INTRODUÇÃO....................................................................................................................................................... 2
SUMÁRIO ............................................................................................................................................................. 3
CAPÍTULO 1 .......................................................................................................................................................... 5
Apresentação do Excel com VBA ..................................................................................................................... 5
Como Criar Macros. ......................................................................................................................................... 6
Gravando Uma Macro ..................................................................................................................................... 6
O Editor do Visual Basic ................................................................................................................................... 7
Associando Uma Macro ................................................................................................................................... 8
Exercícios: ...................................................................................................................................................... 12
CAPÍTULO 2 ........................................................................................................................................................ 14
O Ambiente de Programação (Editor VBA) ................................................................................................... 14
Editando Uma Macro..................................................................................................................................... 16
Estrutura de Uma Macro ............................................................................................................................... 17
Nível de Acesso de Uma Sub ou Function (Escopo) ...................................................................................... 17
Passagem de Parâmetros (ByRef / ByVal) ..................................................................................................... 18
Declaração de Variáveis e Constantes........................................................................................................... 18
Escopo de Variáveis e Constantes ................................................................................................................. 20
Criando Funções de Usuário .......................................................................................................................... 21
Exercícios: ...................................................................................................................................................... 22
CAPÍTULO 3 ........................................................................................................................................................ 23
Comandos de Interação Com o Usuário ........................................................................................................ 23
MsgBox ...................................................................................................................................................... 23
Concatenação e Quebra de linha .............................................................................................................. 25
InputBox .................................................................................................................................................... 26
Funções do VBA ............................................................................................................................................. 27
Funções de Conversão de Tipo .................................................................................................................. 27
CDbl ....................................................................................................................................................... 27
CSng ....................................................................................................................................................... 27
CLng ....................................................................................................................................................... 27
CInt ........................................................................................................................................................ 27
CStr ........................................................................................................................................................ 27
Funções de Informação ............................................................................................................................. 27
IsNumeric............................................................................................................................................... 27
IsDate ..................................................................................................................................................... 27
IsNull ...................................................................................................................................................... 27
Is Nothing............................................................................................................................................... 27
VarType.................................................................................................................................................. 27
Funções de Manuseio de Strings ............................................................................................................... 28
Left ......................................................................................................................................................... 28
Right....................................................................................................................................................... 28
Mid......................................................................................................................................................... 28
Len ......................................................................................................................................................... 28
UCase ..................................................................................................................................................... 28
LCase ...................................................................................................................................................... 28
Instr........................................................................................................................................................ 28
Funções Diversas ....................................................................................................................................... 28
Int........................................................................................................................................................... 28
Round .................................................................................................................................................... 28
MOD....................................................................................................................................................... 29

Salvador: (71) 3272-6612 contato@torch.eng.br


3
www.torch.eng.br
Apostila Excel VBA

DIR ......................................................................................................................................................... 29
ASC ......................................................................................................................................................... 29
CHR ........................................................................................................................................................ 29
Exercícios: ...................................................................................................................................................... 29
CAPÍTULO 4 ........................................................................................................................................................ 30
Comandos de Estrutura de Decisão .............................................................................................................. 30
Condição Simples - If / Then / End If ......................................................................................................... 30
Condição Composta - If / Then / Else/ End If............................................................................................. 30
Condição Encadeada - If / Then / ElseIf / Else / End If .............................................................................. 30
Múltipla Escolha – Select / Case / Case Else / End Select.......................................................................... 31
Operadores Lógicos And / Or / Not ........................................................................................................... 31
Exercícios: ...................................................................................................................................................... 32
CAPÍTULO 5 ........................................................................................................................................................ 33
Comandos de Estrutura de Repetição (Laços)............................................................................................... 33
Do While / Loop ou Do / Loop While......................................................................................................... 33
Do Until / Loop ou Do / Loop Until ............................................................................................................ 33
Repetição com variável de controle - For / Next....................................................................................... 34
Repetição com objetos de coleção For Each / Next .................................................................................. 34
Exercícios: ...................................................................................................................................................... 35
CAPÍTULO 6 ........................................................................................................................................................ 36
Manipulando Objetos do Excel...................................................................................................................... 36
Coleção Workbooks / Objeto Workbook .................................................................................................. 36
Coleção WorkSheets / Objeto WorkSheet ................................................................................................ 37
Objeto Range ............................................................................................................................................. 38
Objeto Cells ............................................................................................................................................... 39
Eventos de Objetos Excel .............................................................................................................................. 40
Exercícios: ...................................................................................................................................................... 41
CAPÍTULO 7 ........................................................................................................................................................ 42
Formulários de Usuários(UserForms)............................................................................................................ 42
Adicionando um Formulário e Inserindo Controles ...................................................................................... 42
Propriedades e Métodos dos Controles ........................................................................................................ 45
Eventos dos Controles ................................................................................................................................... 48
Exercícios: ...................................................................................................................................................... 49
CAPÍTULO 8 ........................................................................................................................................................ 50
Validação de Dados ....................................................................................................................................... 50
Tratamento de Erros...................................................................................................................................... 52
Comando On Error Goto ... / Resume ....................................................................................................... 52
Exercícios: ...................................................................................................................................................... 53
EXERCÍCIO DE REVISÃO...................................................................................................................................... 54

Salvador: (71) 3272-6612 contato@torch.eng.br


4
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 1

Apresentação do Excel com VBA

VBA é a abreviação de Visual Basic for Applications e é uma linguagem de programação derivada do
Visual Basic e incorporada nos componentes do pacote de aplicativos Microsoft Office. Para cada
elemento do pacote Office o VBA apresenta objetos específicos para serem manuseados por meio
de programação.

O VBA fornece meios de automatizar praticamente tudo que é possível fazer manualmente. Através
de códigos de programação é possível acessar e manipular os objetos disponíveis no Excel, ou seja,
pastas de trabalho, guias de planilhas, células, gráficos, etc. A essa automatização de tarefas por
meio de programação damos o nome de macro, para ser mais específico, chamamos de macro o
processo em que a chamada de um programa pré-definido realiza atividades que poderiam ser
realizadas manualmente.

Utilizando o recurso de macros no Excel podemos desenvolver funções personalizadas; criar


formulários de entrada de dados; realizar a validação de dados digitados nas planilhas; automatizar
tarefas repetitivas como formatações, exclusões e inserções de dados, entre outras coisas.

Antes de começarmos a utilizar macros no Excel é preciso exibir a barra de ferramentas


“Desenvolvedor”, para isso clique na opção “Arquivo – Opções”, na janela que será exibida
selecione a opção “Personalizar Faixa de Opções” e ative a guia “Desenvolvedor”

Salvador: (71) 3272-6612 contato@torch.eng.br


5
www.torch.eng.br
Apostila Excel VBA

Após ativar a barra de ferramentas “Desenvolvedor” será possível ver as opções relacionadas às
macros que o Excel disponibiliza:

Como Criar Macros.

Existem duas maneiras de criarmos uma macro no Excel: utilizando o gravador de macros ou
escrevendo toda a codificação necessária diretamente no Editor do Visual Basic.

Gravando Uma Macro

Para gravar uma macro clique o botão “Gravar Macro”. Na janela que será exibida
digite o nome da macro, escolha a tecla de atalho que irá executar a macro, defina onde a macro
será armazenada e, opcionalmente, digite um texto que descreva a finalidade da macro. A partir do
momento em que o botão “Ok” for clicado o Excel irá registrar tudo que for feito e só irá parar
quando o botão “Parar Gravação” for clicado.

OBS: Será escrito um programa na linguagem VBA contendo comandos para executar todos os
procedimentos que foram executados durante o processo de gravação. Posteriormente esse
programa poderá ser editado.

Salvador: (71) 3272-6612 contato@torch.eng.br


6
www.torch.eng.br
Apostila Excel VBA

As opções de local de armazenamento das macros são:

 Esta pasta de trabalho – a macro será gravada e só poderá ser utilizada na pasta de
trabalho atual.

 Nova pasta de trabalho – o Excel irá criar uma nova pasta e a macro será associada a essa
nova pasta.

 Pasta de trabalho pessoal de macros – a macro será criada em uma pasta disponibilizada
pelo Excel especificamente para o armazenamento de macros e estará disponível para
utilização em qualquer pasta que estiver sendo utilizada.

O Editor do Visual Basic

A outra forma de criarmos uma macro é utilizando o Editor do Visual Basic para escrever o código
necessário.

Esse procedimento será mais bem detalhado nos próximos capítulos.

Salvador: (71) 3272-6612 contato@torch.eng.br


7
www.torch.eng.br
Apostila Excel VBA

Associando Uma Macro

Depois de criada a macro, seja pelo Gravador de Macros ou pelo Editor do Visual Basic, podemos
associá-la a um botão na barra de ferramentas, a um botão criado na planilha ou a qualquer
desenho inserido na planilha.

Veremos inicialmente como associar uma macro a um botão na barra de ferramentas:

O primeiro passo é criar a sua própria guia de opções, para isso clique na opção “Arquivos –
Opções”, na janela que será exibida selecione a opção “Personalizar Faixa de Opções”, clique o
botão “Nova Guia”. Selecione a nova guia criada, clique o botão “Renomear” e defina um nome
para a guia.

Salvador: (71) 3272-6612 contato@torch.eng.br


8
www.torch.eng.br
Apostila Excel VBA

Ainda na mesma tela, na opção “Escolher comandos em:” selecione a opção Macros

Serão exibidas todas as macros que estiverem disponíveis na pasta de trabalho atual ou na pasta
de trabalho pessoal de macros. Selecione o “Novo Grupo(Personalizado)” na guia recém criada e
adicione a sua macro ao grupo clicando o botão “Adicionar >>”

O resultado final deverá ser:

Salvador: (71) 3272-6612 contato@torch.eng.br


9
www.torch.eng.br
Apostila Excel VBA

Veremos agora como associar uma macro a um botão criado na planilha:

Na guia de opções “Desenvolvedor” clique o botão “Inserir” e selecione a opção “Botão (Controle de
Formulário)”.

Após desenhar o botão no local desejado da planilha será exibida uma janela onde você poderá
criar uma nova macro utilizando um dos dois métodos já mostrados ou escolher uma das macros
previamente criadas para associar ao botão.

Salvador: (71) 3272-6612 contato@torch.eng.br


10
www.torch.eng.br
Apostila Excel VBA

Por fim veremos como associar uma macro a uma autoforma ou a qualquer imagem ou objeto que
esteja inserido na planilha:

Clique com o botão direito do mouse na autoforma, imagem, gráfico ou objeto e selecione a opção
“Atribuir Macro...”

Será exibida a janela “Atribuir macro” onde é possível criar uma nova macro ou associar o objeto
selecionado a uma macro previamente criada.

Salvador: (71) 3272-6612 contato@torch.eng.br


11
www.torch.eng.br
Apostila Excel VBA

Exercícios:

1) Grave uma macro com o nome “FormatarFonte”, associada a combinação de teclas “Ctrl
+Shift + F” e que aplique a seguinte formatação à(s) célula(s) selecionada(s):

2) Crie duas planilhas conforme os modelos abaixo onde na planilha “Vendas” a coluna “E”
totaliza as vendas do primeiro trimestre e a coluna “I” as vendas do segundo trimestre; na
planilha comissões as colunas “C” e “E” devem exibir o valor de comissão de 5% sobre o
primeiro e segundo semestre respectivamente.

Salvador: (71) 3272-6612 contato@torch.eng.br


12
www.torch.eng.br
Apostila Excel VBA

3) Grave uma macro com o nome “CopiaVendas” que copie os nomes das vendedoras e os
valores do primeiro e do segundo semestre da planilha “Vendas” para a planilha
“Comissões”, associe a macro à combinação de teclas “Ctrl + Shift + K”.

4) Grave uma macro com o nome “ExcluiDados”, associada a combinação de teclas “Ctrl +Shift
+ D” e que exclua os dados das faixas de células “A3:B7” e “D3:D7” da planilha “Comissões”

5) Crie uma nova guia de opções na “Faixa de Opções” com o nome “Exercícios Macros” e
adicione nessa guia as macros criadas.

6) Crie três botões do tipo “Botão (Controle de Formulário)” na planilha associando as macros
criadas.

7) Insira autoformas na planilha e associe as macros criadas a essas autoformas.

Salvador: (71) 3272-6612 contato@torch.eng.br


13
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 2

O Ambiente de Programação (Editor VBA)

Para visualizar o ambiente de programação do VBA, na guia de opções “Desenvolvedor” clique o


botão “Visual Basic”.

Será exibida a janela “Microsoft Visual Basic for Applications”.

Em “Projeto – VbaProject” são exibidas todas as pastas de trabalhos que estiverem abertas com
suas respectivas planilhas.

Em “Microsoft Excel Objetos” são mostrados objetos que podem ser programados de alguma forma.
Cada um desses objetos terá eventos programáveis. Os eventos respondem às interações do
usuário. Existem eventos que são associados à pasta de trabalho e eventos associados às guias de
planilha. Com duplo clique no objeto é possível ver quais os eventos que podem ser codificados.

Em “Módulos” são exibidos os módulos de programação inseridos automaticamente pelo Excel para
a codificação das macros de gravação. Também é possível inserir a qualquer tempo um novo
módulo de programação.

Em “Verificação Imediata” é possível executar programas utilizando o comando “Call” ou visualizar


valores de variáveis utilizando o comando “Print” ou “?”.

Salvador: (71) 3272-6612 contato@torch.eng.br


14
www.torch.eng.br
Apostila Excel VBA

O objeto “EstaPasta_de_Trabalho” contém os itens “(Geral)” e “Workbook”.

No item “(Geral)” é possível criar novas rotinas de programas e funções. No item “Workbook” é
possível codificar os eventos que estão associados a pastas de trabalho.

Da mesma forma o objeto “Plan1(Plan1)” contém os itens “(Geral)” e “Worksheet”. No item


“(Geral)” é possível criar novas rotinas e funções e no item “Worksheet” codificar os eventos
relacionados à planilha “Plan1”.

Em “Módulos” o “Módulo1” contém os códigos criados pelo Excel para as macros de gravação:

Salvador: (71) 3272-6612 contato@torch.eng.br


15
www.torch.eng.br
Apostila Excel VBA

Editando Uma Macro

Por se tratar de um código totalmente escrito por um processo automatizado, os programas


gerados para as macros de gravação possuem muitas instruções desnecessárias. Podemos editar
esse código, não só para remover as instruções que não farão diferença na execução de nossa
macro, mas também para refinar e aperfeiçoar o programa.

Nó código abaixo, por exemplo:


Sub FormatarFonte()
' FormatarFonte Macro
' Atalho do teclado: Ctrl+Shift+F
'
With Selection.Font
.Name = "Tahoma"
.FontStyle = "Normal"
.Size = 12
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.249977111
.ThemeFont = xlThemeFontNone
End With
End Sub

Todas as linhas sublinhadas podem ser removidas sem nenhum prejuízo, pois são instruções que
informam que formatos não serão aplicados no texto selecionado.

O código abaixo obterá o mesmo resultado:


Sub FormatarFonte()
' FormatarFonte Macro
' Atalho do teclado: Ctrl+Shift+F
'
With Selection.Font
.Name = "Tahoma"
.Size = 12
.ThemeColor = xlThemeColorAccent1
.TintAndShade = -0.249977111
End With
End Sub

Salvador: (71) 3272-6612 contato@torch.eng.br


16
www.torch.eng.br
Apostila Excel VBA

Estrutura de Uma Macro

Os códigos de programação de uma macro devem ser escritos dentro de uma rotina do tipo Sub ou
dentro de uma rotina do tipo Function, ambos os modos de programar podem executar os mesmos
tipos de comandos e realizar as mesmas ações, mas só uma Function pode retornar um valor ao
programa que a executou ou pode retornar um valor diretamente em uma célula de uma planilha.
Veja abaixo exemplos ainda rudimentares de como começar a escrever uma macro.
Sub ExemploDeSub()
<Códigos de programação>
<Códigos de programação>
End Sub
Function ExemploDeFunction()
<Códigos de programação>
<Códigos de programação>
ExemploDeFunction = <Valor que irá retornar>
End Function

Nível de Acesso de Uma Sub ou Function (Escopo)

Uma rotina de programação, seja ela uma Sub ou uma Function, possui um nível de acesso,
também chamado de escopo de atuação, que define quem poderá executar essa rotina. Este
escopo pode ser público ou privado. As rotinas de programação públicas podem ser executadas por
qualquer programa que faça referência a elas corretamente, as privadas só podem ser executadas a
partir do local onde foram criadas.

Para definir o escopo de uma rotina são utilizados os comandos “Public” e “Private” conforme os
exemplos abaixo:
Public Sub ExemploDeSub()
<Códigos de programação>
<Códigos de programação>
End Sub
Private Function ExemploDeFunction()
<Códigos de programação>
<Códigos de programação>
ExemploDeFunction = <Valor que irá retornar>
End Function

Caso não seja definido um escopo, o padrão do VBA é assumir o escopo público, logo, a utilização do
comando “Public” é opcional.

Salvador: (71) 3272-6612 contato@torch.eng.br


17
www.torch.eng.br
Apostila Excel VBA

Passagem de Parâmetros (ByRef / ByVal)

As rotinas de programação também podem receber informações que serão utilizadas em sua
execução, essas informações são chamadas de parâmetros.

Nos exemplos abaixo, tanto a Sub quanto a Function, estão recebendo três parâmetros. Esses
parâmetros serão utilizados na codificação da rotina.
Public Sub ExemploDeSub(ByVal strNome As String, ByVal strCargo as String, ByRef dblSalário as
Double)
<Códigos de programação>
<Códigos de programação>
End Sub

Private Function ExemploDeFunction(ByVal strNome As String, ByVal strCargo as String, ByRef


dblSalário as Double)
<Códigos de programação>
<Códigos de programação>
ExemploDeFunction = <Valor que irá retornar>
End Function

A passagem de parâmetros pode ser “ByRef” por referência ou “ByVal” por valor. Na passagem por
referência a chamada para o programa passa como parâmetro um endereço de memória onde está
o valor que será manuseado pela rotina, nesse caso, se durante esse manuseio o valor desse
parâmetro for alterado, a alteração irá refletir no procedimento que fez a chamada. Na passagem
por valor, a chamada para o programa passa como parâmetro uma cópia do valor que será
manuseado pela rotina, assim, se durante esse manuseio o valor do parâmetro for alterado, a
alteração não irá refletir no procedimento que fez a chamada.

Declaração de Variáveis e Constantes.

Além dos objetos disponíveis no Excel, uma macro também manipula variáveis e constantes.

Uma variável é um espaço reservado na memória do computador para guardar um valor que
poderá ser acessado e alterado durante a execução de um programa

Uma constante é um espaço reservado na memória do computador utilizado para guardar um valor
que poderá ser acessado, mas não poderá ser alterado durante a execução de um programa.

Para declarar variáveis ou constantes podemos utilizar os seguintes comandos:

Dim – Declara uma variável de um determinado tipo que será inicializada toda vez que a rotina for
executada, tendo o seu valor zerado a cada execução da rotina.

Salvador: (71) 3272-6612 contato@torch.eng.br


18
www.torch.eng.br
Apostila Excel VBA

Static – Declara uma variável de um determinado tipo que será inicializada apenas na primeira vez
que a rotina for executada, podendo manter o seu valor caso a rotina seja executada mais de uma
vez.

Const – Declara uma constante de um determinado tipo.

Os tipos de variáveis e constantes devem ser definidos de acordo o valor que será armazenado
seguindo a tabela abaixo:

Vejamos alguns exemplos:


Sub PrimeiroPrograma
Dim dblSalario As Double
Dim datDataPagamento As Date
Dim strNomeFuncionario As String
Static intLinha As Integer
Const dblValeTransporte As Double = 0.06
End Sub

Os nomes das variáveis ficam a critério do programador e possuem poucas restrições:


 Devem sempre começar com uma letra;
 Não podem conter palavras reservadas, ou seja, comandos do próprio VBA ou tipos de
variáveis;
 Não podem conter caracteres especiais “'!@#$%&()+-./*”;
 Não podem conter espaço em branco.

Salvador: (71) 3272-6612 contato@torch.eng.br


19
www.torch.eng.br
Apostila Excel VBA

Existem algumas convenções para a definição dos nomes de variáveis que são recomendáveis,
embora não sejam obrigatórias:

 Devem identificar de forma clara o valor que será armazenado;

 Devem possuir um prefixo que identifique o tipo da variável, abaixo alguns exemplos:

 Não devem conter caracteres acentuados ou “ç”

Escopo de Variáveis e Constantes

Assim como as rotinas de programação as variáveis também podem ser públicas ou privadas e
também possuem um nível de acesso. Mas no caso de variáveis e constantes esses níveis
dependem primeiro do local onde elas foram declaradas.

Variáveis e constantes declaradas dentro de uma Sub ou Function só podem ser acessadas dentro
da Sub ou Function onde foram declaradas. Não é permitido utilizar os comandos Public e Private
em declarações de variáveis dentro de uma Sub ou Function.

Variáveis declaradas fora de uma Sub ou Function podem ser declaradas com “Public” ou “Private”.
Se declaradas com “Private” só serão acessadas pelos programas que pertençam ao mesmo local
onde elas foram declaradas. Se declaradas com “Public” poderão ser acessadas por qualquer
programa de qualquer local que as referencie corretamente. O escopo padrão na declaração de
variáveis é “Private”.

Salvador: (71) 3272-6612 contato@torch.eng.br


20
www.torch.eng.br
Apostila Excel VBA

Exemplos de declarações de variáveis:

Criando Funções de Usuário

Com o que já vimos até aqui podemos criar uma função de usuário simples, que poderá ser
utilizada em qualquer planilha de nossa pasta de trabalho.

Vamos criar uma função de nome MediaPonderada que receba duas notas com seus respectivos
pesos, calcule e retorne a média ponderada das notas.

Caso seja necessário exiba o editor do Visual Basic clicando no botão “Visual Basic” na guia de
opções “Desenvolvedor”.

Se na sua pasta de trabalho ainda não existir nenhum módulo criado insira um novo módulo
clicando na opção “Inserir – Módulo”

Dentro do módulo insira o código abaixo:

Public Function MediaPonderada(sngNota1 As Single, sngNota2 As Single, intPeso1 As


Integer, intPeso2 As Integer) As Single
Dim sngCalculoNota1 As Single
Dim sngCalculoNota2 As Single
Dim sngCalculoMedia As Single

sngCalculoNota1 = sngNota1 * intPeso1


sngCalculoNota2 = sngNota2 * intPeso2
sngCalculoMedia = (sngCalculoNota1 + sngCalculoNota2) / (intPeso1 + intPeso2)

MediaPonderada = sngCalculoMedia
End Function

Salvador: (71) 3272-6612 contato@torch.eng.br


21
www.torch.eng.br
Apostila Excel VBA

Veja abaixo um exemplo de utilização da função criada em uma planilha

Exercícios:

1) Crie uma função personalizada com o nome “AreaTriangulo”:


a. Que receba a base e a altura de um triângulo, calcule e retorne a área utilizando a
fórmula A= (b*h)/2
b. Utilize essa função em uma planilha

2) Crie uma função com o nome “IMC”:


a. Que receba o peso e a altura, calcule e retorne o IMC utilizando a fórmula IMC =
Peso / Altura2
b. Utilize a função criada em uma planilha

3) Crie uma função com o nome “Celsius”:


a. Que receba um valor correspondente a graus Fahrenheit e converta para graus
Celsius utilizando a fórmula Celsius = (Fahrenheit - 32) * 5 / 9
b. Utilize a fórmula em uma planilha

4) Crie uma função com o nome “Fahrenheit”:


a. Que receba um valor correspondente a graus Celsius e converta para graus
Fahrenheit utilizando a fórmula Fahrenheit = Celsius * 9 / 5 + 32
b. Utilize a fórmula em uma planilha

Salvador: (71) 3272-6612 contato@torch.eng.br


22
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 3

Comandos de Interação Com o Usuário

Durante a execução de uma rotina ou função pode ser necessário exibir alguma informação para o
usuário ou solicitar que o usuário forneça alguma informação, para essas situações existem
comandos no VBA responsáveis por interagir com o usuário, são eles:

MsgBox

O MsgBox exibe uma caixa de mensagem para o usuário e ao mesmo tempo pode receber
respostas simples como Ok/Cancelar, Sim/Não, Abortar/Repetir/Ignorar. Com essas opções é
possível utilizar o MsgBox para interações simples, mas efetivas com o usuário.

Existem duas sintaxes possíveis para o MsgBox, uma para apenas exibir uma mensagem e
outra caso seja necessário receber uma resposta:

Sintaxe 1: MsgBox “Texto da Mensagem”, TipoDeMensagem, “Título da Caixa de Mensagem”

Sintaxe 2: Resposta = MsgBox(“Texto da Mensagem”, TipoDeMensagem, “Título da Caixa de


Mensagem”)

O TipoDeMensagem serve para definir o estilo da caixa de mensagem e os botões que serão
exibidos para interação com o usuário. O VBA disponibiliza várias constantes internas que
podem ser combinadas para definirem a aparência da caixa de mensagem.

Vale ressaltar que se não for utilizada nenhuma constante para definir o botão que será
exibido, por padrão, será utilizado a constante “vbOkOnly”.
Constantes para definir o estilo da caixa de mensagem
Constante Estilo da Caixa de Mensagem
vbCritical Erro Crítico
vbQuestion Pergunta
vbExclamation Aviso
vbInformation Informação
Constantes para definir que botões serão exibidos
Constante Botão
vbOkOnly Apenas o OK (Esse é o padrão)
vbOkCancel OK e Cancelar
vbAbortRetryIgnore Abortar, Repetir e Ignorar
vbYesNoCancel Sim, Não e Cancelar
vbYesNo Sim e Não
vbRetryCancel Repetir e Cancelar

Salvador: (71) 3272-6612 contato@torch.eng.br


23
www.torch.eng.br
Apostila Excel VBA

Alguns exemplos de utilização do MsgBox e suas constantes:

Ex: MsgBox “Exemplo utilizando o estilo Erro Crítico”, vbCritical, “Esse é o Título”

Ex: MsgBox “Exemplo utilizando o estilo Informação”, vbInformation, “Aqui fica o título da
mensagem”

Ex: intResp = MsgBox (“Mensagem com os botões Sim/Não e o estilo Aviso”, vbExclamation +
VbYesNo, “Título da Mensagem”), nesse exemplo “intResp” é o nome da variável que irá
receber a resposta do usuário, ou seja, se ele clicou o botão “Sim” ou o botão “Não”

O VBA também disponibiliza constantes para facilitarem o tratamento da resposta do usuário,


são elas: vbOK, vbCancel, vbAbort, vbRetry, vbIgnore, vbYes e vbNo
No exemplo anterior se o usuário clicar o botão “Não” a variável intResp receberia o valor
correspondente a vbNo, da mesma forma para o botão “Sim” o valor da variável intResp seria
igual a vbYes.

Salvador: (71) 3272-6612 contato@torch.eng.br


24
www.torch.eng.br
Apostila Excel VBA

Concatenação e Quebra de linha


Em combinação com o MsgBox também podemos utilizar a concatenação de dados e as
quebras de linha. Concatenar é unir duas informações diferentes utilizando o concatenador
“&”. Ele pode ser usado para unir o valor de uma variável e o texto de uma mensagem por
exemplo.
Sub ProgramaExemplo()
Dim strMensagem As String

strMensagem = "Isso é um exemplo de concatenação"


MsgBox "Usamos o & para unir duas informações distintas" & strMensagem,
vbExclamation
End Sub

O resultado ao executar o programa acima é:

Para fazer quebras de linhas o VBA disponibiliza a constante vbCrLf que deve ser utilizado
sempre que for necessário forçar quebras de linhas em uma mensagem.
Sub ProgramaExemplo()
Dim strMensagem As String

strMensagem = "Isso é um exemplo de concatenação"


MsgBox "Usamos o & para unir duas informações distintas"& vbCrLf &
strMensagem, vbInformation
End Sub

Veja o resultado:

Salvador: (71) 3272-6612 contato@torch.eng.br


25
www.torch.eng.br
Apostila Excel VBA

InputBox

O InputBox exibe uma caixa de entrada que pode ser utilizada para solicitar qualquer
informação do usuário.

Sintaxe: strResp = InputBox(“Mensagem informando o que deve ser digitado”, “Titulo do


InputBox”

Nessa sintaxe strResp é a variável que irá armazenar a resposta do usuário, salientando que
toda informação recebida do InputBox a princípio é do tipo String.

Ex:
Sub ProgramaSimples()
Dim strNome As String

strNome = InputBox("Digite seu Nome", "Aqui fica o título do InputBox")


MsgBox "Você digitou " & strNome, vbInformation
End Sub

O resultado da execução desse programa seria:

Salvador: (71) 3272-6612 contato@torch.eng.br


26
www.torch.eng.br
Apostila Excel VBA

Funções do VBA

Funções de Conversão de Tipo


Funções de conversão são utilizadas para converter um valor de um tipo para o outro.
CDbl
Converte um número ou uma string de conteúdo numérico para o tipo Double.

CSng
Converte um número ou uma string de conteúdo numérico para o tipo Single.

CLng
Converte um número ou uma string de conteúdo numérico para o tipo Long.

CInt
Converte um número ou uma string de conteúdo numérico para o tipo Integer.

CStr
Converte qualquer valor para o tipo String

Funções de Informação
Funções de informação são utilizadas para nos dar informações sobre valores ou variáveis.
IsNumeric
Retorna Verdadeiro ou Falso informando se o valor avaliado é ou não numérico.

IsDate
Retorna Verdadeiro ou Falso informando se o valor avaliado é ou não uma data.

IsNull
Retorna Verdadeiro ou Falso informando se o valor avaliado é ou não um valor nulo.

Is Nothing
Retorna Verdadeiro ou Falso informando se um objeto foi ou não inicializado. Sintaxe:
objNomeObjeto Is Nothing.

VarType

Retorna o tipo da variável ou valor avaliado. Para identificar o tipo utiliza-se as constante
do VBA para cada tipo de variável possível: vbInteger, vbLong, vbSingle, vbDouble,
vbCurrency, vbDate, vbString, vbObject.

Salvador: (71) 3272-6612 contato@torch.eng.br


27
www.torch.eng.br
Apostila Excel VBA

Funções de Manuseio de Strings


Funções de manuseio de strings são utilizadas para realizar operações com strings, como
extrair partes, converter para maiúsculas/minúsculas, substituir partes, etc.
Left
Retorna n caracteres que estejam à esquerda da string. Sintaxe: Left(String,n)

Right
Retorna n caracteres que estejam à direita da string. Sintaxe: Right(String,n)

Mid
Retorna n caracteres que estejam à esquerda da string a partir de uma posição inicial.
Sintaxe: Mid(String,p,n)

Len
Retorna a quantidade de caracteres de uma string.

UCase
Converte uma string para maiúsculas.

LCase
Converte uma string para minúsculas.

String
Repete um caractere n vezes. Sintaxe: String(n,”X”), Ex: String(3,”A”) => “AAA”

Instr
Retorna a posição em que uma string foi encontrada dentro de outra a partir de uma
posição inicial. Sintaxe: Instr(1,String1,String2). Ex: Instr(1,”ABCDEFG”,”D”). Neste
exemplo a função irá retornar o número 4 que é a posição da string “D” dentro da string
“ABCDEFG”.

Funções Diversas
Mais algumas funções úteis.
Int
Retorna a parte inteira de um número fracionado, Ex: Int(9.9) => 9

Round
Arredonda um número para n casas decimais, Ex: Round(9.1256,2) => 9,13

Salvador: (71) 3272-6612 contato@torch.eng.br


28
www.torch.eng.br
Apostila Excel VBA

MOD
Retorna o resto de uma divisão, Ex: 3 MOD 2 => 1

DIR
Retorna o nome de um arquivo se este estiver no caminho informado ou vazio caso este
não esteja no caminho, Ex: Dir(“C:\Windows\notepad.exe”) => “notepad.exe” ou “”

ASC
Retorna o código ASCII do caractere informado, Ex: ASC(“A”) => 65. O código ASCII
(American Standard Code for Information Interchange) é um código que define um valor
numérico para cada caractere.

CHR
Retorna o caractere do código ASCII fornecido, Ex: CHR(65) => “A”.

Exercícios:

1) Crie uma Sub de nome “CalculaIMC”:


a. Que solicite do usuário o nome, o peso e a altura;
b. Calcule o IMC e apresente em uma caixa de mensagem o nome fornecido e o IMC
calculado

2) Crie uma Sub de nome “CalculaMediaPonderada”:


a. Que solicite do usuário o nome, duas notas e seus respectivos pesos
b. Calcule a média ponderada e exiba em uma caixa de mensagem o nome fornecido e
a média calculada.

3) Crie uma Sub de nome “ConverteCMPol” que:


a. Solicite do usuário uma medida em Cm
b. Converta para Polegadas utilizando a fórmula Polegadas = Centímetros x
0.393700787
c. Exiba em uma caixa de textos a medida em centímetros e a mesma medida em
polegadas.

Salvador: (71) 3272-6612 contato@torch.eng.br


29
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 4

Comandos de Estrutura de Decisão

Chamamos comandos de estrutura de decisão os comandos do VBA que possibilitam condicionar a


execução de comandos, rotinas ou funções, a critérios pré-definidos.

Condição Simples - If / Then / End If


Define uma condição para que comandos sejam executados:
If <Condição> Then
<Códigos de programação>
<Códigos de programação>
End If

Condição Composta - If / Then / Else/ End If


Condiciona a execução de dois blocos de comando, um bloco para caso a condição seja
verdadeira e outro para caso a condição seja falsa.
If <Condição> Then
<Códigos de programação para condição verdadeira>
<Códigos de programação para condição verdadeira >
Else
<Códigos de programação para condição falsa>
<Códigos de programação para condição falsa >
End If

Condição Encadeada - If / Then / ElseIf / Else / End If


Condiciona diversos blocos de comando, cada um com uma condição diferente.
If <Condição 1> Then
<Códigos de programação para condição 1 verdadeira>
<Códigos de programação para condição 1 verdadeira >
ElseIf <Condição 2> Then
<Códigos de programação para condição 2 verdadeira>
<Códigos de programação para condição 2 verdadeira >
(....)
ElseIf <Condição N> Then
<Códigos de programação para condição N verdadeira>
<Códigos de programação para condição N verdadeira >

Else
<Códigos de programação caso nenhuma condição anterior seja atendida >
< Códigos de programação caso nenhuma condição anterior seja atendida >
End If

Salvador: (71) 3272-6612 contato@torch.eng.br


30
www.torch.eng.br
Apostila Excel VBA

Múltipla Escolha – Select / Case / Case Else / End Select

Avalia uma variável e condiciona blocos de comandos ao valor da variável.


Select Case dblSalario
Case 500
<Códigos de programação para condição verdadeira>
Case 1000, 1200, 1300
<Códigos de programação para condição verdadeira>
Case 1500 to 2000
<Códigos de programação para condição verdadeira>
Case Is >4000
<Códigos de programação para condição verdadeira>
Case Is <3000
<Códigos de programação para condição verdadeira>
Case 4500 To 4900
<Códigos de programação para condição verdadeira>
Case Else
< Códigos de programação caso nenhuma condição anterior seja atendida>
End Select

Operadores Lógicos And / Or / Not


Os comandos de estrutura de decisão podem analisar mais de uma condição ao mesmo
tempo utilizando os operadores lógicos.
If <Condição 1> And <Condição 2> Then
<Códigos de programação para caso as duas condições sejam verdadeiras>
End If

If <Condição 1> Or <Condição 2> Then


<Códigos de programação para caso uma das duas condições sejam verdadeiras>
End If

If Not <Condição 1> Then


<Códigos de programação para condição 1 falsa>
End If

If Not <Condição 1> And <Condição 2> Then


<Códigos de programação para condição 1 falsa e condição 2 verdadeira>
End If

Salvador: (71) 3272-6612 contato@torch.eng.br


31
www.torch.eng.br
Apostila Excel VBA

Exercícios:

1) Desenvolva uma Sub que solicite um valor ao usuário e calcule o valor da comissão
obedecendo os seguintes critérios:
a. Valores de vendas até R$ 20.000,00 será pago 5% de comissão
b. Valores de vendas acima de R$ 20.000,00 até R$ 30.000,00 será pago 10% de
comissão
c. Valores acima de R$ 30.000,00 até R$ 40.000,00 será pago 15% e para valores
acima de R$ 40.000,00 a comissão será de 20%.
d. A Sub deverá exibir em uma caixa de mensagem o valor digitado e o valor que será
pago pela comissão

2) Altere a Sub “CalculaIMC” criada no exercício anterior para além de exibir o nome digitado e
o IMC calculado exibir também o diagnóstico baseado no valor do IMC seguindo a seguinte
tabela:
a. Abaixo de 17 => Muito abaixo do peso
b. Entre 17 e 18,49 => Abaixo do peso
c. Entre 18,5 e 24,99 => Peso normal
d. Entre 25 e 29,99 => Acima do peso
e. Entre 30 e 34,99 => Obesidade I
f. Entre 35 e 39,99 => Obesidade II (severa)
g. Acima de 40 => Obesidade III (mórbida)

3) Altere a Sub de nome “CalculaMediaPonderada” para além de exibir o nome digitado e a


média calculada, exibir também o resultado seguindo os seguintes critérios:
a. Média menor que 4 => Reprovado
b. Média menor que 7 e maior que 4 => Recuperação
c. Média maior ou igual a 7 => Aprovado.

Salvador: (71) 3272-6612 contato@torch.eng.br


32
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 5

Comandos de Estrutura de Repetição (Laços)

Chamamos de comandos de estrutura de repetição os comandos VBA que possibilitam executar um


bloco de comandos, rotinas ou funções várias vezes.

Do While / Loop ou Do / Loop While

Executa um bloco de instruções enquanto uma condição for verdadeira.


Do While <Condição 1>
<Códigos de programação que serão repetidos>
Loop

Do
<Códigos de programação que serão repetidos>
Loop While <Condição 1>

No primeiro caso o bloco de condições será executado repetidamente enquanto a <Condição


1> for verdadeira, mas não será executado nenhuma vez se no início a <Condição 1> for
falsa. No segundo caso o bloco de comandos será executado no mínimo uma vez, isso porque
primeiro o bloco é executado para só depois a <Condição 1> ser avaliada, se a <Condição 1>
for verdadeira o bloco será executado novamente e assim sucessivamente.

Do Until / Loop ou Do / Loop Until

Executa um bloco de instruções enquanto uma condição for falsa.


Do Until <Condição 1>
<Códigos de programação que serão repetidos>
Loop

Do
<Códigos de programação que serão repetidos>
Loop Until <Condição 1>

No primeiro caso o bloco de condições será executado repetidamente enquanto a <Condição


1> for falsa, mas não será executado nenhuma vez se no início a <Condição 1> for
verdadeira. No segundo caso o bloco de comandos será executado no mínimo uma vez, isso
porque primeiro o bloco é executado para só depois a <Condição 1> ser avaliada, se a
<Condição 1> for falsa o bloco será executado novamente e assim sucessivamente.

Salvador: (71) 3272-6612 contato@torch.eng.br


33
www.torch.eng.br
Apostila Excel VBA

Repetição com variável de controle - For / Next

Executa um bloco de instruções enquanto a variável de controle não alcançar o seu valor
final. Sintaxe: For intVariavelControle = <Valor Inicial> To <Valor Final> Step <Incremento>
/ Next.
For bytMeses = 1 to 12 Step 1
<Códigos de programação que serão repetidos>
Next

For dblPosicoes = 1 to 40.5 Step 1.3


<Códigos de programação que serão repetidos>
Next

For intRegressivo = 100 to 1 Step -1


<Códigos de programação que serão repetidos>
Next

For bytHoras = 1 to 24
<Códigos de programação que serão repetidos>
Next

Caso o valor do Step seja omitido o valor de incremento utilizado como padrão será 1.

Repetição com objetos de coleção For Each / Next

Executa um bloco de instruções enquanto existirem objetos em uma coleção, elencando na


variável de controle cada item da coleção. Sintaxe: For Each objVariavelControle in
objColecao / Next.
For Each objPlanilhas In ThisWorkbook.Worksheets
<Códigos de programação que serão repetidos>
Next

No exemplo acima a variável objPlanilhas irá receber a cada execução do laço uma das
planilhas da pasta de trabalho ativa.

Salvador: (71) 3272-6612 contato@torch.eng.br


34
www.torch.eng.br
Apostila Excel VBA

Exercícios:

1) Altere a Sub “CalculaIMC” para após apresentar o resultado, perguntar se o usuário deseja
calcular outro IMC e em caso positivo repetir todo o processo.

2) Crie uma Sub com o nome QtdDivisores:


a. Que solicite um número ao usuário
b. Calcule quantos divisores exatos esse número tem
c. Exiba uma caixa de mensagem informando se o número é primo, caso seja, ou
quantos divisores exatos o número tem, caso não seja primo.
d. Ao final pergunte ao usuário se ele deseja fornecer outro número e em caso positivo
repita todo o processo.

Salvador: (71) 3272-6612 contato@torch.eng.br


35
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 6

Manipulando Objetos do Excel

O principal objetivo do VBA é permitir a manipulação dos objetos do Excel, ou seja, pastas de
trabalhos, planilhas, células, etc. Os objetos no Excel são agrupados em coleções e tanto as
coleções quantos os objetos possuem propriedades e métodos. As propriedades fazem referências
às características das coleções e/ou objetos e os métodos relacionam as operações que podemos
efetuar na coleção e/ou objeto.

Toda coleção possui a propriedade “Count”, que armazena a quantidade de itens da coleção. Possui
também o método “Add” que permite incluir um novo objeto na coleção.

Todo objeto possui a propriedade “Name” que armazena o nome do objeto e o método “Activate”
usado para torná-lo o objeto ativo.

Existem propriedades e métodos diferenciados para cada tipo de objeto, ou seja, algumas
propriedades e métodos são específicas de alguns tipos de objetos.

Neste capítulo veremos alguns dos objetos do Excel, algumas de suas propriedades e métodos e
como manipulá-los através do VBA.

Coleção Workbooks / Objeto Workbook

A coleção Workbooks contém os objetos Workbook do Excel que fazem referência às pastas
de trabalho.

Propriedades da coleção:
 Workbooks.Count – Informa quantas pastas de trabalhos estão abertas.

Métodos da coleção:
 Workbooks.Add – Cria uma nova pasta de trabalho
 Workbooks.Close – Fecha todas as pastas de trabalho
 Workbooks.Open – Abre uma pasta de trabalho.

Salvador: (71) 3272-6612 contato@torch.eng.br


36
www.torch.eng.br
Apostila Excel VBA

Propriedades do objeto:
 Workbooks(“Pasta1.xlsx”).Name – Nome da pasta de trabalho

Métodos do objeto:
 Workbooks(“Pasta1.xlsx”).Save – Salva pasta de trabalho “Pasta1.xlsx”;
 Workbooks(“Pasta1.xlsx”).SaveAs “Caminho\Nome” – Salva a pasta de trabalho
“Pasta1.xlsx” com o nome e no local indicado;
 Workbooks(“Pasta1.xlsx”).Activate – Ativa a pasta de trabalho “Pasta1.xlsx”;
 Workbooks(“Pasta1.xlsx”).Close – Fecha pasta de trabalho “Pasta1.xlsx”.

Coleção WorkSheets / Objeto WorkSheet

A coleção WorkSheets contém os objetos Worksheet que fazem referência às guias de


planilha de uma pasta de trabalho.

Propriedades da coleção:
 WorkSheets.Count – Informa quantas guias de planilhas existem na pasta de trabalho.
o Exemplo 1: Workbooks("Pasta1.xlsx").Worksheets.Count – Informa quantas
guias de planilha existem na pasta de trabalho “Pasta1.xlsx”;
o Exemplo 2: Worksheets.Count – Informa quantas guias de planilha existem na
pasta de trabalho que estiver ativa.

Métodos da coleção:
 Worksheets.Add – Adiciona uma nova guia de planilha;
 Worksheets.Select – Seleciona todas as guias de planilha;
 Worksheets.Copy – Cria uma nova pasta de trabalho copiando todas as guias de
planilha da pasta de trabalho ativa ou referenciada.

Propriedades do objeto:
 Worksheets(“Plan1”).Name – Informa ou atribui o nome da guia de planilha;
o Exemplo 1: MsgBox Workbooks("Pasta1.xlsx").Worksheets(“Plan 1”).Name
o Exemplo 2: Workbooks("Pasta1.xlsx").Worksheets(“Plan 1”).Name = “Vendas”
 Worksheets(“Plan1”).Visible – Informa ou define a visibilidade de uma planilha em
Falso ou Verdadeiro
o Exemplo 1: MsgBox Workbooks("Pasta1.xlsx").Worksheets(“Plan 1”). Visible
o Exemplo 2: Workbooks("Pasta1.xlsx").Worksheets(“Plan 1”). Visible = False
DICA: Não é permitido ocultar todas as guias de planilha, no mínimo uma guia
precisa ter a propriedade Visible definida como True

Salvador: (71) 3272-6612 contato@torch.eng.br


37
www.torch.eng.br
Apostila Excel VBA

Métodos do objeto:
 Worksheets("Plan2").Select – Seleciona a planilha indicada.
 Worksheets("Plan2").Copy – Copia a planilha indicada em uma nova pasta de trabalho
ou na pasta atual antes ou depois de uma planilha já existente.
o Exemplo 1: Worksheets("Plan2").Copy – Irá criar uma nova pasta de trabalho
contendo uma cópia da planilha “Plan2”
o Exemplo 2: Worksheets("Plan2").Copy After:= Worksheets ("Plan1") – Irá
copiar a “Plan2” depois da “Plan1”
o Exemplo 3: Worksheets("Plan2").Copy Before:= Worksheets ("Plan1") – Irá
copiar a “Plan2” antes da “Plan1”
 Worksheets("Plan2").Move – Move a planilha indicada em uma nova pasta de trabalho
ou na pasta atual antes ou depois de uma planilha já existente.
o Exemplo 1: Worksheets("Plan2"). Move – Irá criar uma nova pasta de trabalho
e mover a planilha “Plan2” para essa nova pasta.
o Exemplo 2: Worksheets("Plan2"). Move After:= Worksheets ("Plan1") – Irá
mover a “Plan2” para depois da “Plan1”
o Exemplo 3: Worksheets("Plan2"). Move Before:= Worksheets ("Plan1") – Irá
mover a “Plan2” para antes da “Plan1”
 Worksheets("Plan2").Delete – Exclui a planilha indicada
 Worksheets("Plan2").PrintOut – Envia a planilha indicada para a impressora padrão

Objeto Range

O objeto Range é um objeto filho do objeto WorkSheet e faz referência a uma célula ou um
grupo de células.

Propriedades do objeto:
 Range("A1").Value – Exibe ou define o valor de uma célula
o Exemplo 1: MsgBox Range(“A1”).Value
o Exemplo 2: Range(“A1”).Value = “Planilha Mensal de Vendas”
DICA 1: Essa propriedade não pode ser aplicada a um grupo de células.
DICA 2: Essa é propriedade default do Range, por isso não precisa ser especificada,
O “Exemplo 1” poderia ser escrito MsgBox Range(“A1”) e o “Exemplo 2”
Range(“A1”) = “Planilha Mensal de Vendas” .

Salvador: (71) 3272-6612 contato@torch.eng.br


38
www.torch.eng.br
Apostila Excel VBA

 Range("A1").Font.Name – Define o nome da fonte da célula ou grupo de células


 Range("A1").Font.Size – Define o tamanho da fonte
 Range("A1").Font.Color – Define a cor da fonte
 Range("A1").Font.Bold – Define se a fonte será negrito ou não (True/False)
 Range("A1").Font.Italic– Define se a fonte será em itálico ou não (True/False)
 Range("A1").Interior.Color – Define a cor do interior da célula ou grupo de células

Métodos do objeto:
 Range("A1").Select – Seleciona a célula ou grupo de células
 Range("A1").Copy – Copia o conteúdo da célula ou grupo de células
 Range("A1").PasteSpecial – Cola na célula ou grupo de células selecionada o conteúdo
da área de transferência. Existem várias constantes do Excel que podem ser utilizadas
para definirem o tipo de colagem que será aplicada, veja abaixo as mais usadas:
o xlPasteAll – Para colar tudo, valores, fórmulas, formatação, etc
o xlPasteAllExceptBorders – Para colar tudo exceto bordas
o xlPasteColumnWidths – Cola apenas a largura das colunas
o xlPasteFormats – Cola apenas a formatação, ignorando valores e fórmulas.
o xlPasteFormulas – Cola apenas fórmulas e valores, não cola formatação.
o xlPasteFormulasAndNumberFormats - Cola fórmulas, valores e formatação de
números
o xlPasteValidation – Cola apenas regras de validação
o xlPasteValues – Cola apenas valores convertendo fórmulas em seus valores
correntes.
o xlPasteValuesAndNumberFormats – Cola valores convertendo fórmulas em
seus valores correntes e formatos numéricos.
 Range("A1").Delete – Exclui a célula indicada deslocando as demais células para a
esquerda ou para cima
o Exemplo 1: Range("A1").Delete xlShiftToLeft
o Exemplo 2: Range("A1").Delete xlShiftToUp
DICA: Se não for informado a direção com xlShiftToLeft ou xlShiftToUp será
adotado o xlShiftToLeft por padrão.

Objeto Cells
O objeto Cells é similar ao objeto Range com praticamente os mesmos métodos e
propriedades, mas com o diferencial de tratar tanto colunas como linhas como valores
numéricos. Esse tipo de referência é bem mais fácil de manipular via programação.
Sintaxe: Cells(Linha, Coluna) onde Linha é um inteiro de 1 a 1048576 e coluna um inteiro
entre 1 e 16384, vejamos alguns comparativos:
Range(“A1”) => Cells(1,1) Range(“A1048576) => Cells(1048576,1)
Range(“A10”) => Cells(10,1) Range(“XFD1048576) => Cells(1048576, 16384)

Salvador: (71) 3272-6612 contato@torch.eng.br


39
www.torch.eng.br
Apostila Excel VBA

Eventos de Objetos Excel

Além das propriedades e métodos os objetos do Excel também possui eventos que podem ser
codificados. Os eventos são as ações que o usuário realiza no objeto.

Veremos os eventos mais utilizados:

Eventos do objeto WorkBook (EstaPasta_de_Trabalho)


 Open – Ocorre quando a pasta de trabalho é aberta. Pode ser utilizado para executar
uma rotinha VBA toda vez que a pasta for aberta;
 Activate – Ocorre quando a pasta de trabalho é ativada;
 SheetChange – Ocorre quando alguma alteração é feita em qualquer planilha;
 SheetActivate – Ocorre quando alguma planilha é ativada;
 SheetCalculate – Ocorre quando algum cálculo é feito em qualquer planilha da pasta de
trabalho.

Eventos do objeto Worksheet(Plan1, Plan2, etc)


 Activate – Ocorre quando a planilha é ativada;
 Change – Ocorre quando alguma alteração é feita na planilha;
 Calculate – Ocorre quando algum cálculo é feito na planilha;
 SelectionChange – Ocorre quando é feita alguma seleção na planilha;

Salvador: (71) 3272-6612 contato@torch.eng.br


40
www.torch.eng.br
Apostila Excel VBA

Exercícios:

1) Faça um programa que solicite 2 números de um usuário e:

a. Não aceite dois números que tenham uma diferença maior que 1000 entre eles,
nesse caso o programa deverá avisar que os números não são válidos e solicitar
novamente 2 números.

b. Crie uma planilha com todos os números existentes entre os dois números fornecidos
colocando os números pares na coluna A e os números ímpares na coluna B

c. Ao final o programa deverá perguntar se o usuário deseja repetir o processo ou


finalizar o programa.

2) Faça um programa que solicite 2 números de um usuário e:

a. Não aceite dois números que tenham uma diferença maior que 1000 entre eles,
nesse caso o programa deverá avisar que os números não são válidos e solicitar
novamente 2 números.

b. Crie uma planilha com todos os números primos entre os números fornecidos. A
planilha deverá ter no máximo 30 números primos por coluna.

c. Ao final o programa deverá perguntar se o usuário deseja repetir o processo ou


finalizar o programa.

Salvador: (71) 3272-6612 contato@torch.eng.br


41
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 7

Formulários de Usuários(UserForms)

Os UserForms são um recurso do VBA que possibilita a construção de uma interface personalizada
com o usuário. Nos UserForms do Excel é possível desenhar uma interface com a maioria dos
recursos disponíveis em aplicações Windows, como caixas de texto, caixas de combinação, botões
de opção, botões de comandos, checkboxs, etc. Estes itens da interface também são chamados de
controles.

Exemplo de formulário personalizado:

Adicionando um Formulário e Inserindo Controles

Para adicionar um formulário é preciso acessar o ambiente de desenvolvimento e clicar na opção


“Inserir – UserForm”

Salvador: (71) 3272-6612 contato@torch.eng.br


42
www.torch.eng.br
Apostila Excel VBA

Será inserido um formulário vazio onde poderemos desenhar nossa interface utilizando os controles
que o VBA disponibiliza.

Vejamos os controles disponíveis na ordem em que aparecem na imagem acima:


 Ferramenta de seleção – Utilizada para selecionar controles já inseridos no formulário;
 Rótulo (Label) – Utilizado para rotular outros controles;
 Caixa de texto (TextBox) – Utilizado para desenhar uma caixa de texto que permite ao
usuário digitar textos;

Salvador: (71) 3272-6612 contato@torch.eng.br


43
www.torch.eng.br
Apostila Excel VBA

 Caixa de combinação (ComboBox) – Utilizado para desenhar uma caixa de combinação


que, a depender de como seja configurada, permite ao usuário digitar ou selecionar
uma de várias opções;
 Caixa de listagem (ListBox) – Utilizado para desenhar uma caixa de listagem que
permite ao usuário escolher uma entre várias opções;
 Caixa de seleção (CheckBox) – Utilizado para desenhar uma caixa de seleção que
permite ao usuário escolher entre opções do tipo Sim/Não;
 Botão de opção (OptionButton) – Utilizado para desenhar um botão de opção que
permite ao usuário escolher uma opção dentro de um grupo de opções disponíveis. Os
botões de opção devem ser criados dentro de um Quadro(Frame), para que seja
delimitado um grupo de opções exclusivas, ou seja, que só permite a escolha de uma
entre várias;
 Botão de ativação (ToggleButton) – Utilizado para desenhar um botão de alternância
que funciona de forma idêntica às caixas de seleção, possibilitando ao usuário escolher
entre opções do tipo Sim/Não. Funciona como um botão Liga/Desliga;
 Quadro (Frame) – Utilizado para desenhar um quadro que serve para agrupar botões
de opção ou outros tipos de controles. Bastante utilizado para separar os itens da
interface em grupos de informações separadas.
 Botão de comando (CommandButton) – Utilizado para desenhar um botão de comando
que permite ao usuário executar uma ação, como confirmar a digitação dos dados ou
fechar o formulário. As ações serão disponibilizadas e programadas pelo programador.
 TabStrip – Utilizado para separar as opções da interface em guias;
 Multi-página (MultPage) – Também utilizado para separar as opções em guias;
 Barra de rolagem (ScrollBar) – Utilizado para desenhar uma barra de rolagem que
permite ao usuário percorrer valores dentre um máximo e um mínimo previamente
estipulados;
 Botão de rotação (SpinButton) – Utilizado para desenhar um botão de rotação que
permite ao usuário percorrer valores dentre um máximo e um mínimo previamente
estipulados. Esse controle é similar à barra de rolagem;
 Imagem (Image) – Utilizado para inserir imagens no formulário;
 RefEdit – Utilizado para permitir que o usuário selecione faixas de células.

Salvador: (71) 3272-6612 contato@torch.eng.br


44
www.torch.eng.br
Apostila Excel VBA

Propriedades e Métodos dos Controles

Os controles utilizados no UserForm, assim como o próprio UserForm possui propriedades e


métodos, existem propriedades e métodos comuns a vários controles diferentes e existem
propriedades e métodos específicos para alguns tipos de controles.

Veremos inicialmente as propriedades que são mais comuns e existem na maioria dos controles:
 Name – Define o nome do controle que será utilizado em futuras referências dentro do
código VBA. Deve obedecer a mesma regra utilizada para nomes de variáveis. É
recomendável utilizar um prefixo que identifique o tipo de objeto. Abaixo alguns
exemplos de controles e prefixos recomendados:
o Rótulo (Label) – lblNome, lblTelefone
o Caixa de texto (TextBox) – txtNome, txtTelefone
o Caixa de combinação (ComboBox) – cmbEstado, cmbSexo
o Caixa de listagem (ListBox) – lstEstado, lstSexo
o Caixa de seleção (CheckBox) – chkCurso, chkPago
o Botão de opção (OptionButton) – optCasado, optSolteiro
o Quadro (Frame) – fmeDadosPessoais, fmeDocumentos
o Botão de comando (CommandButton) – cmdConfirma, cmdCancela
o Imagem (Image) – imgFoto, imgLogotipo
 Caption – Define o título de objetos como o próprio userform, rótulo, quadros, etc.;
 BackColor – Define a cor de fundo do controle;
 BackStyle – Define se o fundo do controle será opaco ou transparente
 ControlTipText – Define um texto de ajuda que será exibido sempre que o mouse
passar sobre o controle. Deve ser usado para orientar o usuário sobre como utilizar ou
de que forma preencher o controle;
 Enabled – Define se o controle estará habilitado ou não para o usuário;
 Font – Define a fonte do controle;
 ForeColor – Define a cor da fonte do controle;
 Height – Define a altura do controle;
 Left – Define a posição esquerda do controle em relação ao seu container. O container
é o objeto que contém o controle, pode ser o próprio userform ou um quadro(frame),
um Multi-página (MultPage), etc.;
 TabIndex – Define a ordem de parada do foco do teclado quando utilizada a tecla tab;
 TabStop – Define se o controle receberá ou não o foco do teclado quando utilizada a
tecla tab;

Salvador: (71) 3272-6612 contato@torch.eng.br


45
www.torch.eng.br
Apostila Excel VBA

 TextAlign – Define o alinhamento do texto dentro do controle;


 Tag – Armazena um valor que pode ser usado de diversas formas dentro do código
VBA;
 Top – Define a posição superior do controle em relação ao seu container;
 Visible – Define se o controle será visível ou não;
 Width – Define a largura do controle.

O método mais comum e disponível na maioria dos controles é o SetFocus e é utilizado para atribuir
o foco do teclado a um determinado controle. Bastante utilizado na validação de formulários para
colocar o foco do teclado em um campo de preenchimento obrigatório que não foi preenchido ou
não foi preenchido corretamente, para obrigar o usuário a fazer o correto preenchimento do campo.

Veremos agora as propriedades e métodos mais utilizados por controle:


 UserForm
o Propriedades
 MousePointer – Define o formato do mouse entre uma de algumas
opções possíveis, destacaremos as duas mais usadas:
 fmMousePointerDefault – Define o formato padrão do mouse;
 fmMousePointerHourGlass – Define o formato Ampulheta,
utilizado para indicar que o usuário deve aguardar o final de
algum processamento.
o Métodos
 Show – Exibe o formulário;
 Hide – Oculta o formulário;
 UndoAction – Desfaz a última ação do usuário.
 Caixa de texto
o Propriedades
 MaxLength – Define a quantidade máxima de caracteres que poderá ser
digitada na Caixa de texto;
 Locked – Define se a Caixa de texto estará bloqueada ou não para
utilização do usuário;
 PasswordChar – Define um caractere que será exibido para ocultar a
digitação de informações sigilosas como senhas.
 WordWrap – Define se a Caixa de texto permitirá ou não a quebra de
linhas.

Salvador: (71) 3272-6612 contato@torch.eng.br


46
www.torch.eng.br
Apostila Excel VBA

o Métodos
 Copy – Copia o conteúdo da Caixa de texto que estiver selecionado
para a área de transferência;
 Cut - Recorta o conteúdo da Caixa de texto que estiver selecionado
para a área de transferência;
 Paste – Cola na Caixa de texto o conteúdo da área de transferência.
 Caixa de Combinação e Caixa de listagem
o Propriedades
 ListCount – Informa quantos itens a lista possui;
 ListIndex – Define ou informa qual o item da lista está selecionado. A
lista começa de zero. Se nem um item estiver selecionado o valor do
ListIndex será -1;
 ListStyle (apenas para Caixas de listagem) – Configura o estilo da Caixa
de listagem em uma de duas opções possíves:
 fmListStylePlain – Exibe as opções da Caixa de listagem como
itens de uma lista, é a opção Default;
 fmListStyleOption – Exibe as opções da Caixa de listagem como
Options Buttons ou CheckBox;
 MultiSelect (apenas para Caixas de listagem) – Configura a forma de
seleção da caixa de listagem em uma de três opções possíveis:
 fmMultiSelectSingle – Só permite selecionar um item da lista, é a
opção default;
 fmMultiSelectExtended – Permite a seleção de mais de um item,
mas apenas com a combinação de teclas Ctrl ou Shift;
 fmMultiSelectMulti – Permite a seleção de mais de um item
como padrão.
 Selected (apenas para Caixas de listagem) – Informa ou define se um
item da caixa de listagem está selecionado ou não. Mais usado quando
a Caixa de listagem está configurada para múltipla seleção;
o Métodos
 AddItem – Adiciona um novo item à caixa de combinação ou de
listagem;
 RemoveItem – Remove um item da caixa de combinação ou de
listagem;
 Clear – Elimina todos os itens da caixa de combinação ou de listagem;

Salvador: (71) 3272-6612 contato@torch.eng.br


47
www.torch.eng.br
Apostila Excel VBA

 Botão de comando
o Propriedades
 Default – Define se o botão será ou não o botão padrão do formulário.
O botão padrão poderá ser executado também com o pressionar da
tecla Enter.
 Cancel – Define se o botão será ou não o botão o botão cancelar do
formulário. O botão cancelar poderá ser executado também com o
pressionar da tecla ESC.
 Image
o Propriedades
 Picture – Defiine que imagem será exibida no controle;
 PictureSizeMode – Configura de que forma a Caixa de imagem irá tratar
o tamanho da imagem original utilizando uma das três formas
possíveis:
 fmPictureSizeModeClip – Exibe no controle Image apenas o que
cabe do tamanho original cortando o restante da imagem
original;
 fmPictureSizeModeStretch – Reduz ou aumenta a imagem
original para que caiba no controle imagem, se necessário irá
distorcer o formato da imagem para força-la a caber no
controle;
 fmPictureSizeModeZoom – Reduz ou aumenta a imagem original
para caber no controle, mas sem distorcer suas proporções.

Eventos dos Controles

Os eventos são as ações que os usuários podem realizar em cada controle, assim como as
propriedades e métodos, os eventos podem ser específicos para um ou mais tipos de controles ou
comuns a vários tipos de controle. Todos os eventos podem ser codificados em VBA, ou seja, para
cada ação do usuário é possível escrever um programa correspondente.

Salvador: (71) 3272-6612 contato@torch.eng.br


48
www.torch.eng.br
Apostila Excel VBA

Veremos os eventos mais comuns e que estão disponíveis na maioria dos controles:
 Click – Responde ao click do mouse sobre o controle;
 DblClick – Responde ao duplo click do mouse sobre o controle;
 Enter – Responde quando o controle recebe o foco do teclado;
 Exit – Responde quando o controle perde o foco do teclado;
 KeyPress – Responde quando uma tecla é pressionada;

Adicionalmente veremos também eventos específicos do UserForm:


 Initialize – Responde quando o UserForm é inicializado;
 Activate – Responde quando o UserForm é ativado;
 Deactivate – Responde quando o UserForm é desativado

Exercícios:

1) Crie o formulário abaixo:


a. O botão inserir deverá inserir os dados informados em uma planilha
b. O botão sair deverá fechar o formulário
c. O combo Estado Civil deverá apresentar as opções: Casado, Solteiro e Divorciado,
que devem ser adicionados ao combo na inicialização do formulário.

Salvador: (71) 3272-6612 contato@torch.eng.br


49
www.torch.eng.br
Apostila Excel VBA

CAPÍTULO 8

Validação de Dados

Uma das principais vantagens de se utilizar UserForms na interação com o usuário, ou mesmo, no
preenchimento dos dados de uma planilha, é a possibilidade de uma validação dos dados fornecidos
pelo usuário de uma forma mais completa.

A validação dos dados pode ocorrer em dois momentos: durante o preenchimento individual de
cada campo ou ao final do preenchimento dos campos ao confirmar os dados digitados.

Durante o preenchimento de cada campo é possível validar caractere a caractere digitado em um


campo de texto, utilizando o evento keypress, dessa forma podemos forçar o usuário a só digitar
números em campos numéricos ou só letras em campos que só admitam letras, assim como limitar
a digitação a determinadas letras.

Veremos alguns códigos que podem ser utilizados na validação de um campo:

Private Sub txtCPF_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


If Not IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
End If
End Sub

O código acima, se aplicado em uma caixa de texto de nome txtCPF, irá permitir apenas a digitação
de caracteres numéricos na caixa de texto.

Private Sub txtNome_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)


If IsNumeric(Chr(KeyAscii)) Then
KeyAscii = 0
End If
End Sub

Salvador: (71) 3272-6612 contato@torch.eng.br


50
www.torch.eng.br
Apostila Excel VBA

O código acima, se aplicado em uma caixa de texto de nome txtNome, irá permitir apenas a
digitação de caracteres não numéricos na caixa de texto.

Quando o usuário aciona o botão de confirmação do formulário é possível validar se todos os


campos do formulário foram preenchidos.

Private Sub cmdOk_Click()


If ValidaCampos = True Then
Call InsereDados
End If
End Sub

Function ValidaCampos() As Boolean


ValidaCampos = False
If txtNome = "" Then
MsgBox "Preencha o Campo Nome!", vbInformation
txtNome.SetFocus
Exit Function
End If
If txtEndereco = "" Then
MsgBox "Preencha o Campo Endereço!", vbInformation
txtEndereco.SetFocus
Exit Function
End If
If txtCPF = "" Then
MsgBox "Preencha o Campo CPF!", vbInformation
txtCPF.SetFocus
Exit Function
End If
ValidaCampos = True
End Function

Salvador: (71) 3272-6612 contato@torch.eng.br


51
www.torch.eng.br
Apostila Excel VBA

No código acima a rotina InsereDados só será executada se a função ValidaCampos retornar o valor
True e a função ValidaCampos só irá retornar o valor True se todos os campos do formulário
estiverem preenchidos, caso contrário a função irá exibir uma mensagem informando que campo
não foi preenchido, irá colocar o foco do teclado no campo e retornará o valor False.

Tratamento de Erros

Algumas operações realizadas no VBA podem ocasionar um erro em tempo de execução. Se não
existir nenhum tratamento para o erro o programa será interrompido. Para evitar esse tipo de
situação o VBA dispõe de comandos para tratamento de erros.

Comando On Error Goto ... / Resume ...

O comando On Error Goto desvia a execução do programa para o local especificado onde deverá
ser codificado alguma ação de tratamento do erro e o Resume desvia a execução do programa para
o ponto de onde o programa deverá prosseguir caso ocorra um erro.
Private Sub cmdConfirmar_Click()
On Error GoTo TrataErro

Workbooks.Open "C:\Planilhas\Pasta1.xlsx"

Fim:
Exit Sub
TrataErro:
MsgBox "Não foi possível abrir o arquivo Pasta1.xlsx", vbCritical
Resume Fim
End Sub

No código acima se ocorrer algum erro na tentativa de abrir o arquivo “Pasta1.xlsx” a execução do
programa será desviada para o ponto TrataErro onde é exibida uma mensagem de erro
personalizada e a rotina continua a execução a partir do ponto Fim sem que o programa seja
interrompido.

Sem o tratamento de erro o Excel iria exibir uma mensagem genérica de erro e forçar a interrupção
do programa.

Salvador: (71) 3272-6612 contato@torch.eng.br


52
www.torch.eng.br
Apostila Excel VBA

Exercícios:

1) Crie o formulário abaixo:

a. O campo Nome só deverá permitir a digitação de caracteres não numéricos;


b. O campo Altura só deverá permitir a digitação de números e vírgula;
c. O campo Peso só deverá permitir a digitação de números e vírgula;
d. Ao clicar o botão “Calcular IMC”:
i. Inicialmente deverá ser verificado se todos os campos foram preenchidos e
solicitar o preenchimento dos campos que estiverem vazios;
ii. Se todos os campos estiverem preenchidos deverá ser efetuado o cálculo do
IMC utilizando a fórmula: Peso / Altura2
iii. Ao final deverá ser exibida uma caixa de mensagem com o nome informado,
o IMC calculado e o texto indicado a seguir de acordo o valor do IMC
calculado e o Sexo informado.
Texto Sexo Feminino Sexo Masculino

Abaixo do peso < 19,1 < 20,7


Peso normal 19,1 - 25,8 20,7 - 26,4
Marginalmente acima do peso 25,8 - 27,3 26,4 - 27,8
Acima do peso ideal 27,3 - 32,3 27,8 - 31,1
Obeso > 32,3 > 31,1

e. O botão Sair deverá fechar o formulário

Salvador: (71) 3272-6612 contato@torch.eng.br


53
www.torch.eng.br
Apostila Excel VBA

EXERCÍCIO DE REVISÃO

1) Desenvolva uma sub que solicite dois números ao usuário e lance em uma coluna todos os números
pares e em outra coluna todos os números ímpares entre os dois números fornecidos, só deverão
ser impressos 30 números por coluna e a diferença entre os números fornecidos não deverá ser
maior que 1000. Ao final do programa deverá ser verificado se o usuário deseja repetir todo o
processo.

Folha de Pagamento
Nome Escolaridade Cargo Bruto INSS IRPF Bônus Liquido

2) Dada a planilha acima desenvolva uma função personalizada que receba a escolaridade, o cargo e o
valor do salário e retorne o valor do bônus seguindo o seguinte critério:
 Para escolaridade Ensino Fundamental o bônus será de 3%
 Para o Nível Médio o bônus será de 5%
 Recepcionista ou Aux. Administrativo com Nível Superior o bônus será de 7%
 Para Analista o bônus será de 10%
 Para Procurador ou Gerente o bônus será de 15%

3) Faça um formulário de entrada de dados com as seguintes características:


 Deverá ter um grupo de OptionButton para a escolha da escolaridade com as seguintes
opções:
i. Ensino Fundamental
ii. Nível Médio
iii. Nível Superior
 Deverá ter um ComboBox para o campo cargo com a seguintes opções.
i. Aux. De Serviços Gerais
ii. Procurador
iii. Analista de Sistemas
iv. Recepcionista
v. Porteiro
vi. Jardineiro
vii. Gerente
viii. Coordenador

Salvador: (71) 3272-6612 contato@torch.eng.br


54
www.torch.eng.br
Apostila Excel VBA

 Deverá possuir caixas de texto para os campos


i. Nome
ii. Salário Bruto

 A caixa de texto salário bruto só deverá permitir a digitação de números


 Deverá possuir um botão para inserir os dados na planilha, um para limpar os campos e
outro para fechar o form
 Antes de inserir os dados na planilha deverá ser verificado se todos os campos foram
preenchidos.

4) Codifique o evento Change da planilha para não permitir a digitação de uma escolaridade
incompatível com o cargo e vice versa.

Salvador: (71) 3272-6612 contato@torch.eng.br


55
www.torch.eng.br