63
MS Excel & Visual Basic for Application

Apostila Excel Avancado

Embed Size (px)

Citation preview

Page 1: Apostila Excel Avancado

MS Excel &Visual Basic for

Application

Page 2: Apostila Excel Avancado

ExcelAvançado

Curso de Microsoft Excel Avançado 2/48

Page 3: Apostila Excel Avancado

SUMÁRIO

1. OPERADORES DE CÁLCULOS EM FÓRMULAS.........................................................................................41.1. Os operadores aritméticos.................................................................................................................................41.2. Os operadores de comparação..........................................................................................................................41.3. O operador de texto...........................................................................................................................................51.4. Os operadores de referência..............................................................................................................................61.5. Uso do endereço absoluto ($A1)......................................................................................................................61.6. Referências a outras planilhas ou pastas de trabalho........................................................................................6

2. FÓRMULAS E FUNÇÕES.................................................................................................................................73. FUNÇÕES ÚTEIS...............................................................................................................................................8

3.1. Função Máximo................................................................................................................................................83.2. Função Mínimo.................................................................................................................................................83.3. Função Maior....................................................................................................................................................93.4. Função Menor...................................................................................................................................................93.5. Função Média.................................................................................................................................................103.6. Função Hoje....................................................................................................................................................103.7. Função Agora..................................................................................................................................................103.8. Função Maiúscula...........................................................................................................................................103.9. Função Minúscula...........................................................................................................................................113.10. Função Pri.Maiúscula.....................................................................................................................................113.11. Função Romano..............................................................................................................................................113.12. Validação........................................................................................................................................................113.13. Função Comentário.........................................................................................................................................113.14. Subtotais..........................................................................................................................................................113.15. Função ProcV (Procura Vertical)...................................................................................................................113.16. Função ProcH (Procura Horizontal)...............................................................................................................153.17. Vincular células entre planilhas......................................................................................................................153.18. ARRUMAR....................................................................................................................................................163.19. CONCATENAR.............................................................................................................................................163.20. DIREITA........................................................................................................................................................163.21. EXT.TEXTO...................................................................................................................................................173.22. NÚM.CARACT..............................................................................................................................................173.23. REPT...............................................................................................................................................................183.24. INT..................................................................................................................................................................183.25. MOD...............................................................................................................................................................183.26. Auto Filtro.......................................................................................................................................................193.27. Função ( SE )..................................................................................................................................................213.28. Função Aninhada (SE)....................................................................................................................................223.29. Fórmula do SomaSe........................................................................................................................................223.30. Formatação Condicional.................................................................................................................................233.31. Função ( E ).....................................................................................................................................................233.32. Função ( OU ).................................................................................................................................................24

4. Macros...............................................................................................................................................................254.1. Como Gravar uma Macro?.............................................................................................................................254.2. Editor Visual Basic for Applications..............................................................................................................264.3. Objetos mais usados no VBA:........................................................................................................................274.4. Trabalhando com variáveis.............................................................................................................................27

4.2.1 Variáveis – Declaração Opcional e o Tipo Variant.........................................................................................284.2.2 Variáveis – Declaração Forçada................................................................................................................284.2.3 Declarando variáveis...................................................................................................................................294.2.4 Tipo de dados:..............................................................................................................................................294.2.5 Constantes....................................................................................................................................................30

4.5. Operadores lógicos.........................................................................................................................................314.6. Comandos de Seleção (IF-THEN e IF-THEN-ELSE)....................................................................................314.7. Select Case......................................................................................................................................................324.8. Cláusulas de Loop...........................................................................................................................................344.9. Utilizando Arrays............................................................................................................................................364.10. Funções...........................................................................................................................................................364.11. Subrotinas.......................................................................................................................................................37

Curso de Microsoft Excel Avançado 3/48

Page 4: Apostila Excel Avancado

5. Exemplos de Scripts:.........................................................................................................................................41

Curso de Microsoft Excel Avançado 4/48

Page 5: Apostila Excel Avancado

INTRODUÇÃO

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.

Sobre o Microsoft Excel

O Excel é considerado um software de planilha eletrônica ou de cálculos. A primeira vista nos parece um pouco complicado, mas sua operação é muito simples.

Com o Excel se pode fazer desde simples cálculos, até cálculos mais avançados comofinanceiros, 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.

