Escolar Documentos
Profissional Documentos
Cultura Documentos
Este curso objetiva preparar o profissional que já possui algum conhecimento na elaboração de
planilhas do Excel, para passar a utilizar novos recursos que possam incrementar suas tarefas,
automatizando procedimentos ainda manuais e que tragam uma dinâmica na execução das
atividades do dia a dia.
Com o Excel se pode fazer desde simples cálculos, até cálculos mais avançados como
financeiros, matemáticos, lógicos, estatísticos, etc. Pode-se fazer desde controle de gastos, até
controle de estoque ou fluxo de caixa de uma empresa.
Você aprenderá a partir de agora as opções básicas e avançadas que serão utilizadas com o
auxílio desta apostila, lembrando que esta apostila servirá como referência para a maioria dos
comandos e opções do Excel. Em caso de dúvidas podemos contar também com a Ajuda do
próprio programa. Utilizando o assistente acionado pela tecla F1.
Os operadores especificam o tipo de cálculo que você deseja efetuar nos elementos de uma
fórmula. O Microsoft Excel inclui quatro tipos diferentes de operadores de cálculo: aritméticos, de
comparação, texto e referência.
Exemplo:
+ (sinal de adição)
– (sinal de subtração)
* (sinal de multiplicação)
/ (sinal de divisão)
% (símbolo de percentagem)
^ (sinal de exponenciação)
Exemplo:
Exemplo:
& (E comercial) Concatena dois valores para produzir um valor de texto contínuo
"north" & "wind" produz "Northwind".
Exemplo
: (dois-pontos) Operador de intervalo, que produz uma referência a todas as células entre
duas referências, incluindo as duas referências B5:B15
Exemplo:
Como uma pasta de trabalho pode conter várias planilhas, é possível referenciar uma célula
em outra planilha ou até em outro arquivo de pasta de trabalho. Observe em suas vinculações que
o sinal de ! (exclamação) sempre estará presente após o nome de sua planilha. A [ (chave) estará
sempre presente após o nome de seu arquivo de pasta de trabalho.
Exemplo:
[EX_Folha]Janeiro!A3 EX_Folha (nome da pasta de trabalho)
Janeiro (nome da planilha dentro da pasta de trabalho
Cuidado, quando você substitui uma fórmula pelo seu valor, o Microsoft Excel remove
permanentemente a fórmula. Se você substituir acidentalmente uma fórmula por um valor e
desejar restaurar a fórmula, clique em Desfazer logo após inserir ou colar o valor.
1 Selecione a célula que contém a fórmula. Se a fórmula for uma fórmula matricial,
selecione o intervalo que contém a fórmula matricial.
2 Clique em Copiar .
3 No menu Editar, clique em Colar especial.
4 Em Colar, clique em Valores.
2. FÓRMULAS E FUNÇÕES
A diferença entre uma função e uma fórmula esta demonstrada no quadro abaixo:
FÓRMULA FUNÇÃO
- Não possui um nome; - Possui um nome;
- Não possui parâmetros; - Possui parâmetros na maioria das
funções;
- Utiliza operadores aritméticos; - Utiliza operadores aritméticos e
operadores de comparação;
Exemplo:
Fórmula =A1+A2+A3+A4
Em uma matriz de dados ou faixa de valores, exibe o maior valor lançado (valor máximo).
Onde:
(B2:E6) – matriz de valores que serão verificados pela função máximo.
Em uma matriz de dados ou faixa de valores, exibe o menor valor lançado (valor mínimo).
Onde:
(B2:E6) – matriz de valores que serão verificados pela função Mínimo.
A função Maior é muito parecida com a função Máximo. Ela retorna o maior valor de uma matriz de
dados dependendo de sua classificação (o 2º maior, o 3º maior e assim por diante).
Exemplo: Na matriz abaixo, retornar o 2º e o 3º maior valor.
A função Menor faz a operação inversa da função Maior. Ela retorna, dependendo da posição
desejada, qual é o menor número de uma matriz de dados (o 2º menor, o 3º menor, e assim por
diante).
Exemplo: Na matriz abaixo, retornar o 4º menor valor e o 3º menor valor.
A função é utilizada para calcular a média de uma faixa de valores ou uma matriz de dados. Após
serem somados, os valores são divididos pela quantidade de valores utilizados.
Exemplo:
Esta função insere a data do sistema operacional automaticamente em uma planilha. Essa função é
muito utilizada em relatórios, pois não há a necessidade da digitação constante da data.
Requer um pouco de atenção, pois se esta função for inserida em um orçamento, por exemplo,
exibirá sempre a data em que o arquivo estará sendo aberto.
Muito parecida com a função anterior, mas com uma pequena diferença.
A função agora insere automaticamente a DATA e a HORA do sistema operacional.
A função MINÚSCULA converte valores digitados em letras maiúsculas para minúsculas. É utilizado
quando a planilha já está pronta e deseja-se converter os valores sem necessidade de digitar
novamente.
3.10.Função Pri.Maiúscula
A função Pri.Maiúscula converte a primeira letra de uma palavra para maiúscula. Muito útil para
conversão de nomes quando digitados em letras minúsculas.
3.11.Validação
Para formulários, normalmente utilizamos o comando de Validação para restringir o acesso aos
dados dos usuários.
3.12.Subtotais
Esta função é utilizada para ligar duas tabelas, localizando informações em uma delas e inserindo
na outra.
Por exemplo, imagine uma tabela de PREÇOS com a descrição e o valor de cada produto e outra
tabela de PEDIDOS apenas com a descrição e a quantidade solicitada. Com a função PROCV
podemos inserir na tabela PEDIDO o valor sem a necessidade de digitá-los novamente.
IMPORTANTE:
Para utilizar esta tabela é necessário que exista um campo coincidente entre as duas tabelas. Em
nosso exemplo utilizaremos o campo “Produto”.
Esse campo coincidente pode ser texto ou numérico, como um código de produto.
No exemplo, foram utilizadas duas Tabelas em uma mesma planilha, mas você pode utilizar
esta função para localizar valores em outras planilhas do seu arquivo, ou mesmo em outros
arquivos do Excel.
Exemplo:
Com a função PROCV vamos preencher a coluna preços com os valores existentes na planilha de
preços.
Onde:
valor_procurado – é o valor que você deseja encontrar na outra tabela (PRODUTO)
matriz_tabela – é a tabela na qual constam os valores que você deseja obter (PLANILHA DE
PREÇOS)
núm_índice_coluna – Na matriz_Tabela é o número da coluna que contem os valores (Na planilha
de Preços os valores estão na coluna 2, logo, o num_índice será 2)
procurar_intervalo – Pode ser Verdadeiro ou Falso. Dependerá da tabela matriz. Em nosso
exemplo, ela está em ordem alfabética e utilizaremos o VERDADEIRO.
2 – O valor Procurado será a célula A3 que contém a descrição do produto. Basta clicar sobre a
célula.
Repare que neste momento, Matriz_tabela está em negrito (Próximo passo) e que o ponto e vírgula
aparecem automaticamente.
Definição: Localiza um valor especifico na linha superior de uma tabela ou matriz e retorna um valor
na mesma coluna de uma linha especificada na tabela ou matriz.
Sintaxe
PROCH(valor_procurado;matriz_tabela;núm_índice_lin;procurar_intervalo)
Valor_procurado: é o valor a ser localizado na primeira linha da matriz de dados. Importante: Deve
obrigatoriamente estar na primeira linha.
Este processo é utilizado para vincular (criar um vinculo) entre células de várias planilhas.
O processo é simples.
Na célula de destino (onde você quer ter os dados vinculados) digite = (igual).
Agora com o mouse clique na planilha onde se localiza os dados (em nosso exemplo na Plan2)
Observe o resultado na barra de fórmulas:
É criado um link (=Plan2!A2). Quando a célula A2 em Plan2 for alterada, automaticamente a
planilha vinculada é alterada. Isso é muito útil para planilhas que utilizam muitos índices.
Remove todos os espaços do texto exceto os espaços únicos entre palavras. Use ARRUMAR no
texto que recebeu de outro aplicativo que pode ter espaçamento irregular.
Sintaxe
ARRUMAR(texto)
Exemplo
3.17. CONCATENAR
Agrupa várias seqüências de caracteres de texto em uma única seqüência de caracteres de texto.
Sintaxe
Texto1; texto2;... são 1 a 30 itens de texto a serem agrupados em um único item de texto. Os itens
de texto podem ser seqüência de caracteres de texto, números ou referências de célula única.
Comentários
O operador "&" pode ser usado no lugar de CONCATENAR para agrupar itens de texto.
Exemplos
3.18. DIREITA
Retorna o último caracter (ou à extrema direita) em uma seqüência de caracteres de texto.
Sintaxe
DIREITA(texto;núm_caract)
Texto é a seqüência de caracteres de texto que contém os caracteres que se deseja extrair.
Exemplos
Curso de Microsoft Excel Avançado 16/48
DIREITA("Preço de Venda"; 5) é igual a "Preço"
Exemplos
3.19. EXT.TEXTO
Sintaxe
EXT.TEXTO(texto;núm_inicial;núm_caract)
Texto é a seqüência de caracteres de texto que contém os caracteres que você deseja extrair.
Núm_inicial é a posição do primeiro caractere que você deseja extrair como texto. O primeiro
caractere em texto possui núm_inicial1, e assim por diante.
Exemplos
3.20. NÚM.CARACT
Sintaxe
NÚM.CARACT(texto)
Texto é o texto cujo tamanho se deseja determinar. Os espaços contam como caracteres.
Exemplos
Repete um texto um determinado número de vezes. Utilize REPT para preencher uma célula com
um número de ocorrências de uma seqüência de caracteres de texto.
Sintaxe
REPT(texto;núm_vezes)
Núm_vezes é um número positivo que especifica o número de vezes que você deseja repetir
texto. Se núm_vezes for 0 (zero), REPT retornará "" (texto vazio). Se núm_vezes não for um inteiro,
será truncado. O resultado da função REPT não pode ser superior a 32.676 caracteres.
Exemplos
3.22. INT
Sintaxe
INT(núm)
Núm é o número real que se deseja arredondar para baixo até um inteiro.
Exemplos
INT(8,9) é igual a 8
INT(-8,9) é igual a -9
A seguinte fórmula retorna a parte decimal de um número real positivo na célula A1:
A1-INT(A1)
3.23. MOD
Retorna o resto depois da divisão de núm por divisor. O resultado possui o mesmo sinal que divisor.
Sintaxe
MOD(núm,divisor)
Divisor é o número pelo qual você deseja dividir o número. Se divisor for 0, MOD retornará o valor
de erro #DIV/0!.
Comentários
Exemplos
MOD(3; 2) é igual a 1
As funções lógicas são usadas para criar testes lógicos. Um teste permite que uma fórmula
tome uma decisão baseada em determinados dados. Sempre que o resultado de uma determinada
célula exija mais do que um tipo de informação, ou que a fórmula a ser aplicada para aquela célula
seja diferente dependendo do conteúdo de outras células, neste momento a decisão correta é
utilizar uma fórmula lógica.
A função lógica mais comum e útil é a função SE, a qual permite desenvolver vários tipos de
testes lógicos sobre os operadores usados na declaração do teste.
3.25. Função ( SE )
Retorna um valor se uma condição que você especificou avaliar como VERDADEIRO e um outro
valor se for avaliado como FALSO.
Use SE para conduzir testes condicionais sobre valores e fórmulas.
1. Teste_lógico
É qualquer valor ou expressão que pode ser avaliada como VERDADEIRO ou FALSO.
2. Valor_se_verdadeiro
É o valor fornecido se teste_lógico for VERDADEIRO. Se teste_lógico for VERDADEIRO e
valor_se_verdadeiro for omitido, VERDADEIRO será fornecido. Valor_se_verdadeiro pode ser outra
fórmula.
3. Valor_se_falso
É o valor fornecido se teste_lógico for FALSO. Se teste_lógico for FALSO e valor_se_falso for
omitido, FALSO será fornecido. Valor_se_falso pode ser outra fórmula.
Comentários
Até sete funções SE podem ser aninhadas como argumentos valor_se_verdadeiro e valor_se_falso
para construir testes mais elaborados.
SE(Média>89;"A";SE(Média>79;"B";SE(Média>69;"C";SE(Média>59;"D";"F"))))
3.29. Função ( E )
Sintaxe
E(lógico1;lógico2; ...)
Lógico1; lógico2;... são de 1 a 30 condições que você deseja testar e que podem ser
VERDADEIRO ou FALSO.
Os argumentos devem ser valores lógicos, matrizes ou referências que contêm valores lógicos.
Exemplos:
Suponha que você deseja exibir B4 se esta contiver um número entre 1 e 100, e que você deseja
exibir uma mensagem se ela não contiver.
3.30. Função ( OU )
Sintaxe
OU(lógico1;lógico2; ...)
Lógico1; lógico2;... são 1 a 30 condições a serem testadas que podem ser VERDADEIRO ou
FALSO.
Exemplos:
Uma macro é um pequeno programa que contém uma lista de instruções a realizar no Excel. Como
sendo um repositório de operações, uma macro pode executar um conjunto de tarefas através de
um único procedimento o qual pode ser invocado rapidamente.
As instruções que formam o corpo da macro são escritas num código próprio para que o
computador as possa entender, essa linguagem é designada por VBA – Visual Basic for
Applications.
2. O nome da Macro será constituído por um conjunto de caracteres que identificarão a Macro e a
sua funcionalidade.
3. Shortcut Key – é composto por uma combinação de teclas que poderão ser utilizadas para
executar uma macro.
4. Opte por armazenar a macro numa das seguintes alternativas: This Workbook, New Workbook
ou Personal Workbook, sendo que cada uma corresponde a macros de âmbito diferente. Assim
deverão armazenar a macro na opção ThisWorkBook para que ela esteja activa sempre que o
documento estiver aberto, e para que ela esteja armazenada no próprio ficheiro não correndo o
risco de ficar armazenada nas Macros do Excel.
5. No campo Description, introduza um comentário à função – este poderá ser importante para que
não seja esquecido o respectivo objectivo e funcionalidade.
6. Clique em OK para iniciar a gravação da macro – neste momento será exibida uma toolbar
semelhante à da figura 2, e o ícone do rato será transformado numa cassete, indicando o estado de
gravação.
Nota: Tome atenção aos passos que dá quando está a gravar pois tudo será registado, o que significa
que quando for executar a macro, esses procedimentos serão efetuados.
Para abrir ao editor de Visual Basic for Applications: Ferramentas/ Macro / Editor Visual Basic ou
Alt + F11.
Na Janela Imediata.
Exemplo (Verificação Imediata):
a=Worksheetfunction.Fact(3)
debug.print a
6
Porém, o texto envolvido em cada procedimento é dotado de uma série de cores diferentes, sendo que
cada uma tem significado diferente.
Cor Significado
Azul Palavras-Chave da linguagem. Ex: Sub, End Sub, Function, If, Then, Else, While,
Loop,…
Vermelho Sempre que escreve na janela uma linha em linguagem VBA, o editor vai
rectificar a sintaxe da linguagem por forma a indicar se existe ou não algum erro
de escrita. Se for detectado um erro a linha fica a vermelho e é exibida uma
mensagem de erro, senão todas as palavras são reconhecidas, coloridas da cor da
respectiva categoria e alteradas para letras maiúsculas ou minúsculas, conforme
esteja pré-definido.
Preto Nome de variáveis, procedimentos, valores, operadores,…
Verde Comentário introduzidos no seio dos procedimentos. Estes comentários servem
para o utilizador poder associar algumas explicações aos procedimentos
realizados. De referir que as palavras com esta cor são ignoradas no
procedimento, i.e., não produzem qualquer efeito na sua execução. Para introduzir
comentários bastará que o caractere ‘ anteceda o texto a introduzir.
Amarelo Um sombreado amarelo poderá aparecer sobre a linha que identifica um
procedimento. Esta cor simboliza a ocorrência de um erro na execução do
respectivo procedimento e o estado de execução do mesmo, i.e., o procedimento
Curso de Microsoft Excel Avançado 27/48
iniciou a execução, durante a qual detectou um erro e agora está parado, mas
ainda em execução. Quando isto acontecer não deverá voltar a dar ordem de
execução do procedimento, sem antes parar (Stop) a execução mal sucedida.
Variável
Um local de armazenamento nomeado que pode conter dados, os quais podem ser
modificados durante a execução do programa. Cada variável possui um nome que a
identifica com exclusividade dentro de seu escopo.
Os nomes de variável devem começar com um caractere alfabético, devem ser exclusivos dentro
do mesmo escopo, não podem ter mais de 255 caracteres e também não podem conter um ponto
ou caractere de declaração de tipo incorporado.
- Embora não seja obrigatório, é uma BOA prática de programação definir o tipo de informação que
as variáveis armazenarão (em execuções longas ela economiza um pouco de tempo e memória).
Isto é chamado “declarar uma variável”.
- O tipo de informação que podemos armazenar numa variável depende do tipo de dados escolhido
para aquela variável.
A declaração de variáveis é opcional, se as variáveis não forem declaradas o VBA faz a sua
declaração por defeito. Assim sempre que a instrução do Dim é omitida para uma variável, essa
assume o tipo Variant.
Vantagens:
• Não é necessário estar preocupado se a variável está ou não declarada porque o VBA
automaticamente o faz
Desvantagens:
• Aumenta o tempo de execução – o VBA primeiro precisa de reconhecer o tipo de dados com os
quais está a trabalhar.
• Este tipo de dados consome mais memória (uma vez que tem que alocar espaço para qualquer
tipo de dados que lhe seja atribuído) – 16 bytes mais um byte por caractere se for String =>
problemas de performance para subrotinas grandes.
• Não é possível saber o tipo de dados que uma determinada variável contém – dificultando a
detecção de erros.
Para que o VBA detecte um erro sempre que uma variável não seja declarada deverá fazer:
• Tools/Options
• Editor Tab
• Activar Require Variable Declaration
Neste caso sempre que seja detectada uma variável que ainda não foi declarada dá uma mensagem de
erro - Variable Not Defined
Grande parte de seu trabalho no VBA será atribuir valor a variáveis e usar o seu conteúdo nos
procedimentos e funções do seu código.
O primeiro caractere deve ser uma letra, para que o VBA não “pense” que esse é um valor
numérico.
Não é permitido o uso de símbolos especiais de nossa língua como por exemplo: (Ponto), nem
tampouco o uso de espaço.
Por isso a melhor recomendação é: não use símbolos especiais e separe as palavras por letras
maiúsculas.
Obs.: As variáveis são declaradas antes de serem usadas, geralmente no início do programa.
• Os exemplos abaixo mostram os tipos de dados usados mais comuns
• Adicionando “Option Explicit” força a declaração da variável (recomendado)
Exemplos:
Option Explicit
Dim Result as Long
Dim Totalsum as Double
Dim Description as String
Dim Startdate as Date
Boolean
As variáveis Boolean são armazenadas como números de 16 bits (2 bytes), mas só podem ser
True ou False.
Byte
As variáveis Byte são armazenadas como números de 8 bits (1 byte), sem sinal, únicos, que variam
em valor de 0 a 255.
Currency
As variáveis Currency são armazenadas como números de 64 bits (8 bytes) em um formato de
número inteiro, em escala de 10.000 para fornecer um número de ponto fixo com 15 dígitos à
esquerda da vírgula decimal e 4 dígitos à direita.
O tipo de dados Currency é útil para cálculos que envolvem dinheiro e cálculos de ponto fixo, nos
quais a precisão é especialmente importante.
Date
As variáveis Date são armazenadas como números de 64 bits (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.
Curso de Microsoft Excel Avançado 30/48
Qualquer valor literal de data reconhecível pode ser atribuído a variáveis Date. Os literais date
devem estar entre sinais (#), por exemplo, #1 de janeiro de 1993# ou #1 jan 93#.
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.
Double
As variáveis Double, são armazenadas como números de 64 bits (8 bytes), com valor no intervalo
de -1,79769313486232E308 a -4,94065645841247E-324 para valores negativos e de
4,94065645841247E-324 a 1,79769313486232E308 para valores positivos.
Integer
As variáveis Integer são armazenadas como números de 16 bits (2 bytes) com valor no intervalo de
-32.768 a 32.767.
Long
As variáveis Long (inteiro longo) são armazenadas como números de 32 bits (4 bytes), sinalizados,
no intervalo de -2.147.483.648 a 2.147.483.647.
Single
As variáveis Single (vírgula flutuante de precisão simples) são armazenadas como números de 32
bits (4 bytes), com valor no intervalo de -3,402823E38 a -1,401298E-45 para valores negativos e de
1,401298E-45 a 3,402823E38 para valores positivos.
String
Os códigos para caracteres String variam de 0 a 255. Os primeiros 128 caracteres (de 0 a 127) do
conjunto de caracteres correspondem às letras e aos símbolos de um teclado padrão definidos pelo
conjunto de caracteres ASCII. Os 128 caracteres (de 128 a 255) seguintes representam caracteres
especiais, como letras de alfabetos internacionais, acentos, símbolos de moeda e frações.
Variant
comprimento fixo. (Os tipos Variant agora dá suporte a tipos definidos pelo usuário.)
O tipo de dados Variant é o tipo de dados para todas as variáveis que não estejam explicitamente
declaradas como algum outro tipo (usando instruções como Dim, Private, Public ou Static).
Uma Variant é um tipo especial de dados que pode conter qualquer tipo de dados, exceto dados
String de comprimento fixo. (Os tipos Variant agora dá suporte a tipos definidos pelo usuário.)
4.2.5 Constantes
Constantes são valores que não alteram durante a execução de uma rotina. São declaradas da mesma
forma que as variáveis, a única diferença reside no facto da atribuição ser feita na mesma instrução
da declaração, e só poder ser feita uma única vez.
Exemplo:
Const percent As Doublé = 0.05
Se ambas as expressões forem avaliadas como True, resultado será True. Se uma das
expressões for avaliada como False, resultado será False.
If Condição Then
Comando 1
Comando N
End If
Comando N+1
If Condição Then
Comando 1
Comando N
Else
Comando N+1
Comando N+M
End If
Comando N+M+1
End Select
FOR NEXT
Você pode utilizar instruções For...Next para repetir um bloco de instruções, um determinado
número de vezes.
Os loops For utilizam uma variável de controle cujo valor é aumentado ou diminuído a cada
repetição do loop.
Sintaxe:
[Instruções]
[Exit For]
[Instruções]
Next
A palavra Step permite-lhe aumentar ou diminuir a variável de contador pelo valor especificado.
Você pode sair de uma instrução For...Next antes que o contador atinja o seu valor final utilizando a
instrução Exit For.
Exemplo 1:
Sub CalcularTotal1()
Dim Contador As Integer
Dim Total As Double
Total=0
For Contador = 2 To 15
If Range(“a" & Contador).Value = "Centro" Then
Total = Total + Range(“b" & Contador).Value
End If
Next
Range(“d2").Value = Total
End Sub
Exemplo 2:
Para o número de vezes, a iniciar em 1 até que atinja, o valor Potência, pela incrementação de 1 na
execução de cada ciclo, deverá multiplicar sucessivamente o resultado acumulado, pela base.
• Do Loop permite posicionar a condição teste no inicio ou fim do loop, a condição no fim do
Loop evita uma inicialização prévia do valor das variáveis envolvidas na condição teste, dado que
essa inicialização pode ser feita no decurso do ciclo com valores reais.
• Do Loop permite ainda especificar se o loop se vai realizar enquanto (while) uma expressão for
verdadeira ou até que (until) a condição seja verdadeira (facilidade conseguida através do
operador Not)
Poderá ser:
Do [{While } <condição>]
Loop
Ou então:
Do
<Instruções a realizar em cada iteração>
Loop[{While } <condição>]
A região entre o início do comando, em Do While, e seu fim, em Loop, é chamada de laço, ciclo
ou, no original em inglês, “loop”.
Desta forma, a condição de entrada controla quantas vezes a iteração será repetida. Enquanto ela
permanecer verdadeira, o interior do loop será repetido. Pode ser que ela nunca fique falsa; isso
quer dizer que o programa não para nunca, e é um programa defeituoso. Portanto, bastante
cuidado com o uso do while.
Exemplo:
Sub Calcularotal2()
Dim Contador As Integer
Dim Total As Double
Contador = 2
Total = 0
Do While Range(“a" & Contador).Value <> “Sul"
Total = Total + Range(“b" & Contador).Value
Contador = Contador + 1
Loop
Range(“d2").Value = Total
End Sub
Curso de Microsoft Excel Avançado 36/48
4.10. Utilizando Arrays
4.11. Funções
2. Funções programadas: estas funções não existem “dentro” do Excel e nós precisamos criá-las.
Ou seja, precisamos programar a função para que depois possamos usá-la numa planilha (ou
numa outra função). Vamos agora começar a examinar os termos necessários para a construção
de uma função.
O primeiro passo necessário para construir uma função é criar um Módulo. Toda função que
definirmos deverá estar dentro de um módulo. Para criarmos um módulo no Excel basta ativarmos
o menu Inserir|Macro|Módulo. Uma vez criado, o módulo passa a ser parte integrante do
documento, da mesma forma que as várias planilhas que compõem o documento, e vai ser salvo e
aberto junto com o documento.
Um módulo, tal como uma planilha, também possui um nome, que fica localizado na aba na parte
inferior da janela do Excel. Dentro do módulo podemos definir uma ou mais funções. Todas as
funções definidas nos módulos podem ser chamadas de qualquer planilha do mesmo documento.
2. O corpo da função: é a parte que define o que deverá ser processada quando a função for
chamada.
End Function
As palavras em negrito são palavras reservadas da linguagem e devem aparecer desta forma e
nesta posição. A primeira linha é o cabeçalho; a última linha é o término. Tudo que fica entre o
cabeçalho e o término é o corpo da função. Note que imediatamente antes do término da função
colocamos a expressão de retorno da função. Vamos agora detalhar os elementos que aparecem
na definição da função.
Exemplo:
4.12. Subrotinas
Até agora vimos apenas programas no formato função. Funções possuem as seguintes
propriedades:
• Para acioná-las, podemos inserir uma chamada dentro de uma fórmula de uma planilha. No
entanto, não sabemos (ou não temos como) chamar uma função “de fora'' da planilha.
• A única forma de passar dados para uma função é através dos parâmetros de entrada.
• A única forma de uma função passar dados de volta para a planilha é através de um (único)
valor ao final da rotina.
Vamos agora ver uma forma de ativar programas de maneira independente de uma planilha, obter
informações de “fora” da planilha e poder não retornar nenhum valor, e comunicar resultados ao
usuário por meio de janelas.
End Sub
Subrotinas diferem de funções por não retornarem um valor. Por isso, não associamos um tipo de
dados às subrotinas. Podemos utilizar o nome da subrotina como variável.
Uma classe especial de subrotinas que nos é muito interessante é a classe de subrotinas em que a
lista de parâmetros é vazia. Neste caso, a subrotina é chamada de macro e pode ser ativada de
forma independente da planilha.
A ativação de macros é feita acionando-se o menu Ferramentas|Macros, que fará aparecer uma
janela contendo uma lista de todas as macros existentes nos módulos do programa. Como não há
passagem de parâmetros para macros, basta selecionar uma macro nesta lista, e acionar o botão
Executar.
Curso de Microsoft Excel Avançado 38/48
Mas se não há passagem de parâmetros nem retorno de valor, como passar e receber dados de
uma macro? Para isso, o código da macro precisa acionar comandos de entrada e saída, que
gerarão janelas de comunicação através das quais se fará a passagem da informação. Se
quisermos entrar com algum dado, deveremos inserir na subrotina uma chamada à função via
InputBox, da seguinte maneira:
Deveremos preencher o campo em branco e então clicar no botão (ou apertar ENTER). O String
digitado no campo será atribuído à variavel Texto, que deverá, portanto, ser do tipo String.
Se desejarmos ler um valor numérico ao invés de String, o valor inserido será convertido para o
tipo apropriado. Para isso, utilizamos as duas funções pré-definidas CDbl(String) e CInt(String)
que convertem o parâmetro String respectivamente em um valor equivalente do tipo Double ou Int.
Em geral, fazemos a chamada a InputBox e a conversão por CDbl ou CInt num mesmo comando,
como mostra o exemplo abaixo:
Que terá o efeito de primeiro mostrar uma janela de diálogo cujo valor preenchido deverá ser o
número de produtos, e em seguida uma outra caixa de diálogo que deverá ser preenchida com o
preço do primeiro produto.
Além de solicitar dados ao usuário, uma macro pode exibir alguma informação, por exemplo o
resultado de alguma computação. Esta comunicação pode ser feita na forma de uma janela que
mostra o texto ao usuário e um botão de OK que o usuário pode clicar ao terminar de ler a
mensagem.
O comando que faz isso é o comando MsgBox(String), que mostra o conteúdo do String ao
usuário em uma janela. Por exemplo, supondo que a variável MIN é do tipo Double e contém o
valor 27,32,
Se quisermos que a mensagem exibida seja quebrada em diversas linhas, devemos incluir nos
pontos desejados o caracter que codifica o comando “mude de linha”. Por exemplo,
MsgBox( “Isto aqui é uma” & Chr(13) & “linha quebrada.” )
produz como resultado:
Vejamos por exemplo a macro SomaNum que nos solicita 4 valores (representando por exemplo
preços de vários produtos para um pedido de compra) e calcula a sua soma:
'Inicialização
Soma = 0
Cont = 0
Valor = 0 '(Desnecessário, apenas ajuda a entender o programa)
'Apresenta resposta
MsgBox (``A soma é: '' & Soma)
End Sub
Vejamos por exemplo, a macro Tipo_Cabos que verifica em uma planilha todos os tipos de cabos
separando cada tipo e somando os mesmos.
Sub Tipo_Cabos()
'Declaração de variáveis
Dim Preco() As Single, Metro() As Single
Dim TipoCabo() As String
Dim Precos As Single, Metros As Single
Dim QtdTipo As Integer, Vazia As Integer, Linha As Integer, I As Integer
Dim Tipos As String
'Seleciona Planilha 1
Sheets("PLAN1").Select
'Começar na segunda linha
Linha = 2
'Dimensionamento do vetor
ReDim TipoCabo(0)
ReDim Metro(0)
ReDim Preco(0)
'Enquanto não encontrar 100 linhas vazias ele continua a verificacao
Do While Vazia < 100
Tipos = Cells(Linha, 1)
Sub EXEMPLO_1()
'*****************************************************
'EXEMPLO DE COMENTÁRIO
‘CONVERTEAM
'DESENVOLVIDO POR GLADSTONE
'DATA 01/06/2010
'EXEMPLO DECLAÇÃO DE VARIÁVEIS
'*****************************************************
Dim VAR_INT As Integer, VAR_TEXTO As String, _
VAR_REAL As Double, VAR_BOOL As Boolean, _
VAR_MOEDA As Currency
'ATRIBUIÇÃO DE VARIAVEIS
VAR_INT = 1
VAR_TEXTO = "CONVERTEAM"
VAR_REAL = 10.5
VAR_BOOL = True
VAR_MOEDA = 100.5
End Sub
Sub EXEMPLO_2()
'EXEMPLOS DE CONDIÇÃO
Dim A As Integer, B As Integer, C As Integer
A=1
B=1
C=1
If A >= B Then
MsgBox ("O VALOR DE A >= B")
ElseIf A > C Then
MsgBox ("A>C")
ElseIf B > A Then
MsgBox ("B>A")
ElseIf B > C Then
MsgBox ("B>C")
ElseIf C > A Then
MsgBox ("C>A")
ElseIf C > B Then
MsgBox ("C>B")
Else
MsgBox ("VALOR NÃO ENCONTRADO NAS CONDIÇÕES!")
End If
End Sub
Sub EXEMPLO_4()
'EXEMPLO DE LAÇO DE REPETIÇÃO FOR
Dim I As Integer, NOME As String, Idade As Integer, Sexo As String
Dim USUARIO As String, SOMA_IDADES As Integer
For I = 1 To 100
NOME = InputBox("Usuário número (" & I & ") Digite seu nome: ")
If NOME = "" Then
Exit For
End If
Idade = InputBox("Usuário número (" & I & ") Digite sua idade: ")
Sexo = InputBox("Usuário número (" & I & ") Digite seu sexo: ")
SOMA_IDADES = SOMA_IDADES + Idade
USUARIO = USUARIO + NOME + " ; "
Next
MsgBox ("OS USUARIOS SÃO: " & USUARIO)
MsgBox ("A SOMA DAS IDADES É :" & SOMA_IDADES)
End Sub
Sub EXEMPLO_6()
'EXEMPLO DE LAÇO DE REPETIÇÃO WHILE + VETOR
'CADASTRO DE DOAÇÃO DE ROUPAS
Cells(1, 1) = "NOME"
Cells(1, 2) = "QUANT_ROUPAS"
Dim I As Integer, NOME(3) As String, QUANT_ROUPAS(3) As Integer
'CADASTRO DE 3 REGISTROS
For I = 1 To 3
NOME(I) = InputBox("Digite seu nome: ")
QUANT_ROUPAS(I) = InputBox("Digite a quantidade de peças doadas: ")
Next
If InputBox("DESEJA IMPRIMIR OS DADOS? (S=SIM) OU (N=NÃO)") = "S" Then
For I = 1 To 3
Cells(I + 1, 1) = NOME(I)
Cells(I + 1, 2) = QUANT_ROUPAS(I)
Next
End If
End Sub
Sub EXEMPLO_8()
'Chama outro procedimento
Call EXEMPLO_7
End Sub
Sub EXEMPLO11()
'Chamando uma função com retorno integer
Dim I As Integer
I = RESULTADODASOMA(1, 2, 3)
End Sub
Sub EXEMPLO_12()
'Chamando outro procedimento COM PARAMETROS
Call EXEMPLO_9("GLADSTONE", "COSTA")
End Sub
Sub EXEMPLO_13()
'Chamando uma função com retorno string
MsgBox (EXEMPLO_10("GLADSTONE", "COSTA"))
End Sub