Apostila Minicurso Excel
Apostila Minicurso Excel
AVANÇADO
FORMULAS NO EXCEL
Lembrete:
Toda fórmula que você for criar, ela deverá começar sempre com o sinal de
igualdade, caso contrário a fórmula não funcionará.
Ao final da fórmula você deve pressionar a tecla ENTER.
FÓRMULA DA SOMA
Ex: =SOMA(A1:A8) .
1A fórmula irá somar todos os valores que se encontram no endereço A1 até o endereço A8. Os
dois pontos indicam até, ou seja, some de A1 até A8. A fórmula será sempre a mesma, só mudará
os devidos endereços dos valores que você deseja somar.
Veja o outro exemplo:
A B C D E
1 10 25 15 10 =SOMA(A1:D1)
2
3
Neste exemplo estamos somando todos os valores do endereço A1 até o endereço D1. A
fórmula seria digitada como no exemplo, e ao teclar enter o valor apareceria. No caso a resposta
seria 60.
Outra maneira de você somar é utilizando o Botão da Autosoma. Veja o exemplo:
A B C D E
1 10 25 15 10
2 15 20 25 15
3 14 25 25 25
4 TOTAL =SOMA(A1:D3)
5
6
7
8
Para fazer isto, só basta que você digite o endereço inicial (em destaque) e também o endereço
final(em destaque)
Desta forma, você está somando todos os valores numa única fórmula, é o que chamamos de
Somar Matrizes.
Acompanhe mais um exemplo de Soma.
Desta vez você deseja somar números dispostos de maneira alternada, ou seja, em endereços
diferentes. Veja o exemplo:
A B C D E
1 ÁGUA LUZ ÁGUA LUZ
2 150 35 75 55
3
4 TOTAL DA ÁGUA =A2+C2
5 TOTAL DA LUZ =B2+D3
6
7
8
Você desejar somar somente os valores de água, então, basta digitar o endereço de cada valor,
ou seja, o endereço do primeiro valor + o endereço do 2º valor e assim sucessivamente.
Lembre-se que sempre devo iniciar o cálculo usando o sinal de igualdade.
2
FÓRMULA DA SUBTRAÇÃO
No exemplo abaixo você deseja saber qual o saldo líquido do José. Então é simples: Basta que
você digite o endereço do SlBrt – o endereço do Desct. De maneira mais clara quero dizer que
para realizar uma subtração no Excel, você só precisa digitar o endereço dos devidos
valores(inicial e final) acompanhado do sinal de subtração (-), como mostrar no exemplo abaixo.
Para os demais funcionários você só bastaria copiar a fórmula.
A B C E
1 FUNC SLBRUTO DESCT. SL LIQUIDO
FÓRMULA DA MULTIPLICAÇÃO
Agora a maneira como você subtraiu é a mesma para multiplicar, será preciso apenas trocar o
sinal de subtração pelo o sinal de multiplicação (*). Veja o exemplo.
A B C E
1 PRODUTO VALOR QUANT. TOTAL
FÓRMULA DA DIVISÃO
A fórmula ocorre da mesma maneira que as duas anteriores. Você só precisa trocar colocar o sinal
para dividir (/).
A B C
1 RENDA MEMBROS VALOR
2 25000 15 =A2/B2
3
3
FÓRMULA DA PORCENTAGEM
O cálculo se realiza da mesma maneira como numa máquina de calcular, a diferença é que
você adicionará endereços na fórmula. Veja o exemplo.
Um cliente de sua loja, fez uma compra no valor de R$ 1.500,00 e você deseja dar a ele um
desconto de 5% em cima do valor da compra. Veja como ficaria a formula no campo Desct.
A B C E
1 CLIENTE TCOMPRA DESCT. VL A PAGAR
Depois para o saber o Valor a Pagar, basta subtrair o Valor da Compra – o Valor do Desconto,
como mostra no exemplo.
FÓRMULA DO MÁXIMO
4
A B C
1 IDADE
2 15
3 16
4 25
5 30
6 MAIOR IDADE: =MÁXIMO(A2:A5)
Onde:
(A2:A5) – refere-se ao endereço dos valores onde você deseja ver qual é o maior valor. No caso
a resposta seria 30. Faça como mostra o exemplo trocando apenas o endereço das células.
FÓRMULA DO MÍNIMO
A B C
1 PESO
2 15
3 16
4 25
5 30
6 MENOR IDADE: =MÍNIMO(A2:A5)
7
FÓRMULA DA MÉDIA
5
A B C
1 IDADE
2 15
3 16
4 25
5 30
6 MÉDIA IDADE =MÉDIA(A2:A5)
FÓRMULA DA DATA
2
3
Esta fórmula é digitada precisamente como esta’. Você só precisa colocar o cursor no local onde
deseja que fique a data e digitar =HOJE() e ela colocará automaticamente a data do sistema.
FÓRMULA DA CONDIÇÃO SE
Suponhamos que desejasse criar um Controle de Notas de Aluno, onde ao se calcular a média,
ele automaticamente especificasse se o aluno fora aprovado ou não. Então Veja o exemplo
abaixo.
Primeiramente, você precisa entender o que desejar fazer. Por exemplo: quero que no campo
situação ele escreva Aprovado somente se o aluno tirar uma nota Maior ou igual a 7 na
média, caso contrário ele deverá escrever Reprovado, já que o aluno não atingiu a condição
para passar. Veja como você deve escrever a fórmula utilizando a função do SE>
6
A B C
1 ALUNO MÉDIA SITUAÇÃO
2 Márcio 7 =SE(B2>=7;”Aprovado”;”Reprovado”)
3
Onde:
B2 – refere-se ao endereço da média do aluno. Sendo ela que determinará se o aluno passará
ou não.
>=7 – refere-se a condição para o aluno passar, ou seja, para está Aprovado ele deve atingir
uma média maior ou igual a 7.
; - quer dizer então faça
“Aprovado”- refere-se a resposta verdadeiro, ou seja, se a condição for verdadeira(a nota for
maior ou igual a7) então ele escreverá aprovado. Por isso você deve colocar entre aspas, já que
se refere a Texto.
; este outro ponto e vírgula subentende-se senão faça, ou seja, caso contrário, fará outra coisa.
Em outras quer dizer se não for verdadeiro então faça isso...
“Reprovado” – refere-se a resposta falso, ou seja, caso ele não tenha média maior ou igual a
7, então escreva Reprovado.
Siga esta sintaxe, substituindo somente, o endereço, a condição, as respostas para verdadeiro
e para falso. Não esquecendo que deve iniciar a fórmula sempre com: =SE e escrever dentro
dos parênteses.
A B C
1 ALUNO MÉDIA SITUAÇÃO
2 Márcio 7 =SE(B2>=9;”Otimo”;se(b2>=8;”Bom”;se(b2>=7;”Regular”;”Insuficiente
)))
3
Onde:
B2 – refere-se ao endereço da média
>=9 – refere-se a condição para ötimo
“Otimo” - refere-se a resposta se caso for maior ou igual a 9
As demais tem o mesmo sentindo só mudam as condições e as respostas.
Você só precisar ir escrevendo um SE, dentro de outro Se após o ponto e vírgula. Você irá
perceber que para parêntese que você abrir, será de uma cor diferente e ao final você deverá
fechar todos eles.
7
Neste exemplo de agora, faremos um cálculo utilizando a condição SE, ou seja, em vez de
escrevermos algo para uma resposta verdadeira ou falsa, faremos um cálculo. Veja o exemplo:
Você tem um certa planilha de pagamento e agora você calcular o Imposto de Renda para os
seus funcionários. Mas, o cálculo só será efetuado para aqueles funcionários que ganham mais
de R$ 650,00, ou seja, se o salário do funcionário for maior que R$ 650,00, então deverá se
multiplicado uma taxa de 5% em cima do Salário Bruto, mas somente se ele ganhar mais de R$
650,00, caso contrário deverá ficar 0 (zero). Veja a fórmula.
F G H
10 FUNC SLBRT IRRF
FÓRMULA DA CONDIÇÃO SE e E
Agora você tem uma planilha onde tem a idade e altura de seus alunos. Haverá uma
competição e somente aqueles que tem Idade Maior que 15 e Altura maior ou igual que 1,70
participaram da competição. Neste caso você utilizará a condição SE e a condição E. Porque?
Respondo: É simples, porque para o aluno participar ele dever possuir a idade maior que 15 e
altura maior ou igual 1,70. As duas condições devem ser verdadeiras, caso uma seja falsa, ele
não participará. Entendeu menino(a)!. Veja o exemplo:
A B C D
1 ALUNO IDADE ALTURA SITUAÇÃO
Siga a sintaxe abaixo para os outros exemplos, substituindo apenas os endereços, as condições
e as respostas, o resto deve ser seguido como está!
FÓRMULA DA CONDIÇÃO SE e OU
Neste exemplo basta que uma condição seja verdadeira para que o aluno participe da
condição.
Veja o exemplo:
A B C D
1 ALUNO IDADE ALTURA SITUAÇÃO
FÓRMULA DO CONT.SE
Agora você possui uma planilha onde tem o nome dos alunos e as suas médias. E você
desejasse agora saber quantos alunos tiraram médias maior e igual a 9. Veja o exemplo:
A B
1 ALUNO MÉDIAS
2 João 7
3 Maria 10
4 Márcio 6
5 Déborah 8
=CONT.SE(B2:B5;”>=9”)
Onde:
(B2:B5) – refere-se ao endereço das células onde você desejar contar.
; utiliza-se como parte da sintaxe para separar
9
“>=9” – refere-se a condição, ou seja, esta fórmula só irá contar as células que contêm valores
maiores ou igual a 9.
Siga a sintaxe, substituindo apenas os endereços e a condição para contar.
Depois das aspas você digita a condição. Pode ser também texto, independente de texto ou
valor, deve-se colocar entre as aspas.
Exemplo:
=CONT.SE(C2:C5;”APROVADO”)
Neste exemplo ele contará apenas as células que contêm a palavra Aprovado.
Exemplo:
2 João
3 Maria 10
4 Márcio
5 Déborah 8
6 Marta 10
7 Andrea
=CONTAR.VAZIO(B2:B7)
Onde:
=CONTAR.VAZIO – é o nome da fórmula
(B2:B7) – refere-se ao endereço das células
FÓRMULA DO SOMASE
Exemplo:
10
Você gostaria de somar somente as faturas que estivessem pagas, assim você saberia o quanto
já recebeu. Logo a fórmula seria a seguinte:
A B C
1 CLIENTE VALOR SITUAÇÃO
2 Bemol 150 PG
3 TV Lar 250
4 MS Casa 350 PG
5 Otica Avenida 180
6 Marta 250 PG
7 Andrea 190 PG
Valor Recebido =SOMASE(C2:C7;”PG”;B2:B7)
Onde:
=SOMASE- é o nome da fórmula
(C2:C7 – refere-se ao endereço inicial e final de células onde você digita a palavra PG,
especificando se está paga ou não.
“PG” – é o critério para somar, ou seja, só somará se neste intervalo de células de C2 até C7,
conter alguma palavra PG. O critério deverá sempre ser colocado entre aspas.
B2:B7 – refere-se ao intervalo de células onde será somado, mediante a condição, ou seja, ele
somará somente aqueles valores que na coluna C você digitou PG.
FÓRMULA DO PROCV
Suponhamos que você tivesse uma planilha onde controla-se a entrada e a saída de clientes do
seu hotel. Nela você deseja colocar o Nome, Entrada, Saida, Classe e o Valor da Classe.
Você deseja que ao digitar o nome da Classe, automaticamente apareça o valor da Classe.
Na verdade você terá que criar 2(duas) planilhas:
A 1ª Primeira planilha chamaremos de Matriz Tabela, porque nela você colocará o nome das
Classe e o seu Valor
A 2ª Segunda planilha você controlará a entrada e a saída do cliente.
Veja o Exemplo:
A B C D
TABELA DE CLASSES
1 CLASSE VALOR
11
4 BAIXA 25,00
5 PRESIDENTE 180,00
6 COMUM 22,00
7
8 Hóspede Tipo Classe Valor-Diária
9 JOAO ALTA =PROCV(B9;$A$2:$B$6;2)
10 KARLA BAIXA
11 MÁRCIO MÉDIA
12
13
14
Onde:
=PROCV – é o nome da fórmula
(B9 – refere-se ao endereço do valor procurado, ou seja, o tipo da classe que você digitou
2 – refere-se ao número do índice de coluna, ou seja, o número da coluna onde está os dados
que você deseja que apareça, no caso, o valor da classe.
Observação:
Os dados da Tabela Matriz devem está em ordem crescente.
Para fazer isso, selecione os dados e clique no botão abaixo para ordenar os dados.
FÓRMULA DO SE VAZIO
Imagine agora que você só deseja que apareça a resposta se caso, você digita a classe,
enquanto isso o campo classe deverá ficar em branco. Neste caso você juntará a fórmula do
SE com a do PROCV.
Logo a fórmula ficaria assim:
12
A B C D
TABELA DE CLASSES
1 CLASSE VALOR
(B9 – refere-se ao endereço do valor procurado, ou seja, o tipo da classe que você digitou
13
FILTROS
Os dados filtrados mostram somente as linhas que atendem aos critérios especificados e
ocultam as demais linhas.
Depois de filtrar os dados, pode-se copiá-los, editá-los, formatá-los, fazer gráficos e imprimir
o subconjunto de dados filtrados, sem reorganizá-los nem os mover.
Também é possível filtrar dados por mais de uma coluna. Os filtros são aditivos, o que
significa que cada filtro adicional se baseia no filtro atual e ainda reduz o subconjunto de dados.
A opção Avançado trabalha de forma diferente da opção Filtro (ambas na guia Dados,
grupo classificar e filtrar) em vários aspectos:
Para uma melhor fixação do estudo, é ideal que se faça o exemplo a seguir:
Para filtrar o intervalo ocultando as linhas que não obedecem aos critérios, clique em Filtrar
a lista no local
Para filtrar o intervalo para outra área da planilha, copiando as linhas que obedecem aos
critérios, clique em Copiar para outro local. E, na caixa Copiar para, indique a célula a partir da
qual você deseja colar as linhas.
15
Na caixa Intervalo da lista, insira a referência do intervalo em que os dados serão filtrados,
inclusive os rótulos.
Para filtrar novos dados, altere o valor no intervalo de critérios e filtre os dados novamente.
16
Você também pode definir o nome Banco de dados para o intervalo de dados a ser filtrado e
o nome Extração para a área onde você deseja colar as linhas. Esses intervalos aparecerão,
automática e respectivamente, nas caixas Intervalo da lista e Copiar para.
Ao copiar linhas filtradas para outro local, você pode especificar que colunas incluir na
operação de cópia.
Antes de filtrar, copie os rótulos das colunas desejadas para a primeira linha da área onde
planeja colar as linhas filtradas.
Ao filtrar, insira uma referência nos rótulos das colunas copiadas na caixa Copiar para. As
linhas copiadas incluirão somente as colunas para as quais você copiou os rótulos.
17
VBA PARA EXCEL - MACROS
Macro é um pequeno programa também denominado de Rotina que contém uma lista de
instruções a realizar no Excel, que pode ser classificada como: Sub-rotina, Função ou
Procedimento de evento. Quando se trata de facilitar tarefas repetitivas, longas ou um conjunto de
tarefas, as rotinas resolvem o problema. Pode ser composta por uma lista armazenada de dois ou
mais comandos de aplicações que, quando acionada por um programa, reproduz os comandos que
foram programados.
As instruções que formam o corpo da rotina são escritas num código próprio para que o
computador as possa entender, essa linguagem é designada por VBA – Visual Basic for
Applications. O VBA é uma poderosa ferramenta, para automatizar alguns procedimentos que,
geralmente facilitam nosso trabalho em diversas situações.
As rotinas públicas (Public) podem ser chamadas dentro de qualquer rotina e de qualquer
parte do projeto, como módulos, formulários, objetos. Também ficam disponíveis em outro projeto
aberto, desde que você adicione a referência a esse projeto.
As rotinas privadas (Private), só podem ser executadas no módulo onde foram escritas.
Elas só podem ser chamadas dentro das rotinas que pertençam ao mesmo módulo ou objeto.
Quando chamadas a partir de outro módulo, ocorrerá o erro: “Sub ou Function não definida”.
Sub-rotinas e funções são públicas por padrão. Caso não queira que sejam públicas, é
necessário que declare usando a palavra-chave Private Sub ou Private Function.
Sintaxe Sub-rotinas:
Public Sub <nome_da_macro> ( ) Private Sub <nome_da_macro> ( )
<corpo_da_macro> <corpo_da_macro>
End Sub End Sub
Sintaxe Funções:
PASSAGEM DE PARÂMETROS
Existem duas maneiras diferentes de fazer a passagem dos parâmetros, que são
passagem por valor - ByVal e passagem por referência – ByRef.
Na passagem de parâmetro por valor, ao iniciar a execução, a função faz uma cópia dos
valores passados para serem utilizados nas operações. Supondo que o valor passado para a
função fosse uma variável criada por você. Uma cópia deste valor seria efetuada durante a
execução da função, não alterando em nada o valor original de sua variável. Significa que o
procedimento receberá apenas o valor do parâmetro e não uma referência ao endereço de
memória onde está armazenado o valor do parâmetro.
Para entender melhor este conceito, o exemplo abaixo mostra uma função principal
chamada Sub Passagem_valor, na qual uma variável X é declarada, do tipo Integer, e
inicializada, esta variável passa, por valor, o parâmetro para o procedimento Sub Dobro.
Sub Passagem_valor()
Dim x As Integer x = 3
MsgBox " Valor dado a variavel X é : " & x
19
'Aqui estou chamando a procedure que vai dobrar o valor de x (sub Dobro)
Dobro (x)
MsgBox "Valor de X Após a Execução: " & x
End Sub
Sub Dobro(ByVal Num As Integer)
MsgBox " Valor passado como parâmetro:" & Num
Num = Num * 2
MsgBox "Dobro do valor:" & Num
End Sub
Na prática, ao passar um parâmetro por valor, você passa apenas uma cópia do valor da
variável e é nesta cópia que a função/procedimento chamado trabalha, sem afetar o valor original
da variável passada como parâmetro.
Para poder alterar o valor original de uma variável, a função/procedimento, tem que
receber o parâmetro por referência – ByRef, ou seja, a função/procedimento tem que receber uma
referência ao endereço de memória da variável passada como parâmetro e não uma simples cópia
do valor da variável. Ao receber um parâmetro por referência (ByRef), as alterações que a
função/procedimento fizer, serão feitas diretamente na variável original, pois agora, a
função/procedimento tem acesso ao endereço da variável na memória e não mais apenas uma
cópia do seu valor.
Para que um procedimento possa receber um parâmetro por referência, você deve utilizar
a palavra ByRef, conforme o exemplo a seguir:
Para entender melhor este conceito, o exemplo abaixo mostra uma função principal
chamada Sub Passagem_Ref, na qual uma variável Y é declarada, do tipo Integer e inicializada,
em seguida é passada, por referência, como parâmetro para o procedimento Dobro_Ref.
Sub Passagem_Ref()
Dim y As Integer y =
3
MsgBox "Valor original atribuido a Y é : " & y
''Aqui estou chamando a procedure que vai dobrar o valor de y (sub Dobro_ref)
Call Dobro_ref(y)
MsgBox "Após a execução da procedure dobro Y é : " & y
End Sub
20
Sub Dobro_ref(ByRef Num As Integer)
MsgBox "Valor passado como parâmetro:" & Num
Num = Num * 2
MsgBox "Dobro do valor:" & Num
End Sub
OBS.: Na passagem por valor é passado apenas uma cópia do valor da variável. Os comandos
executados dentro do procedimento/função chamado não irão alterar o valor original da variável.
Já na chamada por referência, o endereço da variável, na memória, é passado para o
procedimento/função que foi chamado. Com isso, as alterações feitas pelo procedimento, na
variável, irão alterar o valor original da variável, pois estão atuando diretamente sobre esta
variável, ou melhor, no endereço de memória da variável.
CRIAR MACROS
A POO é uma metodologia de programação muito versátil que se molda a todas as áreas
de aplicação da Ciência da Computação e Análise de Sistemas. Pode ser usada por todas as
classes de programadores.
OBJETO
Vários objetos de uma mesma classe ocupam diferentes posições de memória, embora
compartilhem os métodos (que estão apenas uma vez na memória).
21
É uma variável do tipo de uma classe
Em VBA, um objeto é uma unidade de dados que representa determinado elemento da sua
planilha ou do Excel; em outras palavras, é um objeto que permite uma referência, por exemplo,
às células de sua planilha, a um gráfico ou à janela do Excel.Também pode ser objetos de outros
aplicativos em seu aplicativo Visual Basic .Você pode criar seus próprios objetos e definir
propriedades e métodos adicionais para eles.
Exemplo 1:
Exemplo 2
ActiveCell.Value = 10,0
O objeto ActiveCell se refere à célula ativa no momento da execução da macro: no
exemplo acima, a célula selecionada receberá o valor 10,0
PROPRIEDADES
22
Como dito anteriormente, estas instruções se aplicam ao objeto Range("A1"), ou seja, à
célula A1. Elas alteram ou definem propriedades deste objeto. Propriedades são, portanto,
características de cada objeto; por exemplo, não existe uma propriedade Value para o objeto
Application, mas ela existe para uma célula (objeto Range).
MÉTODOS
Métodos são ações aplicadas a um objeto. Ao contrário das propriedades, que modificam
suas características, métodos realizam ações mais amplas.
Exemplo:
ActiveCell.Delete
Application.Quit
No exemplo acima, Delete é um método do objeto ActiveCell: ele apagará a célula ativa.
Quit é um método do objeto Application; ele encerra o Excel (se tiver uma planilha aberta não
salva, você deve salva-lá antes da conclusão desta ação).
CLASSES E INSTÂNCIAS
Para entender a relação entre um objeto e sua classe, pense numa tesoura para cortar
papel. A tesoura é a classe. Ela define as características de corte que vamos fazer no papel, tais
como, tamanho e forma. A classe é usada para criar objetos. Os objetos são o que obtemos do
papel cortado de diferentes formas e tamanhos.
23
Lista de objetos, propriedades e métodos
O Excel e a linguagem VBA possuem um grande número de classes (definições de
objetos), métodos e propriedades. Tem por objetivo facilitar na elaboração de macros, na barra de
ferramentas do Editor VB podemos encontrar uma ferramenta, Pesquisador de Objeto, que lista
hierarquicamente todos estes elementos.
Para abrir o Pesquisador de Objeto, estando no editor VB, clique no ícone Pesquisadsor
de objeto :, ou pressione F2. Será exibido uma janela conforme abaixo:
A lista à esquerda exibe todas as classes; ao selecionar um de seus itens, a região à direita
exibirá todas as propriedades e métodos disponíveis para um objeto daquele tipo. Na figura acima,
foi selecionada a propriedade Font dos objetos da classe Range.
Observe:
Os métodos são
exibidos com o
ícone verde
24
EVENTOS
Eventos são ações que informam a um aplicativo que algo importante ocorreu, é algo que
acontece aos objetos. Ocorre em resultado de uma ação do usuário, do sistema ou do próprio
código. Por exemplo, quando o usuário clica em um formulário, o formulário pode desencadear um
evento Click e chamar um procedimento que manipula o evento.
Outros exemplos: quando uma pasta de trabalho é aberta, dá-se o evento Open do objeto
Workbook. O evento Activate ocorre quando uma pasta ou planilha é ativada. O evento
BeforeSave ocorre antes da pasta de trabalho ser salva. Definindo Cancel, um dos parâmetros
deste evento, como True, a pasta de trabalho será fechada sem ser salva.
Com os eventos você personaliza o comportamento dos objetos, tais como: pastas de
trabalho, planilhas, gráficos, janelas, etc.
Sub Objeto_Evento(argumentos)
Exemplos:
Ocorre quando o arquivo passa a ser o arquivo ativo por ação do método Activate.
Ocorre quando é inserida uma nova planilha (Sh referencia a nova planilha).
Procedimentos Function são similares aos procedimentos Sub, com a diferença que as
funções retornam valores e as rotinas executam ações sem necessariamente retornar valores.
DEFINIÇÃO DE FUNCTION
Uma função definida pelo usuário assemelha-se a qualquer função de planilha pré-definida
do Excel, tal como Soma e Média. Cabe ao usuário decidir o que a função deve fazer. Uma
função definida pelo usuário é criada em um módulo combinando expressões matemáticas,
funções pré-definidas do Excel e o código.do Visual Basic. As Funções começam com a
palavrachave Function e terminam com as palavras End Function. um conjunto de valores
25
Uma vez que uma função produz sempre um valor ela poderá ser executada: dentro de
uma célula numa planilha, à semelhança de qualquer outra função do Excel, ou dentro de
qualquer outra função ou SubRotina. A sua definição tem a estrutura conforme abaixo:
Para definir o valor produzido por uma função basta no seu interior, atribuir ao nome da
função um determinado valor ou expressão.
Todos os elementos de entrada e saída de uma função têm um tipo de dados atribuído.
Assim os argumentos deverão ser definidos com o tipo de dados respectivo e a função deverá ser
definida do tipo de dados que ela for retornar o valor para o interior de uma célula do Excel.
Exemplo 1:
Criar uma função para obter o percentual do lucro. Para isso deve-se usar o preço de compra e
preço de venda que se encontram na planilha. Conforme figura abaixo:
Function
Exemplo 2:
Crie uma função que retorne uma string com a situação de cada aluno, conforme os critérios
abaixo: A frequência deve ser acima de 75%, A média deve ser superior a 7,0.
26
Se a média menor que 7,0, escrever a mensagem “Reprovado por média”;
Dentro de uma célula numa planilha, à semelhança de qualquer uma outra função do Excel.
27
Preencha as caixas de diálogo Freq e Med com a referência das respectivas células clique
em OK.
Exemplo 3
Usando uma função do Excel em uma função no módulo VBA:
Function Circulo(raio)
Circulo = Application.Pi() * 2 * raio
End Function
Para usar é necessária uma instrução para que a função seja “procurada” no aplicativo
Excel. Essa instrução se chama Application, e é usada como no exemplo acima.
Quando dentro de uma rotina se faz referência ao nome de outra rotina a execução da
primeira passa pela execução daquela que está a ser invocada.
Exemplo 4
O exemplo abaixo mostra uma função sendo chamada dentro de uma macro. A macro
Maior faz uma chamada à função Acha_maior de forma que, o valor produzido pela função seja
armazenado na variável M, e assim produzir a saída final da macro Maior.
28
Else acha_maior =
n2 End If
End Function
Sub Maior()
Dim num1 As Integer, num2 As Integer, m As
Integer num1 = InputBox("Informe primeiro número")
num2 = InputBox("informe segundo número") m =
acha_maior(num1, num2) MsgBox "maior número é
"&m
End Sub
Sub <nome_da_macro> ( )
<corpo_da_macro>
End Sub
As macros são identificadas pelo nome que lhe atribuímos e não recebem variáveis no
interior, têm como função desempenhar um conjunto de tarefas que são determinadas no corpo da
macro.
O corpo da macro pode ser composto por um conjunto de instruções, sendo que cada
instrução diferente necessita de estar numa linha diferente. Contudo, quando se trata de
instruções muito longas o editor faz a sua partição por diversas linhas, recorrendo ao operador “_”,
com objetivo de facilitar a leitura.
INPUTBOX E MSGBOX
Permitem a interação entre o usuário e uma macro ou programa, funciona como uma
interface de comunicação. Mostraremos dois elementos básicos para estabelecer esta ligação:
InputBox e MsgBox.
FUNÇÃO INPUTBOX
InputBox é uma função que permite ao usuário introduzir dados no programa é portanto um
mecanismo de entrada.
Exibe uma janela com uma caixa de texto para a inserção de dados. Espera que o
utilizador introduza os dados e/ou acione um dos botões OK ou Cancela. Conforme figura abaixo:
29
Como é uma função produz um valor final. Este consiste nos dados inseridos pelo usuário
no formato texto que normalmente são armazenados temporariamente em variáveis de uma macro
ou programa.
Sintaxe:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
O único argumento da função que não está entre colchetes é a mensagem do prompt, pois
é o único argumento obrigatório; os outros são opcionais. Vamos conferir cada um:
XPos, YPos – É a posição em que a caixa de mensagem situa-se na tela. O padrão é o centro.
HelpFile, Context – Utilizados para designar um arquivo e um contexto de ajuda para a caixa de
mensagem.
FUNÇÃO MSGBOX
Sintaxe
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
MsgBox também possui diversos parâmetros, mas somente o primeiro é obrigatório, sendo
que todos os outros quando ignorados assumem valores atribuídos por padrão.
30
MsgBox "A Soma de 3 com 5 é :" & Chr(13) & " 8 "
Buttons – Aqui temos várias opções de configuração de uma MsgBox. Se for omitido assumirá o
valor 0 por padrão. A configuração “buttons” pode ser dividida em botões, comunicação visual e
botões padrão; Veremos detalhes abaixo:
Title – É o título da caixa de mensagem. Se este for omitido, aparecerá o padrão que é o nome da
aplicação.
HelpFile - Nome do arquivo que será utilizado para ajuda. Se for indicado este parâmetro o
seguinte é obrigatório.
Na janela de saída será exibida a mensagem “Erro de Sintaxe”, o botão exibido será o de
OK (por padrão) e o título da janela será “Mensagem de Erro”.
31
VbDefaultButton2 - O segundo botão é o selecionado por default.
Exemplos:
MsgBox "Data Inválida", vbCritical
VARIÁVEL IMPLÍCITA ME
MsgBox Me.Name
OBJETO RANGE
O Objeto range é uma propriedade do objeto Worksheet. Isso significa que objeto Range
requer que uma planilha esteja ativa ou que ele referencie uma planilha.
Esse objeto representa uma célula, uma coluna, uma linha, um conjunto de células, até
todas as células de uma planilha; por isso é tão genérico e funcional. O objeto Range talvez seja o
objeto mais utilizado no Excel VBA, afinal, você está manipulando dados em uma planilha.
Exemplo:
Sub Ex1()
Range("A1:B4") = "Olá" End
Sub
PROPRIEDADE NAME
PROPRIEDADE VALUE
Exemplo1:
Sub Ex1_Range()
Range("A4:D10").Value = 1 'colocar no intervalo do range A1 a D10 o valor 1, na planilha ativa. End
Sub
Exemplo2:
Sub Ex2_range()
Range("A10:F20").Name = "Conjunto"
Range("Conjunto").Value = 2
'Onde, na primeira instrução se atribui ao range "A1:F20" o nome "Conjunto", e na última instrução se
utiliza essa designação para referenciar o respectivo conjunto de células e atribuir-lhe o valor 1, na
planilha ativa.
End Sub
Exemplo3:
Com base na tabela abaixo vamos criar uma macro para calcular o salário de uma pessoa.
Para isso a macro recebe as informações da planilha e devolve o salário na planilha.
33
Sub salario()
Dim hora_trab As Single, val_hora As Single
Dim sal As Single hora_trab =
Range("B2") val_hora =
Range("C2") sal =
hora_trab * val_hora
Range("D2") = sal
End Sub
Exemplo:
Sub Selecionar()
Range("A1:B6").Select „seleciona um intervalo de células
End Sub
PROPRIEDADE CELLS
A propriedade Cells refere-se todas as células do objeto especificado no intervalo, pode ser
uma planilha ou o intervalo de células. Podemos utilizá-la com o objeto Range representando
todas as células de dentro do range. Onde Cells(linha,Coluna).
Range(Cell1,Cell2)
Cells.ClearContents - Limpa todas as células de valores ou fórmulas que pode estar em uma
planilha.
Exemplo1:
34
Crie uma macro baseada nos exemplos acima, execute o mesmo e observe que o intervalo
foi preenchido com o número 2, logo após acrescente a linha conforme abaixo e execute a macro
observando que está limpo.
Sub Ex2_range_cells()
Range("A10:F20").Name = "Conjunto"
Range("Conjunto").Value = 2
Cells.ClearContents 'limpa o intervalo anteriormente preenchido
End Sub
Exemplo2:
Com base na planilha abaixo criar uma macro que calcule um acréscimo de 30% para os
valores maior ou igual a 500 e escreva o valor reajustado na coluna ao lado;
Sub valor_reajuste()
Dim preco, acrec As Single
Dim L As Integer
L=2
While Cells(L, 1) <> "" If Cells(L,
1) <> "" Then preco = Cells(L,
1) If preco <= 500 Then
acrec = preco * 0.3 + preco
Else
acrec = preco
End If
End If
Cells(L, 2).Select
Cells(L, 2) = acrec
L=L+1
Wend
End Sub
As três afirmações abaixo são equivalentes:
ActiveSheet.Range.Cells (1,1)
35
Range.Cells(1,1)
Cells(1,1)
A propriedade Cells tem uma propriedade com nome de Item que torna a propriedade Cells
muito útil. A propriedade Item permite referenciar uma célula especifica em relação ao objeto
Range.
Sintaxe:
Cells.Item(2,”C”)
Cells.Item(2,3)
PROPRIEDADE ACTIVECELL
O ActiveCell propriedade retorna um objeto Range que representa a célula que está ativa
na planilha especificada ou na planilha ativa. Você pode aplicar qualquer das propriedades ou
métodos de um objeto Range para a célula ativa.
Com base na planilha abaixo a macro que recebe 2 valores da planilha e uma opção, retorna o
valor célula ativa.
Sub Range_activecell()
Dim v1 As Single, v2 As Single, result As Single
result = 0 v1 = Range("A2") v2 = Range("B2")
cod = Range("C2") Range("D2").Select
Select Case cod
Case 1 result =
v1 + v2 ActiveCell
= result Case 2
result = v1 - v2
ActiveCell = result
Case Else
ActiveCell = "invalido"
End Select End
Sub
OBJETO FONT
O objeto Font possui toda a formatação de fonte que podemos utilizar na interface do
Excel. Vejamos as principais propriedades:
36
Name – Define o tipo da fonte.
OBJETO INTERIOR
O objeto Interior define o plano de fundo para as células selecionadas Suas principais
propriedades são:
Pattern – Define um padrão para ser aplicado no fundo de uma célula. Existem dezoito padrões
representados em valor inteiro de 1 a 18.
Alinhamento Horizontal:
xlLeft – Alinhamento a esquerda.
xlCenter- Alinhamento centralizado.
xlRight- Alinhamento a direita xlDistributed ou
xlJustify - Alinhamento justificado.
Alinhamento Vertical:
As macros abaixo mostram recursos para alterar o tipo da fonte para Tahoma, tamanho 12,
cor azul, estilo Negrito e alinhamento centralizado.
Sub cor_fonte()
Range("A1:B4").Value = 10
Range("A1:B4").Font.color = vbBlue
Range("A1:B4").Font.Name = "Tahoma"
37
Range("A1:B4").Font.Size = 12
Range("A1:B4").Font.Bold = True
Range("A1:B4").Interior.ColorIndex = 3
Range("A1:D5").HorizontalAlignment = xlCenter
End Sub
Sub CoRFonte()
Range("A1:C1").Select
With Selection.Font
Name = "Arial"
ColorIndex = 10
FontStyle = "Bold"
Size = 14
End With
End Sub
Exemplo do uso da propriedade Pattern.
Sub Cor_Fundo()
Range("A5:B7").Value = 10
Range("A5:B7").Font.color = RGB(0, 0, 255)
Range("A5:B7").Interior.Pattern = 18
End Sub
Exemplo do uso da propriedade PatternColorIndex.
Sub Limpa_Cor_fundo()
Range("A8:B10").Value = 5
Range("A8:B10").Font.color = RGB(0, 0, 255)
Range("A5:B7").Interior.PatternColorIndex = 20
End Sub
Uma função RGB trabalha com três parâmetros, que indicam a quantidade de vermelho,
verde e azul na composição de uma cor, variando de 0 a 255.
Exemplo:
Sub Fundo_RGB()
Range("A1").Interior.color = RGB(0, 0, 0) 'Preto
38
Range("A2").Interior.color = RGB(255, 0, 0) ' Vermelho
Range("A3").Interior.color = RGB(0, 0, 255) ' azul
Range("A4").Interior.color = RGB(128, 128, 128) ' cinza
End Sub
Exemplo:
A macro abaixo gera uma tabela de cores com os respectivos números para ser utilizado
com a propriedade ColorIndex.
Sub Tabela_cor()
Dim cor As Integer
For cor = 1 To 56
Range("a" & cor).Interior.ColorIndex = cor
Range("B" & cor) = cor
Next
End Sub
COLEÇÃO BORDERS
determinado Range. Com Borders são passadas as constantes que representam a borda está
baixo para cima. xlEdgeTop – Borda superior. xlEdgeBottom – Borda inferior. xlEdgeLeft –
Propriedade LineStyle determina o estilo da linha a ser usada em bordas, Weight determina
a espessura da borda.
Constantes para Weight a qual determina e
Adiciona uma borda a um intervalo definindo
espessura da borda.
um estilo. Constantes para LineStyle.
xlThin - padrão -
xlLineStyleNone – Sem estilo
xlMedium - xlThick –
xlContinuous - padrão - xlHairline -
xlDash -
xlDashDot -
39
xlDashDotDot -
xlDot - xlDouble -
O exemplo a seguir adiciona uma borda dupla para as células C1 até D5 na planilha ativa.
Sub Bordas()
Range("C1:D5").Borders.LineStyle = xlDouble
End Sub
O exemplo a seguir define a cor da borda superior e inferior das células A2: G2 na cor vermelho.
Sub Bordas_Top_bottom()
Range("A2:G2").Borders(xlEdgeTop).Color = RGB(255, 0, 0)
Range("A2:G2").Borders(xlEdgeBottom).Color = RGB(255, 0, 0)
End Sub
O exemplo a seguir define a cor da borda inferior das células A10: D10 na cor Azul no
estilo traçado.
Sub Linha()
With Range("A10:D10").Borders(xlEdgeBottom)
ColorIndex = 5
LineStyle = xlDash
Weight = xlMedium
End With
End Sub
PROPRIEDADE COUNT
As propriedades Column e Row indicam coluna e linha, que formam a base de um range,
ou seja, relativas à célula do canto superior esquerdo.
Exemplos:
Sub Columns_Rows()
Columns("A:C").Value = 2 'preenche as colunas de um Range("A:C") Rows("4:7").Value
=3 'preenche as linhas de um Range("4:7")
40
End Sub
Sub Conta_Colunas_linhas()
PROPRIEDADE RESIZE
Exemplo:
Sub Teste_Resize()
Range("A1").Resize(3, 2).Interior.ColorIndex = 7
Range("C6").Resize(, 4).Interior.Pattern = 8
Range("C9").Resize(Rowsize:=11, columnsize:=4).Interior.Pattern = 3
End Sub
PROPRIEDADE ADDRESS
PROPRIEDADE OFFSET
Exemplo:
A macro abaixo seleciona e preenche com um valor a célula que se encontra 3 linhas
abaixo e 1 coluna à direita da célula que encontra-se ativa na planilha ativa.
Sub Testa_offset()
Selection.Offset(3, 1).Range("A1").Select
ActiveCell.Value = 500
End Sub
41
FUNÇÃO ISEMPTY
Retorna um valor booleano se uma única célula estiver vazia ou não. A Célula deve
realmente estar vazia, um espaço que não possa ser visto é considerado como preenchido, ou
seja, não vazia. Retorna TRUE se célula vazia e FALSE se tiverem conteúdo ou espaço.
Exemplo:
Sub Test_Isempty()
Dim i As Byte
For i = 1 To 7
If IsEmpty(Cells(i, 1)) Then
Cells(i, 1).Resize(1, 10).Interior.ColorIndex = 5
Cells(i, 1).Resize(1, 10).Value = " Excel" End
If
Next i
End Sub
MÉTODO ACTIVATE
O exemplo abaixo torna “C5” a célula ativa. Após a mesma recebe o formato negrito.
Sub Active_Celula()
Range("C5").Activate
ActiveCell.Font.Bold = True
End Sub
OBS.: Você pode usar o método Select para selecionar um intervalo de células, e para tornar uma
única célula ativa, use o método Activate.
MÉTODO COPY
Exemplo:
Sub Copiar_celula() Range("a1:b3").Select
Selection.Copy
Range("H10:I13").Select
ActiveCell.PasteSpecial End
Sub
MÉTODO DELETE
Sub Delete()
Range("A2:F4").Rows().Delete
Worksheets("Plan1").Rows(3).Delete End
Sub
MÉTODO MERGE
MÉTODO CLEAR
Limpa todo e qualquer conteúdo das células dentro de um range. O conteúdo envolve
valores, formatação e fórmulas.
Exemplo:
Sub Limpar_Mesclar()
Range("A1:E1").Merge across:=True
Range("A2:E4").Clear End
Sub
MÉTODO SORT
43
OBJETO WORKSHEET
O objeto Worksheet representa uma planilha, especificada da coleção Worksheets. O
objeto Worksheet é também um membro da coleção Sheets. A coleção Sheets representa todas
as planilhas da pasta de trabalho especificada.
OBS: Um objeto é um tipo especial de variável que contém os dados e códigos. A coleção é um
grupo de objetos da mesma classe.
Exemplos:
Sub Escreve_Plan1()
Worksheets("Plan1").Range("A1:C5") = "OLÁ"
End Sub
Preenche com valor de 1 á 100 o intervalo de 10 linhas por 10 colunas.
Sub Escreve_valor() num
=1
For Row = 1 To 10
For col = 1 To 10
Sheets("plan2").Cells(Row, col).Value =
num num = num + 1 Next col
Next Row
End Sub
Veremos a seguir algumas das várias propriedades, métodos e eventos que são aplicados
aos objetos Worksheets.
44
PROPRIEDADE CODENAME
Os programadores VBA mais experientes que utilizam esta forma de referenciar planilha.
Cada planilha em uma pasta de trabalho possui um nome de código único que não muda mesmo
quando a planilha é movida, renomeada ou outras planilhas são adicionadas. O CodeName da
planilha só pode ser visto entrando no Editor do Visual Basic no Project Explorer.
Conforme mostra a figura acima, o CodeName para a planilha com nome de guia “Balanço”
é Plan1. Um CodeName de uma planilha é sempre o nome que está fora dos parênteses quando
se olha no Project Explorer. Podemos fazer referência a esta planilha na pasta de trabalho
usando: Plan1.Select ou Sheets ("Balanço"). Select ou Sheets (1). Select.
OBS: Você não pode usar um codinome PlanX quando você faz referência a uma Planilha que
está em uma outra pasta de trabalho, na qual o código não reside.
PROPRIEDADE NAME
A propriedade Name retorna o nome de uma planilha. Também pode ser usada para trocar
o nome de uma planilha. O nome de uma planilha pode ser escrito com letras, números e a
maioria dos símbolos, limite de 31 caracteres, porém não pode ser escrito com caracteres
reservados como [, ], /, *, :, ? e \.
Exemplo:
Sub Renomear_plan1()
Sheets("Plan1").Name = "Equilibrio"
End Sub
PROPRIEDADE VISIBLE
45
Exemplos:
O exemplo abaixo oculta Plan2
Sub Oculta_Plan2()
Sheets("plan2").Visible = False
End Sub
Exemplo abaixo exibe a Plan2 oculta pela macro anterior.
Sub Exibe_Plan2()
Sheets("Plan2").Visible = True
Sheets("Plan2").Select
End Sub
PROPRIEDADE ACTIVESHEET
Retorna um objeto que representa a planilha ativa na pasta de trabalho ativa ou na janela
especificada. Se uma pasta de trabalho aparece em mais de uma janela, a propriedade
ActiveSheet pode ser diferente em diferentes janelas.
Exemplos:
O exemplo abaixo escreve na célula B2 da planilha ativa e mostra o nome da planilha.
Sub Test_Active_sheet()
ActiveSheet.Range("B2").Value = 3.14
MsgBox "A planilha ativa é: " & ActiveSheet.Name
End Sub
Esse exemplo renomeia a planilha ativa.
Sub AvtiveSheet2()
ActiveSheet.Name = "Linda" End
Sub
MÉTODO ADD
Exemplo 1:
A macro abaixo adiciona a planilha “Bacana” a esquerda da planilha selecionada.
Sub Add_planilha()
Worksheets.Add().Name = "Bacana"
End Sub
Exemplo 2:
O exemplo insere 4 novas planilhas após a última planilha.
46
Sub Adiciona_ultima()
Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=4
End Sub
Exemplo 3:
Insere uma planilha com nome após a última.
Sub Add_ultima()
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Contas"
End Sub
MÉTODO ACTIVATE
Torna uma planilha da coleção WorkSheets ativa, movendo o foco para a planilha
especificada sem alterar a seleção do usuário.
Exemplo:
O exemplo abaixo torna ativa a “Plan2” na qual “D7” torna-se ativa e recebe o formato negrito.
Sub Active_Plan2()
Worksheets("plan2").Activate
Worksheets("plan2").Range("D7").Activate
ActiveCell.Font.Bold = True End
Sub
MÉTODO COPY
Permite criar uma cópia fiel de uma determinada planilha, em uma posição especificada na
coleção Worksheets.
Exemplo:
A macro abaixo faz um cópia fiel da planilha ativa, inserindo a cópia após a última planilha da
coleção.
Sub Copiar_Planilha ()
ActiveSheet.Copy After:=Worksheets(Worksheets.Count) End
Sub
MÉTODO DELETE
Exemplos:
O exemplo abaixo exclui a planilha especificada.
Sub Excluir_plan1()
Worksheets("plan1").Delete
End Sub
47
O exemplo abaixo exclui a última planilha da Coleção WorkSheets.
Sub Excluir_ultima()
Worksheets(Worksheets.Count).Delete End
Sub
MÉTODO MOVE
Sub Mover_Ativa()
ActiveSheet.Move After:=Worksheets(Worksheets.Count) End
Sub
MÉTODO SELECT
O método Select seleciona uma planilha ou varias planilhas, movendo a seleção do usuário
para a nova planilha especificada.
Exemplo1:
Sub Seleciona_ultima()
Worksheets(Worksheets.Count).Select
End Sub
Exemplo2:
Sub Seleciona_Todas()
Dim plan As Integer
For plan = 1 To Worksheets.Count Worksheets(plan).Select
Next End
Sub
Exemplo3:
Sub Seleciona_plan3()
Sheets("Plan3").Select
End Sub
EVENTO DE UM WORKSHEET
48
EVENTO ACTIVATE
Este método é equivalente a clicar na guia na parte inferior da Planilha. Ocorre quando a
planilha em que está o evento se torna a planilha ativa.
Exemplo:
EVENTO DEACTIVATE
Exemplo:
EVENTO BEFOREDOUBLECLICK
Target – do tipo Range, através desse argumento, podemos identificar qual célula recebeu
o duplo clique e dar os tratamentos desejados ao evento.
Exemplo:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "Você deu um duplo clique na célula"
Target.Interior.ColorIndex = 5
49
Cancel = True
End Sub
OBS.: A utilização de Cancel =True no exemplo acima evita que a ação padrão ocorra na célula
que sofreu o duplo clique, que é colocar a célula em modo de edição.
EVENTO BEFORERIGHTCLICK
Exemplo:
EVENTO CALCULATE
Ocorre toda vez que um cálculo é executado ou um valor de uma expressão matemática é
alterado em uma célula da planilha que contém a macro.
Exemplo:
No exemplo abaixo, a cada vez que a célula C2 sofre uma alteração exibe uma mensagem,
essa alteração pode ser no momento que está editando a expressão ou se um dos valores das
células envolvidas na expressão sofrer uma alteração de valor.
Dim S As Single
S = Range("C2").Value
If S < 0 Then
MsgBox "Negativo!!!!! Você Gastou mais que ganhou!", vbCritical
Else
MsgBox "Positivo!!!!! Parabéns!!!!", vbExclamation End
If
End Sub
50
EVENTO CHANGE
Ocorre quando uma das células da planilha teve o seu conteúdo alterado pelo usuário ou
por agente externo. Por exemplo, quando o texto é inserido, editado ou excluído. Target é a célula
que foi alterada.
Exemplo1:
Quando uma célula for preenchida com um valor, a cor de fundo da célula ficará em vermelho.
EVENTO SELECTIONCHANGE
Ocorre quando um novo intervalo de células é selecionado dentro de uma planilha. Target
é o intervalo recentemente selecionado e podemos dar o tratamento desejado. Este é um evento
padrão de uma Worksheet.
Exemplo:
51
MsgBox Target.Count & " Céluals selecionadas ", vbInformation
Target.Interior.ColorIndex = 10
Target.Font.Bold = True
Target.Value = "Olá"
End If
End Sub
OBJETO WORKBOOK
Workbook representa uma pasta de trabalho do Microsoft Excel. O objeto pasta de trabalho
é um membro da coleção Workbooks. A coleção de pastas de trabalho contém todos os objetos
Workbook atualmente aberto no Microsoft Excel.
Como um objeto Workbook representa uma pasta de trabalho, podemos acessá-lo como
um índice da coleção Workbooks da seguinte maneira: workbooks(1) ou pelo nome do arquivo
workbooks(“nome arquivo”). O número de índice indica a ordem em que os arquivos foram abertos
ou criados. Workbooks(1) é o primeiro livro criado e Workbooks(Workbooks.Count) é o último
criado.
OBS.:Pastas de trabalho são uma coleção de todos os objetos Workbook. Planilhas são uma
coleção de objetos Worksheet. O objeto Workbook representa uma pasta de trabalho, o objeto
Worksheet representa uma planilha, o objeto sheet representa uma folha de planilha e o objeto
Range representa um intervalo de células.
PROPRIEDADE FULLNAME
Exemplo1:
Essa função retorna o caminho do disco e o nome da pasta de trabalho ativa.
Sub teste()
52
MsgBox ActiveWorkbook.FullName
End Sub
PROPRIEDADE PATH
O método Add permite criar uma nova pasta de trabalho vazia e adicioná-la à coleção.
Exemplo 1:
O exemplo seguinte adiciona uma nova pasta de trabalho vazia ao Microsoft Excel.
Sub CriaPasta()
Workbooks.Add
End Sub
Exemplo 2:
MÉTODO ACTIVATE
MÉTODO CLOSE
Fecha a pasta de trabalho desejada. Close tem alguns parâmetros, se caso omitido o
funcionamento da ação será padrão Windows. O método verifica se a propriedade Saved do
objeto Workbook é True. Se for, fechará a pasta, caso contrário perguntar se deseja salvar.
Exemplo 1:
Sub Feccha_SemSalvar()
ActiveWorkbook.Close False
End Sub
Exemplo 2:
A macro do exemplo abaixo fecha a pasta de trabalho ativa dando a opção de escolha se o
usuário deseja salvar.
Sub Salva_sim_nao()
ActiveWorkbook.Close End
Sub
MÉTODO SAVE
EVENTOS DE UM WORKBOOK
A maioria dos eventos de um Workbook afetam globalmente uma aplicação. Para acessar
os eventos de um Workbook dentro do ambiente VBA, você deve dar duplo clique em
EstaPasta_de_Trabalho, que está no Project Explorer. Vai aparecer a janela conforme abaixo.
Clicando na caixa de combinação onde aparece Geral você encontrará o objeto Workbook, na
caixa de combinação da direita você escolhe o evento desejado.
Vamos mostrar alguns dos principais eventos de um objeto Workbook e o que eles podem fazer.
EVENTO ACTIVATE
Ocorre quando a pasta de trabalho que contém esse evento torna-se ativa.
EVENTO OPEN
Open é o evento de pasta de trabalho padrão. Esse procedimento é ativado quando uma
pasta de trabalho é aberta, não necessita de nenhuma interface com o usuário. Ele tem uma
variedade de usos, como verificar o nome de usuário e personalizar os privilégios do usuário na
pasta de trabalho.
Exemplo:
A macro abaixo abre a pasta de trabalho com a planilha Janela ativada.
Private Sub Workbook_Open()
54
Worksheets("Janela").Activate
ActiveWindow.DisplayHorizontalScrollBar = False 'desativa a barra de rolagem horizontal
ActiveWindow.DisplayVerticalScrollBar = False ' desativa a barra de rolagem vertical
End Sub
EVENTO NEWSHEET
Ocorre quando uma nova planilha é adicionada à pasta de trabalho ativa. Esse evento tem
como argumento uma variável Sh, do tipo Object, que vai fazer referência para a planilha
adicionada e pode ser utilizada dentro do código como um elemento Worksheet.
No exemplo abaixo a macro será acionada quando inserir nova planilha, a nova planilha será
inserida após a última já existente.
EVENTO SHEETCHANGE
Exemplo1:
A macro abaixo abre uma pasta de trabalho quando você digita o nome da pasta de trabalho
desejada em uma célula na planilha da pasta de trabalho ativa:
55
Exemplo 1:
Esse exemplo cria um novo arquivo solicitando que o usuário digite o nome, após salva e fecha o
novo arquivo.
Sub Cria_Salva_Fecha_Arquivo()
Dim nomearq As String Workbooks.Add
nomearq = InputBox("Informe o nome do novo arquivo")
ActiveWorkbook.SaveAs Filename:=nomearq, FileFormat:=xlExcel7
ActiveWorkbook.Close savechanges:=False 'Fecha a pasta recem criada
End Sub
Exemplo 2:
A macro abaixo abre uma pasta de trabalho existente, localizando o caminho onde a mesma se
encontra.
Sub Acha_Caminho()
Dim Caminho As String
Caminho = ActiveWorkbook.Path
Workbooks.Open (Caminho & "\" & "classificar.xls")
End Sub
OBJETO APPLICATION
O objeto Application representa todo o aplicativo Microsoft Excel e seus derivados. Através
dele, podemos configurar a visualização, execuções e outras funcionalidades do Excel. O Objeto
Application possui várias propriedades e métodos, aqui mostraremos os princípais.
PROPRIEDADE THISWORKBOOK
Retorna um objeto de pasta de trabalho que representa a pasta onde a macro código atual
está funcionando. ThisWorkbook sempre devolve a pasta no qual o código está sendo executado.
PROPRIEDADE DISPLAYALERTS
Exemplo1:
Este exemplo fecha a pasta de trabalho “Tempo.xls” sem perguntar se deseja salvar alterações.
Sub Fecha_arq()
Application.DisplayAlerts = False
Workbooks("Tempo.xls").Close
56
Application.DisplayAlerts = True
End Sub
Exemplo2:
A macro abaixo exclui uma planilha sem aviso “Application.DisplayAlerts = False”, antes de excluir
a segunda planilha mostra um aviso “Application.DisplayAlerts = True”.
Sub Excluir_plan()
Application.DisplayAlerts = False
Application.Worksheets("plan7").Delete
MsgBox "A planilha foi excluída sem aviso...."
Application.DisplayAlerts = True
Application.Worksheets("plan8").Delete
MsgBox "A planilha foi excluída com aviso...."
End Sub
PROPRIEDADE SCREENUPDATING
Essa propriedade permite desativar a atualização quando False. True a atualização da tela
é ativada. Ou seja, quando você não quer ver seu ecrã acompanhar as ações de seu
procedimento. O padrão do VBA é sempre mostrar o ecrã durante a execução do procedimento.
Exemplo:
No exemplo abaixo você verá uma folha em branco, sem qualquer movimento e, em seguida, uma
folha onde as células de A1 a A10000 são iguais a "77".
Sub Oculta_ecra()
Range("A1").Select
Application.ScreenUpdating = False
Do Until Selection.Row = 10000
Selection.Value = 77
Selection.Offset(1, 0).Select
Loop
Range("A1").Select
Application.ScreenUpdating = True
End Sub
MÉTODO QUIT
Esse método encerra o Microsoft Excel com a opção que pergunta ao usuário se deseja
salvar os arquivos que estão sendo fechados, caso marque “não” fecha sem salvar.
Exemplo:
57
Sub Fechar()
Application.Quit
End Sub
MÉTODO ONKEY
Exemplo1:
O exemplo desabilita a configuração padrão da tecla TAB.
Sub Desabilita_Tab()
Application.OnKey "{TAB}", ""
End Sub
Exemplo2:
Habilita a configuração padrão da tecla TAB.
Sub Habilita_Tab()
Application.OnKey "{TAB}"
End Sub
Exemplo3:
Quando pressionar a tecla TAB será exibido uma caixa de mesnsagem.
Sub DemoOnKey()
Application.OnKey "{TAB}", "Message"
End Sub
Sub Message()
MsgBox "Oi"
End Sub
Até agora trabalhamos com variáveis que armazenam um único valor. Também é possível
ter uma variável mais poderosa chamada variável objeto, essa representa uma referência a um
objeto. Uma variável de objeto pode armazenar muitos valores, todas as propriedades associadas
ao objeto estão associadas a variável objeto. Uma variável de extrema importância que facilita a
codificação e melhora o desempenho de uma rotina.
58
Set – palavra chave que indica a associação do objeto a uma variável do tipo objeto
<Var_Objeto> - Variável Objeto
<Objeto> - Tipo do objeto a ser atribuído à variável
Dim oob As Object - O tipo de variável de objeto que você usar para armazenar o objeto
retornado pode afetar o desempenho do seu aplicativo. Declarar uma variável de objeto
com a cláusula As Object cria uma variável que pode conter uma referência a qualquer tipo
de objeto.
Dim Cel As Range - Quando você define uma variável de objeto para um objeto Range,
você pode facilmente manipular o intervalo usando o nome da variável.
Dim Planilha WorkSheet - Uma variável objeto Worksheet pode representar uma planilha
ou um conjunto de planilhas, assim você pode manipular as planilhas utilizando o nome da
variável.
Dim Arquivo Workbook – Quando você definir uma variável de objeto para um objeto
Workbook, você pode manipular as pastas de trabalho do Microsoft Excel fazendo
referencia a variável.
Dim X As Application – Uma variável objeto application pode representar todo o aplicativo
Microsoft Excel, contendo opções de configurações, métodos que retornam objetos e assim
por diante.
Exemplo da Declaração:
Dim aplicativo As Excel.Application
Dim arquivo As Excel.Workbook
Dim planilha As Excel.WorkSheet
O exemplo seguinte cria a variável de objeto cel, após atribui a mesma o intervalo A1:E10 da
plan1 na pasta de trabalho ativa. As instruções modificam propriedades do intervalo utilizando o
nome da viriável que é referente ao objeto de intervalo.
Sub intervalo_cel()
Dim cel As Range
Set cel = Worksheets("plan2").Range("A1:D5")
cel.Formula = "=RAND()" cel.Font.Bold = True
cel.Font.ColorIndex = 3
End Sub
59
Exemplo2:
Você pode combinar vários intervalos em um objeto Range usando o método Union. O exemplo
seguinte cria um objeto Range chamado unicel, define-o com os intervalos A1:B2 e C3:D4 e, em
seguida, formata com negrito os intervalos combinados.
Sub uniao_cel()
Dim cel1 As Range, cel2 As Range, unicel As Range
Set cel1 = Sheets("plan2").Range("A1:B2")
Set cel2 =
Sheets("plan2").Range("C3:D4") Set unicel
= Union(r1, r2) unicel.Font.Bold = True
End Sub
O exemplo abaixo abre uma nova pasta de trabalho do Microsoft Excel.
Sub AdicionaArquivo()
Dim Aquivo As Workbook
Dim ArqVelho As Workbook
Set ArqVelho = ActiveWorkbook
Set Arquivo = Workbooks.Add
ArqVelho.Activate
MsgBox Arquivo.FullName & " Nova pasta de trabalho adicionada"
End Sub
SUPLEMENTOS
61
No campo Salvar Como Tipo, role pela lista e selecione Suplemento do Excel (*.xlam).
Obs: Se o suplemento puder ser utilizado nas versões anteriores através do Excel 2007, escolha
suplemento Excel 97-2003(*.xla).
Note que o arquivo muda a extensão de xlsm para xlam e o local de salvamento muda
automaticamente para uma pasta de suplementos.
62
Pressione Ctrl+G para exibir a janela de verificação Imediata. Nessa janela, salve o
arquivo, utilizando uma extensão xlam, conforme a figura abaixo:
Obs.: Se o suplemento for utilizado no Excel97-2003, mude o parâmetro final xlAddin8 para
xlAddin.
INSTALANDO O SUPLEMENTO
Agora que você gerou um suplemento, vamos instalar o suplemento. Para isso, vamos
abrir o Excel. A partir do botão do Office, selecionar Opções do Excel. Na janela Opções do
Excel clique em Suplementos. Na parte inferior da janela, escolher Suplemetos do Excel a partir
da lista suspensa Gerenciar. Após clicar no botão Ir, veja figura abaixo:
63
O Excel exibirá a conhecida caixa de diálogo Suplementos.
O suplemento é então instalado. O Excel copia arquivo do local onde você salvou para a
localozação adequada da pasta de suplementos. Na caixa de diãlogo Suplementos, o título do
64
suplemento e os comentários conforme especificados na caixa de diálogo Propriedades do
Arquivo são exibidos.
FECHANDO SUPLEMENTOS
Para excluir um suplemento é necessário fazer pelo Windons Explorer. Localize o arquivo
renomeie e coloque em outro lugar, ou se realmente não quiser o suplemento pode excluir
definitivamente com Delete.
USERFORMS
Um objeto UserForm é uma janela ou caixa de diálogo que constitui parte da interface
personalizada pelo programador, tendo a finalidade de facilitar a interação entre a pasta de
trabalho Excel e o usuário de forma amigável. Os formulários podem ser construídos com poucos
objetos ou conforme sua necessidade. Esse ambiente personalizado estabelece a entrada de
dados, sem o usuário precisar preencher e navegar pelas inúmeras linhas das planilhas. A
vantagem disso é que podemos criar pequenos e inteligentes sistemas que solicitem dados aos
usuários, trate esses dados e devolva os resultados, armazenando informações necessárias em
planilhas Excel.
65
Após ter dado o clique em Inserir/UserForm a primeira visão que temos de um userform é
um formulário vazio, conforme figura abaixo:
66
Quando selecionamos o formulário, a caixa de ferramentas fica ativa. Esta possui todos os
controles necessários para criarmos nosso formulário. Sempre que você desejar ter uma idéia da
montagem do seu formulário, você pode executá-lo, clicando em executar ou tecle F5. Fechando o
formulário você volta para o ambiente de criação.
CONTROLES DE INTERFACE
Rótulo (Label1) – permite colocar um texto dentro do formulário. Para alterar o texto a ser
exibido no controle, clique na propriedade Caption e digite o texto desejado. Para formatar use as
propriedades Font e ForeColor.
Caixa de Texto (TextBox1) – são as melhores formas de receber dados de entrada. A caixa
de texto permite digitação de qualquer tipo de dados alfanumérico, numérico, datas e até mesmo
caracteres especiais.
Método set Focus – esse método dá foco á caixa de texto que o chamou.
Evento Change - ocorre sempre que uma cauxa de texto tem sua propriedade Text alterada,
ou seja, com qualquer digitação executada.
Evento Exit – entra em ação sempre que a caixa de texto perde o foco.
67
Botão de Comando (CommandButton1) – os botões de comandos, normalmente, são os
responsáveis pelo serviço pesado de um formulário. É através deles que as funções finais são
executadas e que determinam as consequências da aplicação. Os botões são sempre o ponto de
saída de um formulário. As propriedades recomendáveis para alteração: Name, Caption. As
demais propriedades podem ser alteradas conforme conceitos descritos no item Propriedades
Comuns.
Caixa de Combinação (ComboBox1) – serve para mostrar ao usuário uma lista de opções
multipla escolha. Elas podem, ou não, permitir digitação, è uma boa forma de impedir que o
usuário insira em sua planilha informações que não estejam se acordo com seus objetivos. Abaixo
segue as principais propriedades especificas, Métodos e Eventos do controle caixa de
combinação.
Propriedade List – permite acesso a lista de opções. Por exemplo, se uma lista possuir cinco
elementos, ComboBox1.list(0) será o primeiro, e ComboBox1.list(5) será o último elemento da
lista.
Propriedade Style – essa propreidade vai definir o estilo da caixa de combinação. Temos
duas opções fmStyleDropDownCombo – permite a digitação, e fmStyleDropDownList – obriga
a escolha de um item na lista.
Método AddItem - método que permite adicionar um novo item em uma caixa de
combinação. Sua sintaxe:
Onde Item é uma string ou variável indicando o texto do item a ser inserido, e Índex é a
posição em que o item deve ser inserido na caixa de combinação.
Método RemoveItem – Permite remover um item da lista de uma caixa de combinação. Sua
sintaxe:
68
fmMultiSelectMulti – permite mais de um item selecionada, utilizando o mouse para marcar
e desmarcar os itens e fmMultiSelectExtended – permite mais de um item selecionado,
utilizandoas teclas Ctrl e Shift em suas funções padrões de seleção.
Propriedade Value – esta propriedade define o estado do botão. True marca o botão e false
desmarca.
Quadro (Frame1) – Muito utilizado como contêiner de controles, tais como, Botão de Opção e
Caixa de Seleção.
69
Font – Exibe a caixa padrão de Fonte do Sitema onde podemos determinar a configuração dos
textos exibidos no formulário ou nos controles.
RowSource - origem dos dados do controle. Pode ser um intervalo de células da planilha.
MÉTODOS DE UM USERFORM
EVENTOS EM UM USERFORM
Os eventos mostrados na sequência servem também para vários outros controles, portanto
mais a frente podemos apenas expandir o conceito.
Initialize – acontece toda vez que um formulário for carregado para memória.
CRIANDO UM USERFORM
70
Você pode redimensionar o formulário pegando e arrastando as alças no lado direito, parte
inferior ou canto direito inferior do userform. Para adicionar qualquer um ou mais controles
descritos acima, clique no controle desejado na caixa de ferramentas, mova o mouse até o
formulário clique e arraste para dimensionar o controle, depois faça os ajustes necessários a seu
critério, como também, alterar manualmente as propriedades na janela Propriedades, conforme as
decrições das principais propriedades acima.
PROGRAMANDO O USERFORM
Diferentemente dos outros módulos, dar um duplo clique no módulo do formulário abre o
formulário no Modo de Criação. Para visualizar o código, clique com o botão direito do mouse no
módulo ou no userform no Modo de Criação e selecione Exibir Código, ou de um duplo clique no
userform.
Exatamente como uma planilha, um userform tem eventos desencadeados por ações.
Depois que o userform foi adicionado ao projeto, os eventos estarão disponíveis na lista suspensa
que fica no canto superior direito da janela de código, selecionando-se Userform na lista suspensa
Objeto, canto superior esquerdo da janela código.
71
Vários eventos para o userform podem ser selecionados na lista suspensa na parte
superior esquerda da janela Código
PROGRAMANDO CONTROLES
Para programar um controle, selecione o controle no qual você deseja programar, clique
com o botão direito do mouse sobre o controle, selecione Exibir Código ou dê um duplo clique no
controle. O rodapé, o cabeçalho e a ação padrão para o controle são automaticamente inseridos
na janela de código. Para ver e/ou escolher outras ações para um controle, selecione o controle na
lista de Objeto e visualize as ações na lista de eventos. Podem ser escolhidas várias ações para
um mesmo controle na lista de eventos.
72
Antes de executar o userform precisamos chamá-lo a partir de qualquer módulo, para isso
utilizamos o método Show, sua sintaxe: NameForm.Show.
Após executar o código acima você visualizará seu formulário conforme abaixo a cada
informação que inserir nas caixas de textos e clicar no botão Ok uma planilha do Excel estará
recebendo os dados.
73