1. OPERADORES DE CÁLCULOS EM FÓRMULAS

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.

1.1. Os operadores aritméticos

efetuam operações matemáticas básicas, como adição, subtração ou multiplicação, combinam números e produzem resultados numéricos.

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)

1.2. Os operadores de comparação

comparam dois valores e produzem o valor lógico VERDADEIRO ou FALSO.

Exemplo:

= (sinal de igual) Igual a A1=B1> (sinal de maior do que) Maior do que A1>B1< (sinal de menor do que) Menor do que A1<B1>= (sinal de maior ou igual a) Maior ou igual a A1>=B1<= (sinal de menor ou igual a) Menor ou igual a A1<=B1<> (sinal de diferente) Diferente A1<>B1

Curso de Microsoft Excel Avançado 5/48

Page 6: Apostila Excel Avancado

1.3. O operador de texto

"&" combina um ou mais valores de texto para produzir um único texto.

Exemplo:

& (E comercial) Concatena dois valores para produzir um valor de texto contínuo"north" & "wind" produz "Northwind".

1.4. Os operadores de referência

combinam intervalos de células para cálculos.

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

; (ponto-e-vírgula) Operador de união, que combina diversas referências em uma referência SOMA(B5:B15;D5:D15)

(espaço simples) Operador de interseção, que produz uma referência a células comuns a duas referências SOMA(B5:B15 A7:D7)Neste exemplo, a célula B7 é comum aos dois intervalos.

1.5. Uso do endereço absoluto ($A1)

Exemplo:

$A1 mantém o endereço absoluto apenas da colunaA$1 mantém o endereço absoluto apenas da linha$A$1 mantém o endereço absoluto tanto da coluna como da linha

1.6. Referências a outras planilhas ou pastas de trabalho

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

Substituir uma fórmula pelo seu valor calculado

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.

Curso de Microsoft Excel Avançado 6/48

Page 7: Apostila Excel Avancado

Substituir parte de uma fórmula pelo seu valor calculado

1 Clique na célula que contém a fórmula.2 Na barra de fórmulas, selecione a parte da fórmula que você deseja substituir pelo seu

valor calculado. Quando você seleciona a parte da fórmula que deseja substituir, certifique-se de que você tenha incluído o operando inteiro. Por exemplo, se você selecionar uma função, deve selecionar todo o nome da função, o parêntese de abertura, os argumentos e o parêntese de fechamento.

3 Para calcular a parte selecionada, pressione F9.4 Para substituir a parte selecionada da fórmula pelo seu valor calculado, pressione

ENTER.

Para restaurar a fórmula original, pressione ESC.

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

Função =SOMA(A1:A4), onde “SOMA” é o nome da função e “A1:A4” são os parâmetros

Curso de Microsoft Excel Avançado 7/48

Page 8: Apostila Excel Avancado

3. FUNÇÕES ÚTEIS

3.1. Função Máximo

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.

3.2. Função Mínimo

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.

Curso de Microsoft Excel Avançado 8/48

Page 9: Apostila Excel Avancado

3.3. Função Maior

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.

3.4. Função Menor

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.

Curso de Microsoft Excel Avançado 9/48

Page 10: Apostila Excel Avancado

3.5. Função Média

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:

3.6. Função Hoje

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.

3.7. Função Agora

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.

3.8. Função Maiúscula

A função MAIÚSCULA converte valores digitados em minúscula para maiúscula. Éutilizado quando a planilha já está pronta e deseja-se converter os valores sem necessidade de digitar novamente.

Curso de Microsoft Excel Avançado 10/48

Page 11: Apostila Excel Avancado

3.9. Função Minúscula

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

O recurso de subtotal calcula rapidamente agrupamentos de valores ou dados, dependendo da classificação aplicada a tabela.

3.13.Função ProcV (Procura Vertical)

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.

Curso de Microsoft Excel Avançado 11/48

Page 12: Apostila Excel Avancado

Sintaxe: PROCV(valor_procurado;matriz_tabela;núm_índice_coluna;procurar_intervalo)

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.

Curso de Microsoft Excel Avançado 12/48

Page 13: Apostila Excel Avancado

Passo a Passo:

1 – Na célula C3 digitaremos a função

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.

3 – Selecione toda a tabela de preços .

Curso de Microsoft Excel Avançado 13/48

Page 14: Apostila Excel Avancado

