Académique Documents
Professionnel Documents
Culture Documents
Índice
ÍNDICE
APRESENTAÇÃO 3
PROGRAMANDO 7
VARIÁREIS9
OPERADORES 13
FUNÇÕES 20
ESTRUTURAS DE CONTROLE 22
ESTRUTURAS DE REPETIÇÃO 1
C A P Í T U L O 1
A p r e s e n t a ç ã o
Introdução
O que é um programa?
Entrada e Saída de Dados
Objetivos
Ao final deste módulo, você estará apto a:
Definir o que é um algoritmo;
Definir o que é um programa;
Criar algoritmos simples;
Algoritmos
Todo algoritmo segue uma seqüência lógica. Geralmente um algoritmo é lido de cima pra baixo e da
esquerda pra direita. Cada linha de código é lida e, caso não haja nenhum erro, executada e logo
depois é lida a próxima linha e assim sucessivamente até terminarem as linhas do algoritmo.
Outro exemplo de algoritmo seria fazer um calculo simples como a soma ou multiplicação de dois
números como no exemplo abaixo:
O que é um programa?
que elas “escondem” as tarefas difíceis como trabalhar direto com hardware, o que facilita o
desenvolvimento do código e aumenta a velocidade de programação.
Exercícios:
1 - Escreva um algoritmo para pentear o cabelo. Tente ser bem especifico e detalhado em cada
ação realizada.
Muitas vezes não percebemos, mas para haver processamento, é necessário ter informações. Um
programa precisa que dados sejam inseridos nele para que eles sejam processados e retorne algum
resultado daquele processamento. Esses dados podem ser inseridos pelo usuário do programa e
algumas vezes o usuário não sabe que está inserindo dados. Digitar texto em um formulário
eletrônico ou o simples ato de copiar um arquivo para o seu computador é considerado entrada de
dados.
Exercício: Escreva alguns modos de entrada e saída de dados. Ao lado de cada um, diga se é entrada
ou saída.
C A P Í T U L O 2
P r o g r a m a n d o
Programando
O que é Necessário Para Escrever em Português Estruturado?
A Estrutura de Um Algoritmo
Objetivos
Ao final deste módulo, você estará apto a:
Escrever um algoritmo na estrutura de um algoritmo estruturado
Programando
A partir de agora, utilizaremos uma linguagem conhecida como Português Estruturado para fazer
nossos algoritmos.
Como você pode ver, temos uma área para a declaração do nome do algoritmo, uma para a
declaração das variáveis e uma para o código. Iremos começar a aprender como escrever nossos
algoritmos.
C A P Í T U L O 3
V a r i á r e i s
Variáveis
Tipo de Variáveis
Lendo e Escrevendo Dados
Vetores
Objetivos
Ao final deste módulo, você estará apto a:
Definir uma variável
Utilizar Variáveis
Variáveis
Variáveis são espaços em memória onde podemos alocar algum valor temporariamente. Como o
nome diz, o valor de uma variável pode ser alterado. Para escrever o nome de uma vaiável, é
necessário seguir algumas regras:
1 – Os nomes das variáveis não podem ser iguais às palavras reservadas da linguagem. Algumas
linguagens de programação tem algumas palavras reservadas como begin e end. Elas são utilizadas
internamente pela linguagem, então é melhor não utilizá-las. Cada linguagem tem as suas próprias
palavras reservadas. Leia a documentação da sua linguagem preferida antes de começar a
programar.
2 – O primeiro caractere do nome da sua variável deve ser uma letra ou um “_” (underline ou
sublinhado).
3 – Os nomes das variáveis não podem ter espaço em branco.
Tipos de Variáveis
O tipo de uma variável define qual tipo de valor poderá ser armazenado nela. Usaremos quatro tipos
de variáveis citadas abaixo.
Tipo Descrição
INTEIRO Utilizada para armazenar todos os números inteiros como 10, 30, -12, 325, etc...
CARACTERE Utilizada para armazenar texto. É necessário utilizar aspas duplas para delimitar
o início e o fim de um texto.
As variáveis devem ser atribuídas sempre antes do inicio do programa, sempre depois da palavra
“var”. Cada variável precisa de um nome e o seu tipo. O modo correto de declarar uma variável é
mostrado abaixo.
Algoritmo “Variáveis”
var
numero: INTEIRO
inicio
fim algoritmo
Acabamos de inicializar uma variável, mas a mesma ainda não tem valor algum. A seguir, um
exemplo de uma variável recebendo um valor.
Algoritmo “variaveis”
var
numero: INTEIRO
inicio
numero <- 10
fim algoritmo
O código acima cria a variável “numero”, atribui o número 10 como valor para ela. Para atribuir
valores a uma variável, é necessário utilizar o sinal “<-”.
algoritmo "variaveis"
var
numero: INTEIRO
inicio
escreva("Escreva um número: ")
leia(numero)
escreva("O número que você digitou é:")
escreva(numero)
fimalgoritmo
Vetores
Traduzir vetor de um modo fácil seria dizer que ele é uma “variável que tem o valor de várias
variáveis”. Dentro de um vetor é possível colocar vários valores diferentes.
algoritmo "vetores"
var
numeros: VETOR[1..5] DE INTEIRO
inicio
numeros[1] <- 10
numeros[2] <- 20
numeros[3] <- 30
numeros[4] <- 40
numeros[5] <- 50
escreva(numeros[3])
fimalgoritmo
Para utilizar um vetor é necessário que antes de atribuir valores aos seus índices (Um índice é um
espaço dentro do vetor onde podemos armazenar dados).
C A P Í T U L O 4
O p e r a d o r e s
Operadores
Operador de Atribuição
Operadores Aritméticos
Operadores Relacionais
Operadores Lógicos
Objetivos
Ao final deste módulo, você estará apto a:
Operadores
Operador de Atribuição
Como já vimos anteriormente, para atribuir um valor a uma variável, é utilizado o sinal de “<-”. Você
pode atribuir valores numéricos, Strings e booleanos às suas variáveis.
Operadores Aritméticos
Operador Sinal
Adição +
Subtração -
Multiplicação *
Divisão /
Divisão Inteira \
Exponenciação ^
Resto da Divisão %
Utilizaremos o sinal de % quando precisarmos ter o resto de uma divisão, diferente de / que retorna
o resultado de um número dividido pelo outro.
Exemplo:
algoritmo "Operadores Aritméticos"
var
numero1, numero2: INTEIRO
numero3: REAL
inicio
escreva("Digite o primeiro valor: ")
leia(numero1)
escreva("Digite o segundo valor: ")
leia(numero2)
numero3 <- numero1 + numero2
escreval(numero3)
numero3 <- numero1 - numero2
escreval(numero3)
numero3 <- numero1 * numero2
escreval(numero3)
numero3 <- numero1 / numero2
escreval(numero3)
numero3 <- numero1 \ numero2
escreval(numero3)
numero3 <- numero1 ^ numero2
escreval(numero3)
numero3 <- numero1 % numero2
escreval(numero3)
fimalgoritmo
Operadores Relacionais
Os operadores relacionais são utilizados quando você precisa descobrir a relação entre um valor e
outro. Os Operadores Relacionais são:
Operador Sinal
Igual =
Diferente <>
Os Operadores Relacionais retornam sempre um valor lógico, ou seja, verdadeiro ou falso. Podemos
testar os operadores do seguinte modo:
retorno <- 10 = 20
escreval(retorno) //Falso
fimalgoritmo
Operadores Lógicos
Os operadores lógicos servem para se utilizar várias operações relacionais em uma mesma linha.
Operador Significado
Os Operadores Lógicos “E” e “Ou” seguem a lógica da tabela verdade, descrita abaixo:
A B AEB
A B A Ou B
A Não A
Verdadeiro Falso
Falso Verdadeiro
C A P Í T U L O 5
F u n ç õ e s
Funções
Objetivos
Ao final deste módulo, você estará apto a:
Definir funções
Utilizar funções..
Funções
Algumas vezes será necessário que você execute uma mesma rotina várias vezes. Para que você não
precise reescrever o mesmo código várias vezes, existem as funções. Uma função permite que você
passe parâmetros para ela. A função irá realizar o bloco de código definido nela com ou sem os
parâmetros passados, mas tome cuidado. Caso você defina uma função que receba parâmetros, será
necessário passar os parâmetros para a mesma.
Exemplo:
algoritmo "Funcoes"
var
num1,num2,resultado:REAL
funcao somar(valor1,valor2:REAL):REAL
var
total:REAL
inicio
total <- valor1 + valor2
retorne total
fim funcao
inicio
escreva("Digite o primeiro número: ")
leia(num1)
escreva("Digite o segundo número: ")
leia(num2)
resultado <- somar(num1,num2)
escreva("A soma das variáveis é ", resultado)
fim algoritmo
No exemplo anterior nós temos a função “somar” que recebe dois números. Ela soma esses dois
números e retorna o resultado da soma.
O comando “retorne” utilizado no final da função retorna a soma das duas variáveis que pode ser
utilizado do lado de fora da função como mostra o exemplo acima.
C A P Í T U L O 6
E s t r u t u r a s d e C o n t r o l e
Estrutura de Controle
Objetivos
Ao final deste módulo, você estará apto a:
Utilizar uma estrutura de controle para que seu algoritmo tome decisões
Estrutura de Controle
As estruturas de controles servem para, como o nome diz, controlar a execução do programa.
Imagine que no sistema de uma loja virtual apenas maiores de 18 anos de idade podem realizar
compras. Para isso é necessário checar se a idade do comprador é maior ou igual a 18 anos.
Utilizaremos a estrutura de controle SE que serve para executar determinado código caso uma
expressão retorne true.
Exemplo:
algoritmo "SE"
var
idade:INTEIRO
inicio
idade <- 20
SE idade >= 18 ENTAO
escreva("O usuário pode comprar")
FIM SE
fim algoritmo
Nesse exemplo será testado se a idade do usuário é igual ou maior que 18 anos. Se o teste retornar
Verdadeiro, será executado o código. Esse exemplo é bastante limitado levando em consideração
que nada acontecerá se o usuário tiver idade menor que 18 anos. Sempre que houver a necessidade
de que um bloco de código seja executado se a expressão retornar Falso, basta adicionar a o bloco
do SENAO após o código do SE.
algoritmo "SE"
var
idade:INTEIRO
inicio
idade <- 20
SE idade >= 18 ENTAO
escreva("O usuário pode comprar")
SENAO
escreva(“O usuário não pode comprar”)
FIM SE
fim algoritmo
Cada linguagem de programação tem suas estruturas de controle. Leia a documentação para a sua
linguagem preferida sobre suas estruturas de controle e utilize a melhor para cada caso.
Estruturas de Repetição
Enquanto... Faça
Para... Faça
Repita... Até
Objetivos
Ao final deste módulo, você estará apto a:
Utilizar estruturas de repetição para executar o mesmo código várias vezes
As estruturas de Repetição são utilizadas quando você precisa repetir um código várias vezes
enquanto uma determinada condição não for satisfeita. Vamos a elas.
Enquanto... Faca
O Enquanto... Faca irá executar um bloco de código até que sua condição seja satisfeita. Veja o
exemplo:
algoritmo "Enquanto"
var
num:INTEIRO
inicio
num <- 10
ENQUANTO num < 20 FACA
escreva("O número é menor que 20")
FIM ENQUANTO
fim algoritmo
Acima temos um problema. O valor de num nunca será igual ou maior que 20, então o
programa entrará no que chamamos de loop infinito. Ele entrará nesse bloco de código e
executará infinitamente, geralmente travando a o seu programa. Para que isso não aconteça, é
necessário que você faça com que a variável num receba um valor que não satisfaça a
condição do while. Um exemplo simples seria incrementar a variável a cada loop.
algoritmo "Enquanto"
var
num:INTEIRO
inicio
num <- 10
ENQUANTO num < 20 FACA
escreva("O número é menor que 20")
num <- num + 1
FIM ENQUANTO
fim algoritmo
Pronto. Agora o Enquanto executará o código um número limitado de vezes e sairá logo assim
que a condição não mais o satisfizer.
O Para... Faca funciona do mesmo modo que o Enquanto... Faca, mas utilizando ele fica mais
fácil não esquecer declarar uma variável ou incrementá-la. O Para... Faca apresenta uma
sintaxe mais definida.
algoritmo "Para"
var
num:INTEIRO
inicio
num <- 0
PARA num DE 1 ATE 10 FACA
escreva("A variável agora vale: ")
escreval(num)
FIM PARA
fim algoritmo
Podemos ver que o Para... Faca recebe uma variável inteira para poder incrementar. Na parte
“DE 1 ATE 10”, o Para... Faca irá dar um valor de 1 até 10, sempre acrescentando 1 e para cada
vez que a variável receber esse valor, o código entre “PARA...” e “FIMPARA” será executado.
O Repita... Ate é parecido com o Enquanto... Faca, porém ao invés de ele fazer o teste antes da
execução do bloco, seu teste é feito apenas depois.
algoritmo "Para"
var
num:INTEIRO
inicio
num <- 10
REPITA
escreval("O valor de num é menor que 10")
num <- num + 1
ATE num > 10
fim algoritmo
A grande diferença entre o Enquanto... Faca e o Repita... Ate é que no Repita... Ate o código
será executado pelo menos uma vez, mesmo se a condição não for satisfeita. Faça o teste
como no código acima.
Índice
C A P Í T U L O 1 ...................................................................................................................1
Introdução ................................................................................................................................. 2
Macros....................................................................................................................................... 3
Gravando uma Macro ........................................................................................................... 3
Executando a Macro.............................................................................................................. 5
Atribuindo Macros a Botões ................................................................................................. 6
Editando uma Macro ............................................................................................................. 9
Excluindo uma Macro .......................................................................................................... 11
A Pasta de Trabalho Pessoal de Macros.............................................................................. 11
C A P Í T U L O 2 ................................................................................................................. 15
Explorando o Visual Basic Editor – VBE ................................................................................... 16
A Janela de Código .............................................................................................................. 16
O Project Explorer (VBAProject) .......................................................................................... 16
A Janela de Propriedades .................................................................................................... 17
O Pesquisador de Objetos ................................................................................................... 17
As Ferramentas de Depuração ............................................................................................ 17
Definindo Padrões das Janelas de Códigos e Módulos ....................................................... 18
C A P Í T U L O 3 ................................................................................................................. 20
Trabalhando com Módulos ..................................................................................................... 21
Módulos Padrão .................................................................................................................. 21
Módulos de Classe............................................................................................................... 21
Como Criar um Módulo ....................................................................................................... 22
Salvando Módulos ............................................................................................................... 23
Exportando Modulos ........................................................................................................... 23
Trabalhando com Procedimentos ........................................................................................... 24
Procedimento SUB .............................................................................................................. 25
Procedimento FUNCTION .................................................................................................... 26
C A P Í T U L O 4 ................................................................................................................. 29
Trabalhando com Variáveis ..................................................................................................... 30
Você poderá utilizar o VBA para criar novas funcionalidades ao Excel 2013,
como formulários personalizados, botões para automatizar tarefas, criar novas funções
para utilizá-las em sua planilha.
Para utilizar bem o VBA no Excel 2013, você não precisa ser um programador
experiente, mas deve conhecer as estruturas básicas de lógica de programação, como
operadores aritméticos, operadores de comparação, estruturas de desvio condicional
e controles de repetição de código. Também é necessário, para realmente poder
aproveitar toda a potencialidade da dobradinha “VBA + Excel 2013”, que você deve
domine os conhecimentos de nosso curso de Excel 2013 avançado. Quanto mais você
conhece os recursos do Excel, melhor e mais fácil de serem criados, serão os seus
procedimentos em VBA.
No Excel 2013, podemos gravar uma Macro através da Guia Exibição, clicando no
botão Macros, que fica do lado direito da guia. Porem é bem mais fácil trabalhar com a
guia Desenvolvedor, a qual possui várias funcionalidades para facilitar nosso trabalho.
Com a guia desenvolvedor habilitada, siga os passos abaixo, para começar a gravar a
macro:
1. Na guia Desenvolvedor utilize o botão Gravar Macro.
OBSERVAÇÕES:
Na caixa Nome da macro, dê um nome para a macro que você está criando.
São aceitos até 64 caracteres. Não é permitido espaços e não se aconselha o
uso de acentos (embora permitido). O nome deve começar por uma letra e não
pode ser igual ao de uma macro já existente no sistema.
Na caixa Tecla de Atalho, Vale lembrar que, caso a combinação gerada seja um
dos atalhos default do Excel, a mesma passará a executar a macro, anulando o
atalho do Excel. Como uma segunda opção, pode-se digitar uma letra em
maiúscula. Assim, será gravado Ctrl +Shift + LETRA. Ou ainda, deixar a macro
sem uma tecla de atalho.
Na caixa Armazenar Macro em, clique na seta à direita e escolha onde você
deseja armazenar a macro:
- Pasta de trabalho pessoal de macros: Use esta opção se você desejar que a
macro esteja disponível para qualquer arquivo do Excel, quando você logar com
seu usuário, no computador que foi utilizado para gravar a macro.
Esta pasta de trabalho: O código-fonte da macro é salvo dentro próprio arquivo onde
ela foi originada. Esta é a opção mais usual quando as ações da macro dependem da
planilha em questão ou não fazem sentido serem executadas em outra planilha
qualquer. Dessa forma, se você desejar que outra pessoa possa executar sua macro,
bastará copiar seu arquivo de planilha normalmente.
- Nova pasta de trabalho: Caso você prefira que o Excel crie um novo arquivo
vazio para salvar exclusivamente o código da macro, selecione esta opção.
Deste modo, este novo arquivo criado deverá ser transportado e aberto junto
com o arquivo da planilha desejada para que a macro funcione.
6. Agora, preste atenção, pois tudo o que você fizer a partir deste momento no
Excel estará sendo gravado na macro. Execute, no Excel, os comandos
desejados para salvar na macro.
Executando a Macro
Botões na Planilha
5. Você pode utilizar o botão modificar para alterar o ícone do botão a ser criado
e adicionar um nome de exibição para esta macro.
NOTA: Para excluir o botão criado ou alterar qualquer uma das opções descritas acima,
será necessário abrir novamente a janela Personalize a Barra de Ferramentas de
Acesso Rápido. Para excluir o botão, por exemplo, basta seleciona-lo e clicar em
Remover. A exclusão do botão não irá apagar a macro.
Editar uma macro significa modificá-la, isto é, acrescentar ou até mesmo excluir
comandos que constam nela. Esta tarefa somente pode ser efetuada através do editor
do Visual Basic, o chamado VBE. Você pode acessar o VBE de duas maneiras:
2. Selecione o nome da macro que você deseja editar e clique sobre o botão
Editar. O editor do Visual Basic (VBE) se abre, com o módulo que contém a
macro selecionada, para que você, através do VBA, possa editar a macro, como
estudaremos adiante.
2. Selecione o nome da macro que você deseja excluir e clique sobre o botão
Excluir.
Ela é criada quando você grava sua primeira macro, direcionando-a para “Pasta
de trabalho pessoal de macros” e esta pasta, normalmente, contém apenas uma
planilha em branco e módulos (rotinas) contendo macros. Você pode inserir outras
planilhas se desejar – embora isso não seja aconselhável, já que a função desta pasta é
servir apenas como uma biblioteca local de macros.
1. Na guia Exibição, clique na opção Botão Reexibir (Este botão só está disponível
quando existe uma pasta de trabalho do Excel oculta).
NOTA:
Após editar ou excluir a macro desejada no arquivo Pessoal.xlsb deve-se
novamente ocultá-lo. Caso contrário, da próxima vez que o Microsoft Excel for
iniciado, a pasta Pessoal será aberta de forma visível e acabará sendo
sobrescrita por usuários desavisados. Isso acabará gerando “confusões” entre
diferentes usuários de seu micro. Para tanto, estando ainda com o arquivo
Pessoal.xlsb visível, na guia Exibição, clique na opção Ocultar. Em seguida, saia
do Excel e inicie-o novamente.
Exercício 1
Observe a planilha abaixo:
1.1. Gerar subtotais na planilha por "Vendedor", calculando a soma do valor total
vendido por cada um. Associar a macro a um botão de comando acima da
planilha.
1.2. Remover os subtotais gerados pela macro anterior e retornar a classificação da
planilha por ordem crescente de Data / Item / Vendedor. Associar a macro a um
segundo botão de comando na planilha.
1.3. Ativar / Desativar o AutoFiltro na lista apresentada. Associar a macro a uma caixa
de seleção acima da planilha.
1.4. Classificar as vendas por:
1.4.1. Data / Item / Vendedor
1.4.2. Vendedor / Item / Data
1.4.3. Val Total / Data / Item
1.5. Associar cada uma das 3 macros gravadas a um botão de opção envolvendo-os
com uma caixa de grupo.
A Janela de Código
É nesta janela que você escreve, exibe e edita o código do Visual Basic. Cada
módulo é aberto em uma janela de código separada.
A Janela de Código e os módulos serão vistos com mais detalhes no próximo capítulo.
O Pesquisador de Objetos
As Ferramentas de Depuração
Os botões desta barra são atalhos para alguns comandos que você também
encontra nos menus. Estes botões são usados na depuração de códigos, ou seja, para
encontrar erros de lógica no seu código. Cada um deles realiza uma determinada ação,
entre elas estão: Executar Sub/UserForm, Interromper, Redefinir, etc.
Através da guia Encaixe, você pode alterar a maneira como as diversas janelas
de trabalho podem ser fixadas dentro do ambiente do VBE.
• Outra opção bem interessante, também da guia Editor, são Informações Rápidas
Automaticas. Se esta opção estiver marcada, serão oferecidos a você, conforme for
escrevendo, os códigos, informações sobre a sintaxe e também argumentos que você
precisa utilizar. Veja um exemplo:
Módulos Padrão
São módulos nos quais você pode colocar os procedimentos Sub e Function que
deseja que estejam disponíveis a outros procedimentos, por todo o seu projeto ativo.
As macros gravadas são armazenadas neste tipo de módulo.
Eles contêm procedimentos de uso geral que não estão associados a nenhum
outro objeto, como planilhas, pasta de trabalho ou formulário, e que podem ser
executados dentro de qualquer outro módulo pertencente ao projeto. Por este
motivo, as definições num Módulo Padrão são, por default, do tipo Public. Ao serem
criados, estes módulos aparecem abaixo das planilhas, na janela Project Explorer do
VBE.
Módulos de Classe
Estes módulos contêm um código local para uma determinada classe ou objeto,
ou seja, para uma planilha, a pasta de trabalho ou um formulário no Excel. Quando
você cria o primeiro procedimento de um formulário, o Excel cria automaticamente
um módulo associado a este. Este módulo é chamado de Módulo de Classe, e é nele
que criamos os procedimento em VBA para o formulário.
Caixa de Objetos
É uma caixa onde são listados todos os objetos existentes, que
originam o código implementado na janela Módulo. Clique na seta à
direita para escolher um dos objetos a lista.
Caixa de Procedimentos
É uma caixa que lista todas as funções e procedimentos
implementados na janela Módulo. Clique na seta à direita para escolher
algum procedimento ou função da lista.
Área de Código
Área onde é escrito o código, ou seja os procedimentos em VBA.
1. Quando você grava uma macro, sem que você perceba, os códigos desta são
gravados em um módulo. Esta é a maneira mais simples de se criar um módulo.
2. Você também pode criar um módulo, seja ele Padrão ou de Classe, através do
menu Inserir do VBE. Quando você criar um módulo através do menu Inserir,
este abrirá automaticamente um Módulo Padrão ou de Classe, dependendo da
opção escolhida, para que você possa inserir as linhas de códigos desejadas.
Pode-se ainda clicar com o botão direito do mouse no Project Explorer, que um
menu pop-up aparecerá. Selecione, então, a opção Inserir, e você verá uma
lista de opções, dentre elas, escolha Módulo Padrão ou de Classe.
Os módulos criados no VBA são salvos juntos com o arquivo .xlsx. Assim sendo,
para salvar um Módulo Padrão ou Módulo Classe ou ainda um UserForm (formulário
do usuário, conforme veremos adiante), basta salvar o arquivo do Excel.
Exportando Modulos
• Procedimento SUB;
• Procedimento FUNCTION;
• Procedimento PROPERTY.
Veja como poderíamos chamar esta procedure dentro de outra Sub, passando
um valor como parâmetro.
Sub Imposto()
...
Resultado(totcred – totdeb)
...
End Sub
Procedimento FUNCTION
NOTA: Sugerimos que você use o procedimento Sub quando não for necessário
retornar um valor, e que seja usado o procedimento Function quando for necessário
retornar um valor.
Procedimento Property
O procedimento Property é uma série de instruções do VBA que permite a
criação de propriedades personalizadas. Ao criar um procedimento Property, este irá
tornar-se uma propriedade do módulo que contém o procedimento.
3. Na caixa Escopo, escolha se a função que está sendo criada será Pública ou
Particular;
4. Se você desejar que as variáveis locais sejam estáticas, marque a opção Todas
as variáveis locais como estáticas;
Tipos de Dados
Veja abaixo para que servem cada um desses tipos e quanto espaço ocupam na
memória do computador:
• Byte: É usado para armazenar números inteiros e positivos, que variam no intervalo
de 0 a 255. As variáveis de tipo Byte são armazenadas como números de 8 bits simples
(ocupa 1 byte) e sem sinal.
• Integer Este tipo de dado é armazenado como número de 16 bits (ocupa de memória
2 bytes), cujo valor de intervalo é de -32.768 a 32.767.
• Long: Este tipo de dado é armazenado como número de 32 bits (ocupa de memória 4
bytes), cujo valor de intervalo é de -2.147.483.648 a 2.147.483.647.
• Currency: Este tipo de dado é muito útil para cálculos que envolvem dinheiro, pois
sua precisão é de 15 dígitos à esquerda da vírgula decimal e 4 dígitos à direita,
representando assim um intervalo de -922.337.203.685.477,5808 a
922.337.203.685.477,5807. Este dado é armazenado como número de 64 bits (ocupa
de memória 8 bytes).
• Date: Este tipo de dado é armazenado como números de 64 bits (ocupa de memória
8 bytes) que representam as datas que variam de 1 de janeiro de 100 a 31 de
dezembro de 9999 e as horas de 0:00:00 a 23:59:59. Qualquer valor literal de data
reconhecível pode ser atribuído às variáveis Date (data). Os literais Date devem estar
entre sinais (#), por exemplo, #1 de janeiro de 1993# ou #1 jan 93#. Importante: As
variáveis Date exibem as datas de acordo com o formato abreviado de data
reconhecido por seu computador. As horas são exibidas de acordo com o formato de
hora (12 ou 24 horas) reconhecido por seu computador.
Existem alguns nomes reservados, os quais não podem ser usados, como: DIM-
SUB-WITH-END e outras. Caso você utilize uma palavra reservada, o VBA emitirá um
erro ao executar o programa. O VBA não faz distinção entre maiúsculas e minúsculas,
nos nomes das variáveis.
Assim que você determinar um nome para a variável, poderá então declarar
seu tipo de dados como: Integer, Boolean, Byte, Long, Currency, Single, Date, String,
Object ou Variant (quando não declarada).
O primeiro passo para se declarar uma variável, é determinar onde ela será
declarada, e isto depende muito de cada sistema. Geralmente as variáveis são
declaradas usando-se a instrução Dim. Uma instrução de declaração pode ser inserida
dentro de um procedimento, e isto criaria uma variável que chamamos de Nível de
Procedimento. Ou ela poderia ser inserida na parte superior de um módulo, na seção
Declarações, então neste caso estaríamos criando uma variável de Nível de Módulo.
Você deve utilizar uma instrução Public, em Nível de Módulo, quando desejar
que a variável esteja disponível para todos os procedimentos no projeto. Se a variável
Pública for declarada num Módulo Padrão ou num Módulo Classe, ela também poderá
ser utilizada em qualquer projeto que faça referência ao projeto onde a variável
Pública foi declarada.
A sintaxe é a mesma:
Sua sintaxe:
Note que somente será inserida a instrução Option Explicit nos novos módulos
inseridos, os módulos existentes não serão alterados. Se você desejar, você mesmo
poderá inserir a instrução. Basta digitar Option Explicit no cabeçalho do módulo
desejado.
Dim Soma, Var1, Var2 As Integer (Somente Var2 é Integer, as demais são Variant)
Soma = Var1 + Var2
Constantes
Constantes são itens nomeados que mantêm um valor constante por toda a
execução de um programa. Uma constante é um nome significativo que assume o local
de um número ou uma sequência de caracteres que não serão alterados durante a
execução de um procedimento.
Assim, uma constante não pode ser modificada no decorrer de uma rotina e
nem atribuir um novo valor, assim como pode com uma variável. Sugerimos o uso de
constantes para facilitar a leitura e a manutenção do código do seu programa.
Declarando Constantes
Para declarar constante Pública você deverá usar a palavra-chave Public antes
da instrução Const. Você não pode declarar uma constante Public dentro de um
procedimento. Já para explicitar uma constante Privada, use a palavra-chave Private
antes da instrução Const. Neste caso, você também não pode declarar uma Private
Const em um procedimento. Se você seguir estes procedimentos, você estará
facilitando a interpretação do seu código.
Sua sintaxe:
Declarando Matrizes
Na linha de código a seguir, uma matriz de tamanho fixo é declarada como uma
matriz Integer com 11 linhas e 11 colunas:
Sua sintaxe:
[Public/Private] <nome Matriz> (Quantidade de elementos) As <tipo de dados>
Você pode utilizar a instrução ReDim para declarar uma matriz implicitamente
dentro de um procedimento. Tome cuidado para não digitar errado o nome da matriz
quando utilizar a instrução ReDim. Mesmo que haja uma instrução Option Explicit
incluída no módulo, será criada uma segunda matriz. Por exemplo, a instrução a seguir
acrescenta 10 elementos à matriz varArray sem perder os valores atuais dos
elementos originais.
Operadores Lógicos
And – Not – Or
Onde:
Result qualquer variável numérica.
Expression1 qualquer expressão.
Operador de sua escolha.
Expression qualquer expressão.
Observe que somente o operador Not tem uma sintaxe diferente. Veja abaixo:
Result = Not expression
Operador Comentário
And Efetua uma conjunção lógica em duas expressões.
Not Efetua uma negação lógica em uma expressão.
Or Efetua uma disjunção lógica em 2 expressões
Operadores Aritméticos
^ * / \ Mod + -
Exponenciação ( ^ )
Result = number ^ exponent
Divisão ( / )
Result = number1 / number2
Este operador é usado para dividir dois números e retornar um resultado de ponto
flutuante. Exemplo:
Dim valor
Valor = 5 / 2 “retorna 7,5”
Divisor de Inteiros ( \ )
Result = number1 \ number2
Este operador é usado para dividir dois números e retornar um resultado inteiro.
Exemplo:
Dim valor
Valor = 11 \ 2 “retorna 5”
Este operador é usado para dividir dois números e retornar apenas o resto da divisão.
Exemplo:
Dim valor
Valor = 7 Mod 2 “retorna 1”
Adição ( + )
Result = expression1 + expression2
Subtração ( - )
Result = number1 - number2
Este operador é usado para calcular a diferença entre dois números. Exemplo:
Dim resultado
Resultado = 10 – 3 “retorna 7”
Estes operadores servem para indicar uma relação entre dois ou mais valores
numa expressão. Veja a lista destes operadores abaixo:
Onde:
Result qualquer variável numérica.
Expression1 qualquer expressão.
Operador de sua escolha.
Expression 2 qualquer expressão.
Operador Comentário
< Menor que
<= Menor ou igual a
> Maior que
>= Maior ou igual a
<> Diferente
= Igual
Operadores de Concatenação
Dim var1
Var1 = 2 + 5 este processo retornaria “7”
Dim var1
Var1 = 2 & 5 este processo retornaria “25”
Dim exemplo
exemplo = “concatenação” & “correta” (Isto retornaria “concatenação correta”)
Format
Esta função irá formatar valores numéricos, indicando o número de casas decimais, o
número de zeros iniciais ou finais, bem como formatar os valores de moeda. Sintaxe:
Format(expression [,format [,firstdayofweek[, firstweekofyear]]])
Onde:
• Expression é qualquer expressão válida (obrigatória);
• Format é uma expressão de formato válida ou nomeada pelo usuário;
• Firstdayofweek é uma constante que indica o primeiro dia da semana;
• Firstweekyear é uma constante que indica a primeira semana do ano;
Lcase
Esta função retorna uma String convertida em letras minúsculas. Mas note que todas
as letras minúsculas e caracteres diferentes de letras não serão alterados. Sintaxe:
Lcase(string)
Onde: String é obrigatória e pode ser qualquer tipo de expressão de seqüência válida.
Ucase
Esta é uma função que retorna uma seqüência de caracteres convertida em
maiúsculas. Sintaxe:
Ucase(string)
Onde: String é obrigatória e você pode usar qualquer expressão de seqüência válida.
Left / Right
Estas funções retornam uma Variant (String) que contém um número específico de
caracteres, a partir do lado esquerdo/direito de uma seqüência de caracteres. Sintaxe:
Left ou Right (string, lenght)
Onde:
• String é uma expressão de seqüência obrigatória, a partir do qual são
retornados os caracteres mais à esquerda/direita.
• Length é uma expressão numérica Variant (Long) obrigatória que indica
a quantidade de caracteres a ser retornada.
Ltrim / Rtrim
Esta função retorna uma sequência de caracteres específicos, sem espaços à esquerda
ou Direita. Sintaxe:
Ltrim ou Rtrim(string)
Onde: String é uma expressão de seqüência válida obrigatória.
Mid
Esta função retorna uma String que contém um número especificado de caracteres de
uma seqüência de caracteres. Sintaxe:
Mid(string, start[,length])
Onde:
• String é uma expressão de seqüência obrigatória da qual são retornados
os caracteres.
• Start é um Long obrigatório que determina a posição do caractere em
String onde a parte a ser considerada começa.
• Length é um Long opcional que determina o número de caracteres a ser
retornado.
String
Retorna um caractere, determinado número de vezes. Sintaxe:
String(number, character)
Onde:
• Number é um Long obrigatório que determina o comprimento da
seqüência de caracteres retornado.
• Character é uma Variant obrigatória que funciona da seguinte forma: ao
se usar um código de caracteres, especifica-se caractere ou a expressão
de seqüência, cujo primeiro caractere será usado para formar a
seqüência de caracteres de retorno.
Date
Esta função é usada para retornar a data atual do sistema. Sintaxe:
Date()
Time
Esta função retorna uma Variant Date que indica a hora atual do sistema. Sintaxe:
Time()
DateAdd
Esta função irá retornar uma data à qual foi adicionado um intervalo de tempo
especificado.
DateDiff
Esta função retorna uma Variant Long que especifica o número de intervalo de tempo
entre duas datas especificadas. Sintaxe:
DateDiff(interval,date1,date2,[,firstdayweek[,firstweekyear]])
Onde:
• Interval é uma expressão de seqüência obrigatória que serve para
calcular a diferença de tempo entre a date1 e date2.
• Date1, Date2 são as duas datas que você deseja usar no cálculo, é
obrigatória.
• Firstdayweek é uma constante opcional que especifica o primeiro dia da
semana, se você não usá-la, será considerado o domingo como o
primeiro dia.
• Firstweekyear é uma constante opcional que especifica a primeira
semana do ano, se você não usá-la, será considerada aquela que ocorre
o dia primeiro de janeiro.
DateSerial
É uma função que retorna uma Variant Date para um ano, mês e dia especificados.
Sintaxe:
DateSerial(year,month,day)
Onde:
• Year é uma expressão numérica obrigatória entre 100 a 9999, para
especificar o ano.
• Month é qualquer expressão numérica obrigatória, serve para
especificar o mês.
• Day é qualquer expressão numérica obrigatória, serve para especificar o
dia.
DateValue
É uma função que retorna uma data. Sintaxe:
DateValue(date)
Onde:
• Date é qualquer expressão de seqüência que represente uma data de 1º
de Janeiro de 100 a 31 de dezembro de 9999. Pode ser também
qualquer expressão que represente uma data, uma hora ou ambas
neste intervalo.
Hour
Esta função retorna um número inteiro entre 0 e 23, que representa o valor das horas
de uma determinada hora completa. Sintaxe:
Hour(time)
Onde: Time é um argumento obrigatório. Você pode usar qualquer tipo de
combinação que possa representar uma hora, seja essa uma expressão numérica ou
uma expressão de seqüência.
Minute
Esta função retorna um número inteiro entre 0 e 59, que representa os minutos de
uma hora completa. Sintaxe:
Minute(time)
Onde: Time é um argumento obrigatório. Você pode usar qualquer tipo de
combinação que possa representar uma hora, seja essa uma expressão numérica ou
uma expressão de seqüência.
Month
Esta função retorna um número inteiro entre 1 a 12, que representa o mês de uma
data completa. Sintaxe:
Month(date)
Onde: Date poderá ser uma expressão numérica, de seqüência ou qualquer
combinação que possa representar uma data.
Second
Esta função retorna um número inteiro entre 0 e 59, que representa os segundos de
uma hora completa. Sintaxe:
Second(time)
Onde: Time é um argumento obrigatório. Você pode usar qualquer tipo de
combinação que possa representar uma hora, seja essa uma expressão numérica ou
uma expressão de seqüência.
Year
Esta função retorna um número inteiro entre 100 a 9999, que representa o ano de
uma data completa. Sintaxe:
Year(date)
Onde: Date poderá ser uma expressão numérica, de seqüência ou qualquer
combinação que possa representar uma data.
Abs
Esta é uma função que retorna um valor do mesmo tipo que é passado para ele
especificando o valor absoluto de um número. Sintaxe:
Abs(number)
Onde: Number é obrigatório e pode ser qualquer expressão numérica válida.
Rnd
Esta é uma função que retorna um Single que contém um número aleatório. Sintaxe:
Rnd([number])
Onde: Number é um Single opcional ou qualquer expressão numérica válida.
Sng
Esta é uma função que retorna um Variant Integer que indica o sinal de um Número.
Sgn(number)
Onde: Number é um argumento obrigatório que pode ser qualquer expressão
numérica válida.
Sqr
Esta é uma função que retorna um Double que especifica a raiz quadrada de um
número. Sintaxe:
Sqr(number)
Onde: Number é um Double obrigatório ou qualquer expressão numérica válida maior
ou igual a zero.
Funções de Planilha
Várias funções que você utiliza em suas planilhas no Excel 2013 possuem
correspondentes no VBA, porém, isto nem sempre acontece. Você pode utilizar as
funções de planilha do Excel 2013, dentro do VBA. Para isto basta seguir o exemplo
abaixo, modificando a funções para a que você deseja utilizar:
Sub SomarNumeros()
Dim TotalSoma as Double
TotalSoma = WorksheetFunction.Sum(Range(“A1:A10”))
MsgBox TotalSoma
End Sub
Como você pode notar o nome da função, depois do objeto WorkSheetFunction, deve
aparecer em inglês.
Neste capítulo, iremos apresentar uma alternativa mais simples para este tipo
de interação, que são os Quadros de Diálogo. O VBA possui dois tipos de quadro de
diálogo: a Caixa de Mensagem (MsgBox) e Caixa de Entrada (InputBox).
É uma caixa predefinida que exibe uma mensagem de aviso ao usuário. Você
pode exibir esta caixa de mensagem utilizando a função MsgBox. Através desta função
o usuário poderá se comunicar por meio de botões. É simples uma mensagem
aparecerá na tela e o usuário poderá confirmar ou cancelar uma determinada
operação.
Sintaxe da função:
MsgBox(prompt [,buttons] [,title])
Onde:
• Prompt é uma expressão de seqüência obrigatória, exibida como
mensagem na caixa.
• Buttons é uma expressão numérica opcional, que é a soma de valores
que irá determinar: o tipo do botão, o estilo do ícone, a identidade do
botão padrão e a modalidade da caixa de mensagem. Se este
argumento for omitido, o parâmetro para Buttons será 0. (Veja a seguir,
nas tabelas, algumas definições para este argumento).
• Title é uma expressão de seqüência opcional exibida na barra de título
da caixa de diálogo.
Se você deseja uma caixa de mensagem contendo os botões Sim e Não, o ícone de
interrogação e com o primeiro botão como padrão, o valor do argumento seria:
Por fim, como MsgBox é uma função, você deve associá-la a uma variável de retorno.
Os valores de retorno desta função são:
Esta função se diferencia da função anterior porque ela não serve somente
como uma caixa de mensagem e sim como uma caixa de entrada. Com esta função, o
usuário pode inserir um dado na caixa, que retornará uma String com o conteúdo dela.
Sintaxe:
InputBox(Prompt[,title][,default][,xpos][,ypos][,helplife ,context])
Exemplo
Sub RodaINSS()
End Sub
Para podermos trabalhar de maneira eficiente com o VBA dentro do Excel 2013,
devemos ter uma noção desta organização, assim como uma pequena noção de alguns
termos utilizados em Programação Orientada a Objetos(OOP).
Para este nosso curso, iremos fazer algumas simplificações dos conceitos de
OOP, para que possamos, sem aprofundamento em detalhes teóricos, obtermos os
conhecimentos necessários para desenvolvermos nossos procedimentos.
Objetos
No dia a dia, todos já estamos acostumados com o termo objeto, porém, dento
do VBA, este termo ganha importância e um conceito um pouco mais amplo, em
relação ao que já estamos acostumados.
Propriedades
Todos os Objetos de programação, assim como os da vida real, possuem
características. Estas características dos objetos, no VBA, serão chamadas de
Propriedades.
Toda célula, também possuem um endereço, com A1, F10, G150, etc. Nós
podemos, através do VBA, exibir uma caixa de mensagem, onde apareça o endereço
da célula que está atualmente selecianada, porém não podemos trocar ó endereço de
uma célula, fazendo com que a célula A1, passe a ter o endereço B1. Dizemos que a
propriedade Address, do objeto Range, é somente leitura, pois podemos consultá-la,
para descobrir seu valor, mas não podemos alterá-la.
Eventos
Os eventos dos objetos são uma parte muito importante dentro do VBA, pois é
nestes eventos que iremos escrever boa parte do código em VBA para automatizar
suas pastas de trabalho.
Propriedades
ActiveCell
Retorna um objeto Range que representa a célula ativa na janela ativa (a janela visível)
ou na janela especificada. Se a janela não estiver exibindo uma planilha, esta
propriedade falhará. Somente leitura.
ActiveSheet
Retorna um objeto que representa a planilha ativa (a planilha visível) na pasta de
trabalho ativa ou na janela ou pasta de trabalho especificada. Retorna Nothing se não
houver planilha ativa. Somente leitura.
ActiveWorkbook
Retorna um objeto Workbook representando a pasta de trabalho da janela ativa (a
janela visível). Somente leitura. Retorna Nothing se não houver janelas abertas.
DisplayAlerts
O valor padrão é True. Defina essa propriedade como False se não quiser ser
perturbado por solicitações e mensagens de alertas enquanto uma macro está em
execução; sempre que uma mensagem exige uma resposta, o Microsoft Excel escolhe
a reposta padrão.
Visible
Esta propriedade, quando é definida como FALSE, oculta a tela principal do Excel. Isto
pode ser útil quando você quer exibir um formulário personalizado.
Métodos
Calculate
Calcula todas as pastas de trabalho abertas, uma planilha específica em uma pasta de
trabalho ou um intervalo especificado de células em uma planilha.
GetOpenFileName
Exibe a caixa de diálogo Abrir padrão e obtém um nome de arquivo do usuário sem
realmente abrir nenhum arquivo.
Sintaxe: expressão.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
GetSaveAsFilename
Exibe a caixa de diálogo Salvar como padrão e obtém um nome de arquivo do usuário
sem realmente salvar nenhum arquivo.
Sintaxe: expressão.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
Propriedades
ActiveCell
Retorna um objeto Range que representa a célula ativa na janela ativa (a janela visível)
ou na janela especificada. Se a janela não estiver exibindo uma planilha, esta
propriedade falhará. Somente leitura.
Password
Retorna ou define a senha que deve ser fornecida para abrir a pasta de trabalho
especificada. String de leitura/gravação
Saved
True se nenhuma alteração tiver sido feita na pasta de trabalho especificada desde a
última vez em que foi salva. Boolean de leitura/gravação.
Path
Retorna um valor String que representa o caminho completo para a pasta de trabalho,
excluindo o separador final e o nome do arquivo
Count
Retorna um valor Long que representa o número de objetos na coleção
Métodos
Calculate
Calcula todas as pastas de trabalho abertas, uma planilha específica em uma pasta de
trabalho ou um intervalo especificado de células em uma planilha.
Close
Fecha o objeto
Save
Salva alterações na pasta de trabalho especificada.
SaveAs
Salva alterações feitas no gráfico ou na planilha em um arquivo diferente.
Sintaxe:
expressão.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended,
CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)
Propriedades
Count
Retorna um valor Long que representa o número de planilhas na coleção.
Name
Retorna ou define um valor String que representa o nome da planilha.
Visible
Retorna ou define um valor XlSheetVisibility que determina se a planilha será visível.
xlSheetVisible -1 Exibe a planilha
xlSheetHidden 0 Oculta a planilha que o usuário pode reexibir através do menu.
xlSheetVeryHidden 2 Oculta o objeto para que a única maneira de torná-lo novamente
visível seja definindo esta propriedade como True (o usuário
não pode tornar o objeto visível).
Exemplo
Sub EscondePlanilha()
ActiveSheet.Visible = xlSheetHidden
End Sub
Métodos
Add
Cria uma nova planilha. A nova planilha se torna a ativa.
Sintaxe: expressão.Add(Before, After, Count)
Exemplo
Sub CriaPlanilha()
Worksheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = MonthName(InputBox(“Informe o nome da planilha”))
End Sub
Delete
Exclui o objeto.
Propriedades
Address
Retorna um valor String que representa a referência de intervalo no idioma da macro.
Exemplo
Set mc = Worksheets("Sheet1").Cells(1, 1)
MsgBox mc.Address() ' Retorna $A$1
MsgBox mc.Address(RowAbsolute:=False) ' Retorna $A1
MsgBox mc.Address(ReferenceStyle:=xlR1C1) ' Retorna R1C1
Cells
Retorna um objeto Range que representa as células no intervalo especificado.
Exemplo
Este exemplo define como itálico o estilo da fonte para as células A1:C5
Range(Cells(1, 1), Cells(5, 3)).Font.Italic = True
End
Retorna um objeto Range representando a célula no fim da região que contém o
intervalo de origem. Equivalente a pressionar END+SETA PARA CIMA, END+SETA PARA
BAIXO, END+SETA PARA A ESQUERDA ou END+SETA PARA A DIREITA.
Exemplo
Este exemplo seleciona a célula no topo da coluna B na região que contém a célula B4.
Range("B4").End(xlUp).Select
Este exemplo seleciona a célula no topo da coluna B na região que contém a célula B4.
Range("B4").End(xlUp).Select
Outras opções:
(xltoRight) Para a direita
(xltoLeft) Para a esquerda
Font
Altera os atributos de fonte (nome, tamanho, cor, etc) de uma célula.
Value Retorna ou define um valor Variant que representa o valor do intervalo especificado
Métodos
Clear
Limpa o intervalo inteiro.
Copy
Copia o intervalo para o intervalo especificado ou para a Área de Transferência.
Cut
Recorta o intervalo para a Área de Transferência ou o cola em um local especificado
Delete
Exclui o intevalo.
Insert
Insere uma célula ou um intervalo de células na planilha ou folha de macro e desloca
as outras células para liberar espaço.
If...Then...Else
Este controle de fluxo executa condicionalmente um grupo de instruções
dependendo do valor de uma expressão. A sintaxe deste controle:
If <condição1> Then
<bloco de comandos>
ElseIf <condição2> Then
<bloco de comandos>
Else
<bloco de comandos>
End If
Este controle faz com que as <condições> sejam avaliadas como True ou False, para
que o fluxo do programa siga um caminho ou outro.
expressão To expressão
ou
IS operador expressão
Do...Loop
Este comando repete suas instruções até achar uma condição que seja True. Em
uma instrução Do...Loop você pode usar duas palavras-chaves: While ou Until, e cada
uma destas palavras você pode utilizar de duas formas:
• Você pode usar a palavra-chave While para verificar uma condição em
uma instrução Do...Loop, antes de entrar no Loop ou depois do Loop ser
executado pelo menos uma vez;
• Do mesmo modo, você pode usar a palavra-chave Until para verificar
uma condição em uma instrução Do...Loop, antes de entrar no Loop ou
pode verificá-la depois do Loop ser executado pelo menos uma vez.
A pergunta que você deve estar se fazendo agora é: então qual a diferença
entre elas? Nós respondemos: o funcionamento entre estas duas palavras-chaves é
semelhante, mas a diferença básica é que a instrução Do Until, repete o Loop
enquanto a condição for Falsa, já o Do While repete o Loop enquanto a condição for
Verdadeira. (Loop quer dizer Laço).
Veja agora a sintaxe deste controle para verificar a condição depois do Loop, se
executado pelo menos uma vez:
Do
<Bloco de comandos>
[Exit Do]
Loop [While ou Until] <expressão>
For…Next
Esta instrução repete um bloco de instruções um número específico de vezes. A
sintaxe deste comando:
For I = 1 to 5
<comandos...>
Next I
For I = 10 to 0 Step -2
<comandos...>
Next I
O comando Exit For força a saída desta estrutura, semelhante ao Exit Do.
For Each…Next
Esta instrução repete um grupo de instruções para cada objeto em uma coleção. A
sintaxe deste comando é:
O comando Exit For nesta instrução também força a saída de uma estrutura.
With <objeto>
.<parâmetro 1>
.<parâmetro 2>
.<parâmetro 3>
End With
With Selection.Font
.Name = "Arial Black"
.Size = 16
.Italic = True
.ColorIndex = 5
End With
Observe o exemplo acima, que formata as células selecionadas com o a fonte Arial
Black, tamanho 16, em itálico e na cor Azul.
NOTA: Para depurar passo a passo todo o programa, basta, sem definir nenhum ponto
de interrupção, posicionar o cursor dentro da rotina desejada e pressionar F8. A cada
vez que esta tecla for pressionada será executada cada linha do seu código, cujo
resultado poderá ser observado através da janela do Microsoft Excel. Neste caso,
Tratamento de Erros
Mesmo depois de depurar todo o seu código, ainda sim podem ocorrer erros
em suas aplicações em VBA. Veja, por exemplo, o código abaixo:
Sub CalcularRaiz2
Dim varValor1 As Variant
varValor1 = InputBox(“Digite um Valor”)
ActiveCell.Value = Sqr(varValor1)
End Sub
Não existe erro de sintaxe no código acima. Se você executá-lo em uma planilha e
digitar 25 na caixa de diálogo, a macro colocará o número 5 na célula ativa.
Porém, se você digitar -5, a macro retornará um erro. Existe uma série de situações em
que esta macro irá gerar um erro.
Para prevenir erros inesperados, existe a instrução “On Error”, que executa
uma ação quando um erro inesperado acontece. Esta instrução pode ser utilizada de
duas formas:
2) Quando você deseja que o código continue a ser executado apesar do erro.
Sub Teste()
.
On Error Resume Next
.
.
.
End Sub()
Através dos códigos do VBA, você pode alterar propriedades, chamar métodos
ou responder a algum evento. Para determinar as propriedades de cada controle que
você está usando, selecione o controle e clique no botão Propriedades da Sessão
Controles .
Nesta caixa você encontra duas fichas que dizem respeito às propriedades do
controle selecionado:
• Alfabético - Propriedades em Ordem Alfabética: São todas as
propriedades do controle, apresentadas em ordem alfabética.
• Categorizado – Propriedades por Categoria: São todas as propriedades
do controle, apresentadas por categorias, para facilitar a procura. Por
Caixa de Seleção
Este controle é usado para exibir um valor Sim ou Não.
Entre as propriedades específicas deste objeto podemos citar:
• Visível: Se for igual a Sim, a caixa de seleção estará ativa na tela, se for
Não, estará desabilitada.
Caixa de Combinação
Este controle é uma caixa de texto e uma caixa de listagem combinados. Com
ele, o usuário pode digitar diretamente na caixa ou selecionar o valor da lista.
Entre as propriedades específicas deste controle podemos citar:
• Origem do Controle: Determina de onde os dados da caixa de
combinação se originarão.
• Linhas da Lista: Determina o número de linhas que a caixa de
combinação exibirá.
Botão de Comando
Os botões de comando são usados para iniciar uma ação ou um conjunto de
ações.
Entre as propriedades específicas deste controle podemos citar:
• Figura: Define uma imagem que será mostrada no botão;
• Padrão: Indica se o botão é o padrão. Se for igual a Sim, toda vez que o
usuário pressionar a tecla Enter, equivalerá a execução do evento Ao
Clicar.
Rótulo
Os rótulos servem para exibir textos, legendas ou instruções.
Entre as propriedades específicas deste controle podemos citar:
• Alinhamento do Texto: Modifica o alinhamento do texto inserido no
controle;
• Tamanho da Fonte: Determina o tamanho da fonte;
• Estilo da Borda: Determina o estilo da borda do controle.
Caixa de Texto
Este controle é usado para exibir valores de uma origem do registro, ou para
aceitar entradas de dados de um usuário.
Entre as propriedades específicas deste botão podemos citar:
• Origem do Controle: Determina a origem dos dados do controle;
• Alinhamento: Determina o alinhamento do texto inserido;
• Barras de Rolagem: Determina se o controle terá barras de rolagem ou
não.
Botão de Alternância
Estes botões são utilizados para exibir um valor Sim ou Não. Se ele estiver
pressionado, um determinado registro é verdadeiro, se não estiver pressionado é
falso.
Entre as propriedades específicas deste botão podemos citar:
• Legenda: Define o título do botão;
• Figura: Define uma figura para o botão.
Imagem
Com este controle você pode inserir imagens ou molduras de objetos.
Entre as propriedades específicas deste botão podemos citar:
• Largura da Borda: Define a largura da borda das molduras;
• Estilo da Borda: Define o estilo das bordas da moldura.
Mais Controles
Use este botão para ter acesso a mais de 100 controles diversos, melhorando
assim a interação do usuário com o aplicativo. Existem vários tipos de controles, e o
calendário é um exemplo destes controles.
Criando Formulários
Para criar um formulário, siga os passos abaixo:
1. Entre no VBE;
2. No menu Inserir, dique na opção UserForm. Um formulário vazio, com um
tamanho padrão, aparece na tela:
3. Automaticamente, uma caixa de ferramentas também aparece na tela para que
você possa começar a construir o formulário.
Caixa de Ferramentas
Esta caixa é composta pelos mesmos controles exibidos no Excel e descritos
anteriormente nesta apostila.
Janela de Propriedades
Através da janela de Propriedades, você pode alterar a aparência e o
comportamento do formulário que você está criando e dos controles inseridos nele.
Mostrando o Formulário
Para visualizar um formulário, você deve usar o método Show. Podemos
visualizar um formulário assim que uma determinada planilha for ativada ou quando
um botão de comando for clicado.
• Para visualizar o formulário assim que uma determinada planilha for ativada, siga
os passos abaixo:
1. Na janela do Project Explorer, dê um duplo clique na planilha em que você
deseja ativar o formulário. Um módulo referente a essa planilha se abre;
2. Na caixa de Objetos, selecione o objeto Worksheet;
3. Na caixa de Procedimento, selecione a opção Activate;
4. Entre as linhas de procedimento que apareceram, digite:
5. Volte para o Excel. Caso você já esteja na planilha em que o formulário deva ser
apresentado, saia dela e retorne à ela, para que a mesma seja ativada.
Automaticamente o formulário aparece na tela.
NOTA: Para retornar à imagem do formulário, basta clicar novamente com o botão
direito sobre o nome do formulário na janela do Project Explorer e, em seguida, usar a
opção Exibir objeto.
Planilha do exercício:
Sub MostraRegistro()
Data = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Item = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Vendedor = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ValorUnitario = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Quantidade = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
ValorTotal = ActiveCell.Value
ActiveCell.Offset(0, -5).Select
'Retorna à Coluna Data
End Sub
Item.AddItem "Apontador"
Item.AddItem "Borracha"
Item.AddItem "Caneta Azul"
Item.AddItem "Caneta Vermelha"
Item.AddItem "Grampeador"
Item.AddItem "Lapis Preto"
Item.AddItem "Papel"
Range("A4").Select
MostraRegistro
End Sub
Data = ""
Vendedor = ""
Item = ""
ValorUnitario = 0
Quantidade = 0
ValorTotal = 0