4 – Posicione o cursor após A13:B21 e digite ponto e virgula. Depois disso, digite coluna (2) e novamente ponto e virgula.

Perceba que apareceu uma lista de opções: VERDADEIRO ou FALSO.Escolha VERDADEIRO se a tabela matriz estiver em ordem alfabética, caso contrário escolha FALSO.

4 – Posicione ENTER e o primeiro resultado aparecerá.

Curso de Microsoft Excel Avançado 14/48

Page 15: Apostila Excel Avancado

4 – Agora, arraste o conteúdo da célula C3 para baixo até a célula C10.

3.14. Função ProcH (Procura Horizontal)

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.

SintaxePROCH(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.

Matriz_tabela é a tabela de informações em que os dados são procurados.Use uma referência para um intervalo ou nome de intervalo.Num_índice_lin é o número da linha que está o resultado que a função deverá retornar. O índice inicia-se em 1 (sendo a primeira linha) e sucessivamente até a última linha dos dados.procurar_intervalo é o modo que a função irá retornar os dados. Se procurar_intervalo for FALSO, matriz_tabela não precisará ser ordenada.Possíveis erros:#VALOR! – quando núm_índice_lin for menor do que 1#REF! – se núm_índice_lin for maior do que o número de linhas em matriz_tabela#N/D – quando o valor não é encontrado em matriz_tabela.

3.15. Vincular células entre planilhas

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.

Curso de Microsoft Excel Avançado 15/48

Page 16: Apostila Excel Avancado

3.16. ARRUMAR

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)

Texto é o texto do qual se deseja remover espaços.

Exemplo

ARRUMAR(" Primeiro Trimestre Ganhos ") é igual a "Primeiro Trimestre Ganhos"

3.17. CONCATENAR

Agrupa várias seqüências de caracteres de texto em uma única seqüência de caracteres de texto.

Sintaxe

CONCATENAR (texto1;texto2; ...)

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

CONCATENAR("Total "; "Valor") é igual a "Valor total". Isto equivale a digitar "Total"&" "&"Valor".

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.

Núm_caract especifica quantos caracteres você deseja extrair.

· Núm_caract deve ser maior ou igual a zero.· Se núm_caract for maior do que texto, DIREITA retornará todo o texto.· Se núm_caract for omitido, será considerado 1.

Exemplos

Curso de Microsoft Excel Avançado 16/48

Page 17: Apostila Excel Avancado

DIREITA("Preço de Venda"; 5) é igual a "Preço"

DIREITA("Número de estoque") é igual a "e"

DIREITA assemelha-se à função ESQUERDA;

Exemplos

ESQUERDA("Preço de venda"; 5) é igual a "Preço"

Se A1 contiver "Suécia", então:

ESQUERDA(A1) é igual a "S"

3.19. EXT.TEXTO

Retorna um número específico de caracteres da seqüência de caracteres texto, começando na posição que você especificar.

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

EXT.TEXTO("Fluxo fluido"; 1; 5) é igual a "Fluxo"

EXT.TEXTO("Fluxo fluido"; 7; 6) é igual a "fluido"

EXT.TEXTO("1234"; 5; 5) é igual a "" (texto vazio)

3.20. NÚM.CARACT

Retorna o número de caracteres em uma seqüência de caracteres de texto.

Sintaxe

NÚM.CARACT(texto)

Texto é o texto cujo tamanho se deseja determinar. Os espaços contam como caracteres.

Exemplos

NÚM.CARACT("Rio de Janeiro, RJ") é igual a 18NÚM.CARACT("") é igual a 0

Curso de Microsoft Excel Avançado 17/48

Page 18: Apostila Excel Avancado

3.21. REPT

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)

Texto é o texto que você deseja repetir.

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

REPT("*-"; 3) é igual a "*-*-*-"Se A3 contiver "Vendas", então: REPT($A$3; 2,9) é igual a "VendasVendas"

3.22. INT

Arredonda um número para baixo até o número inteiro mais próximo.

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)

Núm é o número para o qual você deseja encontrar o resto.

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

A função MOD pode ser expressa em termos da função INT:

Curso de Microsoft Excel Avançado 18/48

Page 19: Apostila Excel Avancado

MOD(n; d) = n - d*INT(n/d)

Exemplos

MOD(3; 2) é igual a 1

3.24. Auto Filtro

O recurso de Autofiltro é utilizado quando quisermos rapidamente aplicar filtragem nosdados que estão sendo apresentados.

Curso de Microsoft Excel Avançado 19/48

Page 20: Apostila Excel Avancado

Curso de Microsoft Excel Avançado 20/48

Page 21: Apostila Excel Avancado

FUNÇÕES LÓGICAS (DECISÃO)

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.

Curso de Microsoft Excel Avançado 21/48

Page 22: Apostila Excel Avancado

Sintaxe 1SE(teste_lógico;valor_se_verdadeiro;valor_se_falso)

- 1 - - 2 - - 3 -

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(B2>C2;"Acima do orçamento";"OK") é igual a "Acima do orçamento"

3.26. Função Aninhada (SE)

SE(Média>89;"A";SE(Média>79;"B";SE(Média>69;"C";SE(Média>59;"D";"F"))))

No exemplo anterior, a segunda instrução SE também é o argumento valor_se_falso para a primeira instrução SE. Da mesma maneira, a terceira instrução SE é o argumento valor_se_falso para a segunda instrução SE. Por exemplo, se o primeiro teste_lógico (Média>89) for VERDADEIRO, "A" será retornado. Se o primeiro teste_lógico for FALSO, a segunda instrução SE é avaliada e assim por diante.

3.27. Fórmula do SomaSe

Soma um intervalo de células mediante uma condição estabelecida. Exemplo: vocêgostaria de somar somente as faturas que foram pagas.

Valor Recebido = SOMASE(C2:C7;”PG”;B2:B7)

Curso de Microsoft Excel Avançado 22/48

Page 23: Apostila Excel Avancado

3.28. Formatação Condicional

Funciona de forma similar a formatação convencional, a diferença é que a formataçãoobedece a um critério. Por exemplo: Em uma planilha de vendas, você quer assinalar as que tiveram valor igual ou superior a R$ 100,00. Para executar a formatação deve-se em primeiro momento selecionar as células onde os valores serão verificados.Clique no Menu Formatar e depois em Formatação Condicional (tela abaixo).

O Excel permite que sejam aplicadas até 3 formatações condicionais simultâneas. Paraincluir mais verificações, clique no botão Adicionar.

3.29. Função ( E )

Retorna VERDADEIRO se todos os argumentos forem VERDADEIRO; retorna FALSO se um ou mais argumentos forem FALSO.

SintaxeE(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.

Curso de Microsoft Excel Avançado 23/48

Page 24: Apostila Excel Avancado

Uma matriz ou argumento de referência contiver texto ou células vazias, estes valores serão ignorados.Se o intervalo especificado não contiver valores lógicos, E retornará o valor de erro #VALOR!.

Exemplos:

E(VERDADEIRO; VERDADEIRO) é igual a VERDADEIROE(VERDADEIRO; FALSO) é igual a FALSO

Se B4 contiver um número entre 1 e 100, então:E(1<B4; B4<100) será igual a VERDADEIRO

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.

Se B4 contiver 104, então:SE(E(1<B4; B4<100); B4;"O valor está fora do intervalo.") será igual a "O valor está fora do intervalo".

3.30. Função ( OU )

Retorna VERDADEIRO se qualquer argumento for VERDADEIRO; retorna FALSO se todos os argumentos forem FALSO.

SintaxeOU(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:

OU(VERDADEIRO) é igual a VERDADEIRO

OU(1+1=1;2+2=5) é igual a FALSO

Curso de Microsoft Excel Avançado 24/48

Page 25: Apostila Excel Avancado

4. Macros

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.

Existem duas possibilidades de criação de macros:

Através do Gravador de Macros Utilizando o editor e programando em Visual Basic for Applications

4.1. Como Gravar uma Macro?

1. Ferramentas / Macro / Macros. O Excel exibirá a caixa de diálogo da fig.1.

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.

Curso de Microsoft Excel Avançado 25/48

Page 26: Apostila Excel Avancado

7. Na toolbar Stop Record, existem dois botões: Stop Recording e Relative Reference – O botão de Stop Recording termina a gravação da macro, o botão de Relative Reference selecciona o modo de gravação da macro – se é feito com base em referências relativas (botão seleccionado) ou referências absolutas.

8. No caso da toolbar Stop Record desaparecer, poderá voltar a exibi-la fazendo no menu a sequência: Exibir / Barra de Ferramentas / Parar Gravação. Caso a toolbar não apareça listada a gravação de macros não está activa.

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.

4.2. Editor Visual Basic for Applications

Para abrir ao editor de Visual Basic for Applications: Ferramentas/ Macro / Editor Visual Basic ou Alt + F11.

Curso de Microsoft Excel Avançado 26/48

Page 27: Apostila Excel Avancado

4.3. Objetos mais usados no VBA:

- Range: refere-se a uma célula particular do Excel.Exemplo:Range("a2").Value=3

- Cells: uma outra maneira de se referir a uma célula particular do Excel.Exemplo:Cells(2,2).Value=6

- Worksheets: refere-se a uma planilha particular do Excel. Exemplo:Worksheets(“Plan3").Select

- Worksheetfunction: chama as funções disponíveis do Excel.Exemplo:

- MsgBox: mostra uma mensagem no Excel. Exemplo:MsgBox Application.Name

- debug.print : mostra um resultado, variável, etc

Na Janela Imediata.Exemplo (Verificação Imediata):a=Worksheetfunction.Fact(3)debug.print a6

4.4. As Cores do VBA

Na Janela de Edição são programados, armazenados e exibidos os procedimentos VBA criados.

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

Page 28: Apostila Excel Avancado

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.

4.5. Trabalhando com variáveis

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.

Elas contêm dados temporários

- Podemos pensar nas variáveis como “células do Excel”

- 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.

Curso de Microsoft Excel Avançado 28/48

Page 29: Apostila Excel Avancado

4.2.1 Variáveis – Declaração Opcional e o Tipo Variant

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.

Utilização do tipo Variants

Vantagens:

Diminui o número de linhas de código

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.

4.2.2 Variáveis – Declaração Forçada

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

Ou então, escrever no início de cada módulo Option Explicit

Neste caso sempre que seja detectada uma variável que ainda não foi declarada dá uma mensagem de erro - Variable Not Defined

Curso de Microsoft Excel Avançado 29/48

Page 30: Apostila Excel Avancado

4.2.3 Declarando variáveis

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 se pode usar as palavras reservadas do VBA, como nomes de variáveis;

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 ExplicitDim Result as LongDim Totalsum as DoubleDim Description as StringDim Startdate as Date

- O exemplo a seguir cria a variável strNome e especifica o tipo de dados String.

Dim StrNome As String

4.2.4 Tipo de dados:

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.

O tipo de dados Byte é útil para conter dados binários.

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

Page 31: Apostila Excel Avancado

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.

Const <Nome_Constante> As <Tipo> = <Valor>Const <Nome_Constante> As <Tipo> = <Expressão de cálculo>

Exemplo:Const percent As Doublé = 0.05

Curso de Microsoft Excel Avançado 31/48

Page 32: Apostila Excel Avancado

4.6. Operadores lógicos

And (Utilizado para efetuar uma conjunção lógica em duas expressões.)

Sintaxe: resultado = expressão1 And expressão2

Se ambas as expressões forem avaliadas como True, resultado será True. Se uma das expressões for avaliada como False, resultado será False.

Or (Utilizado para efetuar uma disjunção lógica em duas expressões.)

Sintaxe: resultado = expressão1 Or expressão2

Se uma ou ambas as expressões forem True, resultado será True.

Not (Utilizado para efetuar uma negação lógica em uma expressão.)

Sintaxe: resultado = Not expressão

O operador Not inverte os valores do resultado de uma expressão ou de uma variável.

4.7. Comandos de Seleção (IF-THEN e IF-THEN-ELSE)

Os comandos IF-THEN e IF-THEN-ELSE permitem selecionar quais os comandos que serão executados dependendo de uma condição.

O comando IF-THEN tem o seguinte formato:

If Condição Then Comando 1

Comando N End If Comando N+1

O comportamento do comando IF-THEN é o seguinte: primeiramente a condição é avaliada, podendo resultar em dois valores: TRUE (verdadeiro) ou FALSE (falso). Se a condição for verdadeira, os comandos 1 até N serão executados e, em seguida, o comando N+1. Se a condição for falsa, nenhum dos comandos de 1 a N será executado e o programa irá diretamente para o comando N+1. Por outro lado, o comando IF-THEN-ELSE tem o seguinte formato:

If Condição Then Comando 1

Comando N Else Comando N+1

Comando N+M End If Comando N+M+1

O comportamento do comando IF-THEN-ELSE é o seguinte: A condição é avaliada; se ela for verdadeira, os comandos de 1 até N serão executados; se a condição for falsa, os comandos de N+1 a N+M serão executados. Em ambos os casos, o comando posterior a ser executado será o comando N+M+1.

Curso de Microsoft Excel Avançado 32/48

Page 33: Apostila Excel Avancado

Exemplo:Sub Multiplicação1()

Dim Mult as DoubleMult = Range(“a1”).Value*Range(“b1”).ValueIf Mult > 20 Then

MsgBox “Maior que 20"Else

MsgBox “Menor que ou igual a 20"End If

End Sub

4.8. Select Case

Permite a escolha de um percurso mediante a avaliação de n condições. É de extrema utilidade para evitar os If’s encadeados, dando um maior grau de legibilidade e simplicidade ao código construído.

Select Case <Expressão a ser avaliada>

[Case <Valor da Expressão>[Instruções a realizar]]

...[Case Else

[Instruções a realizar na situação residual]]

End Select

Curso de Microsoft Excel Avançado 33/48

Page 34: Apostila Excel Avancado

Construção da Estrutura

Select Case Palavras-Chave que indicam o inicio de um controlo Select Case

Idade Expressão sujeita a teste, i.e., variável cujo conteúdo está a ser avaliado. Esta variável vai ser comparada sucessivamente pelos valores alternativos apresentados nas instruções Case <Valor>, se encontrar o valor nalguma dessas opções Case executará as linhas de código que aí terão inicio até à opção de Case seguinte. Caso o valor da variável a ser comparada não corresponda a nenhum valor apresentado nas opções Case, existe uma opção Case especial - Case Select - para os restantes valores, neste caso serão executadas todas as instruções que se localizem entre o Case Else e o Case Select.

Case Is<3 ou Case Is<=12 ouCase Is<=17 ouCase Is<=25 ouCase Is<=65 ou

Expressões Case. Se o valor da variável for igual a qualquer um dos valores apresentados em cada uma destas expressões, o fluxo de execução terá continuidade na linha abaixo da expressão case que faz o matching, até que uma nova expressão case seja encontrada. Sendo que nessa altura termina o controlo Select Case dando continuidade ao programa nas instruções que se seguirem ao End Select.

Case Else Será a instrução Case residual, seleccionada somente se nenhuma das outras o tiver sido. Neste caso serão realizadas todas as instruções de código que se lhe seguirem até à expressão End Select. Findo o qual seguirá todas as instruções após o controlo Select case.

End Select Palavra-Chave que indica o fim do controlo Select Case.

Curso de Microsoft Excel Avançado 34/48

Page 35: Apostila Excel Avancado

4.9. Cláusulas de Loop

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:

For contador = Inicio to Final [Step numero]

[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 IntegerDim Total As DoubleTotal=0For Contador = 2 To 15

If Range(“a" & Contador).Value = "Centro" ThenTotal = Total + Range(“b" & Contador).Value

End IfNextRange(“d2").Value = Total

End Sub

Exemplo 2:

For Contador = 1 To Potência Step 1Resultado = Resultado * Base

Next

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.

Curso de Microsoft Excel Avançado 35/48

Page 36: Apostila Excel Avancado

Do While

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>]

<Instruções a realizar em cada iteraçã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”.

O comportamento do comando DO WHILE-LOOP é o seguinte: inicialmente a condição é testada. Se for falsa, nenhum comando dentro do loop é executado, e a execução prossegue no comando N+1. Se a condição for verdadeira, o programa prossegue executando um a um os comandos de 1 a N. Ao terminar o comando N, ou seja, ao atingir a instrução Loop, o programa volta ao início do loop e testa a condição novamente. Se ela continuar verdadeira então novamente são executados os comandos de 1 a N; caso contrário, a iteração termina e o programa sai do loop e prossegue a partir do comando N+1. É possível cancelar a execução de um bloco Do com a utilização da instrução Exit Do.

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 IntegerDim Total As DoubleContador = 2Total = 0Do While Range(“a" & Contador).Value <> “Sul"

Total = Total + Range(“b" & Contador).ValueContador = Contador + 1

LoopRange(“d2").Value = Total

End Sub

Curso de Microsoft Excel Avançado 36/48

Page 37: Apostila Excel Avancado

4.10. Utilizando Arrays

Pretende-se inicializar um array com um conjunto de 5 países e posteriormente visualizar os elementos introduzidos.

Alteração da sub-rotina Inicializa_Array

4.11. Funções

As funções no Excel são divididas em dois tipos:

1. Funções pré-definidas: estas funções “vêm dentro” do Excel. A função INT por exemplo, é uma função pré-definida. Há uma lista bastante grande destas funções, mas não nos ocuparemos dela agora.

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.

A definição de uma função possui 3 partes:

1. O cabeçalho: informa que estamos definindo uma função, qual o seu nome, quais são seus parâmetros e que tipo de valor a função retorna.

2. O corpo da função: é a parte que define o que deverá ser processada quando a função for chamada.

3. O término da função: indica que terminou a definição da função.

O formato genérico de uma função é o seguinte:

Curso de Microsoft Excel Avançado 37/48

Page 38: Apostila Excel Avancado

Function NomeDaFunção( Param1 As Tipo, ..., ParamN As Tipo ) As Tipo

Aqui vem o corpo da função

NomeDaFunção = Valor de Retorno

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:

Function JurosSimples(CapitalInicial As Double, Taxa As Double, NMeses As Integer) As DoubleDim CapitalAcrescido As DoubleCapitalAcrescido = CapitalInicial * (Taxa / 100) * NMesesJurosSimples = CapitalInicial + CapitalAcrescidoEnd Function

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.

A isso se dá o nome de subrotina ou procedimento. Uma subrotina possui o seguinte formato

Sub NomeSub( <Lista de Parâmetros> )

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

Page 39: Apostila Excel Avancado

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:

Texto = InputBox( “Entre com um valor” )

Ao executarmos este comando, primeiramente aparecerá uma janela contendo:

o texto “Entre com um valor'' enviando uma mensagem ao usuário; um campo em branco para ser preenchido; e um botão de OK.

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:

Dim Nprods As Integer Dim Preco1 As Double

Nprods = CInt( InputBox( “Entre a quantidade de produtos:'' )) Preco1 = CDbl( InputBox( “Preço do primeiro produto'' ))

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,

MsgBox( “O melhor preço é: “ & MIN ) faz aparecer uma janela com a mensagem:

O melhor preco é: 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:

Isto aqui é uma linha quebrada.

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:

Curso de Microsoft Excel Avançado 39/48

Page 40: Apostila Excel Avancado

Sub SomaNum() Dim Soma As Double Dim Cont As Integer Dim Valor As Double

'Inicialização Soma = 0 Cont = 0 Valor = 0 '(Desnecessário, apenas ajuda a entender o programa)

Do While Cont < 4 'Le novo valor, convertendo-o para Double Valor = CDbl(InputBox(“Entre com o valor”)) 'Atualiza a soma Soma = Soma + Valor 'Prepara a próxima iteração Cont = Cont + 1 Loop

'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áveisDim Preco() As Single, Metro() As SingleDim TipoCabo() As StringDim Precos As Single, Metros As SingleDim QtdTipo As Integer, Vazia As Integer, Linha As Integer, I As IntegerDim Tipos As String

'Seleciona Planilha 1Sheets("PLAN1").Select'Começar na segunda linhaLinha = 2'Dimensionamento do vetorReDim TipoCabo(0)ReDim Metro(0)ReDim Preco(0)'Enquanto não encontrar 100 linhas vazias ele continua a verificacaoDo While Vazia < 100 Tipos = Cells(Linha, 1)

Curso de Microsoft Excel Avançado 40/48

Page 41: Apostila Excel Avancado

Metros = Cells(Linha, 2) Precos = Cells(Linha, 3) 'Se na Linha a coluna Tipos = vazia então o contador de linha vazia soma 1 If Trim(Tipos) = "" Then Vazia = Vazia + 1 Else 'Senão, limpa contador de linha vazia e faz a verificação Vazia = 0 QtdTipo = UBound(TipoCabo) 'Repete a condição para todas posições do vetor For I = 1 To UBound(TipoCabo) 'Se encontrar, então soma posição encontrada If TipoCabo(I) = Tipos Then Preco(I) = Preco(I) + Precos Metro(I) = Metro(I) + Metros 'O tipo de cabo já existe, abondonar a rotina Exit For End If Next 'Se chegar no final do vetor e não encontrar o tipo de cabo If I > QtdTipo Then 'Redimensiona o vetor ReDim Preserve TipoCabo(UBound(TipoCabo) + 1) ReDim Preserve Preco(UBound(Preco) + 1) ReDim Preserve Metro(UBound(Metro) + 1) 'Criação do novo Tipo TipoCabo(I) = Tipos Preco(I) = Precos Metro(I) = Metros End If End If'Soma contador de linhasLinha = Linha + 1Loop'Seleciona Planilha 2Sheets("PLAN2").Select'Monta nova planilha com a soma dos tipos de cabos existentesFor I = 1 To UBound(TipoCabo) Cells(I, 1) = TipoCabo(I) Cells(I, 2) = Metro(I) Cells(I, 3) = Preco(I)NextEnd Sub.

Curso de Microsoft Excel Avançado 41/48

Page 42: Apostila Excel Avancado

5. Exemplos de Scripts:

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.5End 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 IfEnd Sub

Curso de Microsoft Excel Avançado 42/48

Page 43: Apostila Excel Avancado

Sub EXEMPLO_3() 'EXEMPLO DE CONDIÇÃO CASE Dim T_EXP As Integer T_EXP = InputBox("DIGITE O TEMPO DE EXPERIÊNCIA: ") Select Case T_EXP Case 1, 2, 3, 4, 5 MsgBox ("CARGO DE JUNIOR!") Case 6 To 10 MsgBox ("CARGO DE PLENO!") Case Is > 10 MsgBox ("CARGO DE SENIOR!") Case Else MsgBox ("CARGO DE ESTAGIÁRIO!") End SelectEnd 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

Curso de Microsoft Excel Avançado 43/48

Page 44: Apostila Excel Avancado

Sub Exemplo_5() 'EXEMPLO DE LAÇO DE REPETIÇÃO WHILE 'CADASTRO DE DOAÇÃO DE ROUPAS Cells(1, 1) = "NOME" Cells(1, 2) = "QUANT_ROUPAS" Dim I As Integer, NOME As String, QUANT_ROUPAS As Integer 'PROCURA POSICAO VAZIA ANTES DO CADASTRO I = 1 Do While Cells(I, 1) <> "" I = I + 1 Loop 'CADASTRO NOME = InputBox("Digite seu nome: ") Do While NOME <> "" QUANT_ROUPAS = InputBox("Digite a quantidade de peças doadas: ") Cells(I, 1) = NOME Cells(I, 2) = QUANT_ROUPAS NOME = InputBox("Digite seu nome: ") If NOME = "" Then Exit Do End If I = I + 1 LoopEnd 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 IfEnd Sub

Curso de Microsoft Excel Avançado 44/48

Page 45: Apostila Excel Avancado

Sub EXEMPLO_7() 'PROCURA VALOR EM DUAS PLANILHAS E MARCA CAMPO REPETIDO For I = 1 To 100 VALOR = Sheets("PLAN1").Cells(I, 1) For J = 1 To 100 If Sheets("PLAN2").Cells(J, 1) = VALOR Then Sheets("PLAN2").Cells(J, 2) = "EXISTE" End If Next NextEnd Sub

Sub EXEMPLO_8() 'Chama outro procedimento Call EXEMPLO_7End Sub

Sub EXEMPLO_9(MSG1 As String, MSG2 As String) 'Procedimento para imprimir valores recebidos em string MsgBox (MSG1 & " " & MSG2)End Sub

Function EXEMPLO_10(MSG1 As String, MSG2 As String) As String 'Função retorna valor string EXEMPLO_10 = MSG1 & " " & MSG2End Function

Function RESULTADODASOMA(NUM1 As Integer, NUM2 As Integer, NUM3 As Integer) As Integer 'Função retorno valor inteiro RESULTADODASOMA = NUM1 + NUM2 + NUM3End Function

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

Curso de Microsoft Excel Avançado 45/48

Page 46: Apostila Excel Avancado

Comentários

Curso de Microsoft Excel Avançado 46/48

Page 47: Apostila Excel Avancado

Curso de Microsoft Excel Avançado 47/48

Page 48: Apostila Excel Avancado

Curso de Microsoft Excel Avançado 48/48