Professional Documents
Culture Documents
Prefacio
O Microsoft Excel sem sombra de dvidas o aplicativo de processamento de dados em planilha mais utilizado no mercado assim como o mais completo software para este fim encontrado atualmente. Os recursos disponibilizados pelo Excel permitem o desenvolvimento de simples planilhas de clculos at complexos sistemas de informaes. O objetivo deste livro direcionar a utilizao deste software a recursos avanados e muitas vezes poucos explorados do Excel. O contedo apresentado neste ttulo pode ser utilizado seqencialmente para fins de auto-estudo e reviso, ou como apoio s aulas de Excel Avanado ministradas na CST-Arcelor. O contedo est separado por captulos e tpicos com ilustraes e procedimentos passo-a-passo em vrias situaes.
Pgina 2 de 219
Notaes
Informao Informao complementar a respeito do recurso ou softwares relacionados. Definio resumida de terminado recurso.
Pgina 3 de 219
Sumrio
Prefacio................................................................................................................... 2 Notaes................................................................................................................. 3 Sumrio................................................................................................................... 4 Captulo 1 Utilizando a ajuda do Excel .......................................................... 10 1.1 Assistente ............................................................................................... 10 1.1.1 Desabilitando o assistente do Office................................................ 10 1.2 Solicitando a ajuda.................................................................................. 12 1.3 Acessando a ajuda do Excel................................................................... 13 1.3.1 Contedo ......................................................................................... 13 1.3.2 Assistente de resposta .................................................................... 13 1.3.3 ndice ............................................................................................... 14 Captulo 2 Manipulao de Frmulas............................................................ 15 2.1 Frmulas................................................................................................. 15 2.1.1 Operadores aritmticos ................................................................... 15 2.1.2 Ordem das operaes em frmulas................................................. 16 2.2 Referenciando outra clula em uma frmula .......................................... 17 2.2.1 Referenciando colunas e linhas....................................................... 17 2.2.2 Referncia a uma outra planilha dentro da mesma pasta de trabalho 19 2.2.3 Referncia a outro arquivo do Excel................................................ 20 2.3 Referncias relativas, absolutas e mistas............................................... 21 2.3.1 Referncia relativa........................................................................... 21 2.3.2 Referncia absoluta......................................................................... 21 2.3.3 Referncia mista.............................................................................. 22 2.4 Criando uma frmula .............................................................................. 22 2.4.1 Criando uma frumla simples .......................................................... 22 2.4.2 Criando frmula com referncia a outras clulas............................. 23 Funes do Excel XP............................................................................................ 27 2.5 Funes de busca e referncia............................................................... 27 2.5.1 PROCV............................................................................................ 27 2.5.2 PROCH............................................................................................ 29 2.5.3 COL ................................................................................................. 31 2.5.4 COLS............................................................................................... 32 2.5.5 CORRESP ....................................................................................... 32 2.5.6 DESLOC.......................................................................................... 34 2.5.7 ENDEREO .................................................................................... 35 2.5.8 ESCOLHER ..................................................................................... 36 2.5.9 HIPERLINK...................................................................................... 38 2.5.10 INDIRETO ....................................................................................... 39 2.5.11 NDICE ............................................................................................ 40 2.5.12 LIN ................................................................................................... 41 2.5.13 LINS................................................................................................. 42 2.6 Funes Financeiras............................................................................... 42 2.6.1 DPD ................................................................................................. 42 2.6.2 PGTO ............................................................................................ 43 2.6.3 IPGTO ............................................................................................. 44 2.6.4 VF .................................................................................................... 45
Pgina 4 de 219
2.6.5 VP.................................................................................................... 47 2.6.6 MTIR................................................................................................ 48 2.6.7 NOMINAL ........................................................................................ 49 2.6.8 NPER............................................................................................... 50 2.6.9 PGTO .............................................................................................. 51 2.6.10 PPGTO ............................................................................................ 52 2.6.11 TAXA ............................................................................................... 53 2.6.12 TIR................................................................................................... 54 2.6.13 VPL.................................................................................................. 56 2.7 Funes de Data e hora ......................................................................... 58 2.7.1 AGORA............................................................................................ 58 2.7.2 ANO................................................................................................. 58 2.7.3 DATA.VALOR .................................................................................. 60 2.7.4 DIA................................................................................................... 61 2.7.5 DIA.DA.SEMANA............................................................................. 62 2.7.6 DIA360............................................................................................. 63 2.7.7 HOJE ............................................................................................... 64 2.7.8 MS................................................................................................. 65 2.7.9 VALOR TEMPO............................................................................... 65 2.8 Funes Lgicas..................................................................................... 66 2.8.1 E ...................................................................................................... 66 2.8.2 FALSO............................................................................................. 67 2.8.3 NO................................................................................................. 67 2.8.4 OU ................................................................................................... 68 2.8.5 VERDADEIRO ................................................................................. 69 2.9 Funes Estatsticas............................................................................... 69 2.9.1 CONT.NM ..................................................................................... 69 2.9.2 CONT.SE......................................................................................... 70 2.9.3 CONT.VALORES............................................................................. 71 2.9.4 CONTAR.VAZIO.............................................................................. 72 2.9.5 CRESCIMENTO .............................................................................. 73 2.9.6 FREQNCIA ................................................................................. 75 2.9.7 MAIOR............................................................................................. 76 2.9.8 MXIMO .......................................................................................... 77 2.9.9 MXIMOA........................................................................................ 78 2.9.10 MED................................................................................................. 79 2.9.11 MDIA ............................................................................................. 80 2.9.12 MEDIAA........................................................................................... 81 2.9.13 MDIA.GEOMTRICA .................................................................... 82 2.9.14 MNIMO ........................................................................................... 84 2.9.15 QUARTIL ......................................................................................... 87 2.10 Funes de texto .................................................................................... 88 2.10.1 CONCATENAR................................................................................ 88 2.10.2 DEF.NM.DEC................................................................................ 89 2.10.3 DIREITA .......................................................................................... 90 2.10.4 ESQUERDA .................................................................................... 91 2.10.5 EXT.TEXTO..................................................................................... 92 2.10.6 LOCALIZAR..................................................................................... 93 Fundamentos bsicos de Macros e VBA .............................................................. 95
Pgina 5 de 219
2.11 Introduo............................................................................................... 95 2.12 O que so Macros? ............................................................................. 95 2.12.1 Como Exibir e alterar macros .......................................................... 96 2.12.2 Como Gerenciar suas macros Com o Editor do VBA ...................... 97 2.13 Programao no Excel - A linguagem VBA ............................................ 97 2.14 O que so Macros? ................................................................................. 98 2.14.1 Criando uma macro assistida .......................................................... 98 2.14.2 Executando a macro...................................................................... 100 2.15 Conhecendo do que feita uma Macro................................................. 101 2.15.1 Acessando os comandos VBA ...................................................... 102 2.16 Operaes com Macros ........................................................................ 104 2.16.1 Renomeando uma macro .............................................................. 104 2.16.2 Excluindo uma macro .................................................................... 105 2.16.3 Alterando a tecla de atalho e o comentrio associado com uma macro 106 2.17 Associando botes a macros................................................................ 106 2.17.1 Assiciando um boto a uma macro................................................ 109 Introduo a linguagem VBA............................................................................... 111 2.18 Por que aprender VBA?........................................................................ 112 2.19 Programao com o Microsoft Excel .................................................... 112 2.19.1 Vantagens em utilizarmos o VBA .................................................. 113 2.20 O Ambiente de Programao - Editor VBA.......................................... 114 2.20.1 Acessando o Editor VBA ............................................................... 114 2.21 VBA Declarao de Variveis............................................................ 116 2.21.1 Declarao de variveis e tipos de dados ................................ 117 2.21.2 Utilizao de variveis no declaradas.......................................... 118 2.22 VBA - Clculos, Operadores Aritmticos e Exemplos ........................... 120 2.22.1 Fazendo clculos com os Operadores aritmticos: ....................... 120 2.23 Estrutura If...Then e os Operadores de Comparao ........................... 121 2.23.1 If Then Else ................................................................................... 122 2.23.2 Operadores de comparao do VBA ............................................. 123 2.24 Escopo de Variveis e Variveis do tipo Array ..................................... 124 2.24.1 O Escopo das variveis, no VBA. .................................................. 124 2.24.2 Escopo de procedimento / funo / macro .................................... 124 2.24.3 A estrutura Select...Case............................................................... 127 2.25 Estruturas For...Next, Do...While e Do...Until........................................ 128 2.25.1 Estruturas de repetio.................................................................. 128 2.25.2 A estrutura For...Next. ................................................................... 128 2.25.3 A estrutura Do...Loop..................................................................... 129 2.25.4 A estrutura Do While Condio...Loop........................................... 129 2.25.5 A estrutura Do... Loop While Condio.......................................... 130 2.25.6 A estrutura Do Until Condio...Loop. ........................................... 132 2.25.7 A estrutura Do... Loop Until Condio. .......................................... 133 Funes do VBA Funes de Tipo Parte 1 ................................................... 134 2.26 Tipos de dados e funes para converso de tipos.............................. 135 2.26.1 Determinando o Tipo de Dados contido em uma varivel. ............ 135 2.26.2 A funo IsArray. ........................................................................... 135 2.26.3 A funo VarType. ......................................................................... 137 2.27 Funes do VBA Funes de Tipo Parte 2..................................... 139
Pgina 6 de 219
2.27.1 A funo IsDate. ............................................................................ 139 2.27.2 A funo IsEmpty........................................................................... 140 2.27.3 A funo IsNull............................................................................... 141 2.27.4 A funo IsNumeric. ...................................................................... 142 VBA Funes para converso de Tipos Parte 1 ............................................ 142 2.28 Por que converter tipos?....................................................................... 143 2.28.1 Funo Cbool ................................................................................ 143 2.28.2 Funo CByte................................................................................ 143 2.28.3 Funo CCur ................................................................................. 144 2.28.4 Funo CDate................................................................................ 145 2.28.5 Funo CDbl.................................................................................. 146 2.28.6 Funo CInt ................................................................................... 147 2.28.7 Funo CLng ................................................................................. 147 2.28.8 Funo CSng................................................................................. 147 2.28.9 Funo CStr .................................................................................. 148 2.28.10 Funo Int .................................................................................. 148 2.29 Funes para tratamento de Texto ....................................................... 149 2.29.1 Funo Asc.................................................................................... 149 2.29.2 Funo Chr.................................................................................... 149 2.29.3 Funo Len.................................................................................... 149 2.29.4 Funo LCase ............................................................................... 150 2.29.5 Funo UCase............................................................................... 150 2.29.6 Funo Left.................................................................................... 151 2.29.7 Funo Right ................................................................................. 151 2.29.8 Funo Mid.................................................................................... 152 2.29.9 Funo String ................................................................................ 152 2.30 Funes de Data/Hora e Matemticas .................................................. 153 2.30.1 Funo Date .................................................................................. 153 2.30.2 Funo Time.................................................................................. 153 2.30.3 Funo Day ................................................................................... 154 2.30.4 Funo Month................................................................................ 154 2.30.5 Funo Now .................................................................................. 155 2.30.6 Funo MonthName ...................................................................... 155 2.30.7 Funo Hour.................................................................................. 156 2.30.8 A funo DateDiff........................................................................... 156 2.30.9 A funo DateAdd.......................................................................... 159 2.30.10 Funo Year............................................................................... 160 2.30.11 Funo WeekDay....................................................................... 160 2.30.12 Funo WeekDayName ............................................................. 161 2.31 Funes para Clculos matemticos .................................................... 161 2.31.1 Funes para clculos matemticos.............................................. 162 2.31.2 Alguns exemplos de utilizao das funes matemticas. ............ 163 Estudo avanado da linguagem VBA.................................................................. 163 2.32 Novidades do Modelo de Objetos do Excel 2000 VBA: ........................ 163 2.32.1 ADO - Activex Data Objects .......................................................... 163 2.32.2 Arquivo de texto e consultas da Web ............................................ 164 2.32.3 Assinatura digital ........................................................................... 164 2.32.4 Edio em vrias lnguas............................................................... 164
Pgina 7 de 219
2.32.5 Fontes de dados OLAP para relatrios de tabela dinmica e grfico dinmico:...................................................................................................... 164 2.32.6 Microsoft Office E-mail................................................................... 164 2.32.7 Microsoft Office Web Components ................................................ 165 2.32.8 Relatrios de grfico dinmico....................................................... 165 2.32.9 Salvar para Web e para edio com Office Web ........................... 165 2.32.10 Script de pgina da Web............................................................ 165 2.32.11 Visual Basic For Applications 6.0 ............................................... 165 2.33 Bibliotecas, Objetos, Propriedades, Mtodos e Referncias ................. 166 2.33.1 A Estrutura For...Each ................................................................... 167 2.33.2 Criando suas prprias funes e procedimentos........................... 170 2.33.3 Criando e utilizando Sub-rotinas.................................................... 171 2.33.4 Criando e utilizando Funes ........................................................ 174 2.34 Trabalhando com o objeto Application.................................................. 177 2.34.1 O objeto Application....................................................................... 177 2.35 Trabalhando com o Objeto Workbook .................................................. 180 2.35.1 A coleo Workbooks .................................................................... 181 2.36 Trabalhando com o Objeto Worksheet ................................................. 184 2.36.1 Propriedade ActiveSheet ............................................................... 186 2.36.2 Propriedade Visible........................................................................ 186 2.36.3 Propriedade UsedRange ............................................................... 187 2.37 Trabalhando com o Objeto Range ........................................................ 187 2.37.1 O objeto Range.............................................................................. 187 2.37.2 Propriedade Range........................................................................ 188 2.37.3 Propriedade Offset......................................................................... 189 2.38 O Objeto Application Propriedades e Mtodos Parte I.................... 191 2.38.1 Propriedade ThisWorkBook........................................................... 191 2.38.2 Propriedade ActiveCell: ................................................................. 192 2.38.3 Propriedade ActiveSheet ............................................................... 192 2.38.4 Propriedade Calculation ................................................................ 193 2.38.5 Propriedade DefaultFilePath.......................................................... 194 2.38.6 Propriedade DefaultSaveFormat: .................................................. 194 2.38.7 Propriedade RecentFiles ............................................................... 195 2.38.8 Mtodo InputBox............................................................................ 195 2.38.9 Mtodo FindFile ............................................................................. 198 2.38.10 Mtodo GetOpenFilename ......................................................... 198 2.38.11 Mtodo SendKeys...................................................................... 199 2.39 O Objeto Workbook Propriedades e Mtodos Parte I ..................... 201 2.39.1 Ativar uma pasta de trabalho......................................................... 201 2.39.2 Abrir uma pasta de trabalho .......................................................... 202 2.39.3 Salvar documentos como pginas da Web ................................... 203 2.39.4 Personalizar a pgina da Web....................................................... 203 2.39.5 Abrir um documento HTML em Microsoft Excel............................. 205 2.39.6 Propriedade Count......................................................................... 207 2.39.7 Propriedade Item (coleo Workbooks)......................................... 208 2.39.8 Propriedade Parent........................................................................ 208 2.40 Loop atravs de um intervalo de clulas............................................... 216 2.40.1 Selecionar e ativar clulas................................................... 217 2.40.2 Selecionar clulas na planilha ativa............................................... 218
Pgina 8 de 219
Ativar uma clula dentro de uma seleo...................................... 218 Trabalhar com a clula ativa.......................................................... 218 Mover a clula ativa...................................................................... 219 Selecionar as clulas ao redor da clula ativa............................... 219
Pgina 9 de 219
Captulo 1 -
No Excel assim como na maioria dos softwares encontrados no mercado, temos uma farta documentao eletrnica que muitas vezes pouco explorada pelos usurios de computador. Esta documentao definida como Ajuda e pode ser acionada de vrias maneiras em qualquer momento de dvida.
1.1 Assistente
Para incentivar e facilitar o acesso a documentao eletrnica do pacote Office, a Microsoft criou um boot, um Assistente que lhe auxilia sempre que voc aciona a ajuda de um aplicativo Office. Entretanto, devemos observar que este estudo dirigido para usurios avanados, e o assistente do Office no se mostra eficiente quando se pretende fazer uso constante da documentao do software, portanto o interessante seria desativar o assistente para que o acesso a informao seja direta, sem intermediaes.
Pgina 10 de 219
Assistente do Office
Clique com o boto direito do mouse sobre o assistente. No menu suspenso que surgir selecione o comando Opes. A caixa de dilogo Assistente do Office ser aberta.
Opes de assistente Desmarque a opo Usar o Assistente do Office e clique no boto OK.
Pgina 11 de 219
Pgina 12 de 219
Dica Para acionar a ajuda do Excel atravs do teclado, basta pressionar a tecla F1.
1.3.1 Contedo
Na guia Contedo obtm-se de forma organizada toda a documentao eletrnica existente para o software. O contedo organizado em tpicos e sub-tpicos, facilitando o trabalho do usurio a encontrar a informao desejada.
Pgina 13 de 219
Assistente de resposta
1.3.3 ndice
Atravs da guia ndice temos a possibilidade de pesquisar recursos do software em uma lista de palavras-chaves. Basta iniciar a digitao no campo Digita a palavra-chave ou selecionar a palavra na lista Ou escolha a palavra-chave para que o resultado aparece na lista seguinte (Escolha um tpico).
Pgina 14 de 219
Captulo 2 -
Manipulao de Frmulas
A grande vantagem do Excel sua facilidade para criar e modificar frmulas com bastante facilidade. Neste captulo vamos aprender a criar formulas, referenciar outras clulas e planilhas alm de identificar os possveis erros exibidos em clculos.
2.1 Frmulas
Frmulas so equaes que executam clculos sobre valores na planilha. Uma frmula inicia com um sinal de igual (=). Por exemplo, a frmula a seguir multiplica 2 por 3 e depois adiciona 5 ao resultado. =5+2*3 Uma frmula tambm pode conter quaisquer dos seguintes itens: funes, referncias, operadores e constantes.
Operador
Significado
Adio (3+3).
Multiplicao (3*3).
Diviso (3/3).
Porcentagem (20%).
Operador
Significado
Negao ( -1).
Porcentagem
Exponenciao (3^2).
*e/
Multiplicao e diviso.
+e
Adio e subtrao.
&
Uso de parmetros Para alterar a ordem da avaliao, coloque entre parnteses a parte da frmula a ser calculada primeiro. Por exemplo, a frmula a seguir retorna 11 porque o Excel calcula a multiplicao antes da adio. A frmula multiplica 2 por 3 e, em seguida, soma 5 ao resultado. =5+2*3 Por outro lado, se voc usar parnteses para alterar a sintaxe, o Excel somar 5 e 2 e, em seguida, multiplicar o resultado por 3 para produzir 21. =(5+2)*3 No exemplo abaixo, os parnteses na primeira parte da frmula foram o Excel a calcular B4+25 primeiro e, em seguida, dividir o resultado pela soma dos valores nas clulas D5, E5 e F5. =(B4+25)/SOMA(D5:F5)
Para referenciar
Utilize
A10
Pgina 18 de 219
A10:A20
B15:E15
5:5
5:10
H:H
H:J
O intervalo de clulas nas colunas A a E e linhas 10 a 20. Tabela 2.1 Referncia de clulas.
A10:E20
Dica Durante a edio de uma frmula voc pode utilizar o mouse e selecionar o intervalo de clulas. Automaticamente intervalo selecionado ser transcrito para sua frmula.
Pgina 19 de 219
Intervalo de clulas
Observe que o nome da planilha e um ponto de exclamao (!) precedem a referncia de intervalo. O ponto de exclamao obrigatrio aps o nome da planilha.
Dica Durante a edio de uma frmula voc pode utilizar o mouse e selecionar o intervalo de clulas na outra planilha de sua pasta de trabalho. Automaticamente intervalo selecionado ser transcrito para sua frmula.
=MDIA('C:\arquivos\[contas.xls]Plan2'!B1:B10)
Intervalo de clulas
Pgina 20 de 219
Observe que os nomes do arquivo e da planilha esto entre aspas simples e tem ao final de seus nomes o ponto de exclamao (!). O ponto de exclamao obrigatrio aps o nome da planilha.
Dica
Para fazer referncia utilizando o mouse, abre o outro arquivo e durante a edio da frmula alterne para a outra pasta de trabalho e faa a seleo do intervalo com o mouse. Automaticamente a referncia a outro arquivo e planilha ser transcrita para sua frmula.
referncias relativas
ajustar. Por padro, novas frmulas usam referncias relativas e voc precisa troc-las para referncias absolutas. Por exemplo, se voc copiar uma referncia absoluta na clula B2 para a clula B3, ela permanecer a mesma em ambas as clulas =$A$1.
refrncia absolua
referncia mista
Cula selecionada Digite = (um sinal de igual). Insira a frmula e Pressione ENTER. Verifiq eu que a barra de frmula conter o valor que est sendo digitado na clula.
frumla sendo criada O resultado ser o quadarado de 5, porm da barra de fruma ser exibido a fruma que gerou o resultado.
Resultado da fruma
Pgina 23 de 219
Exemplo proposto Vamos criar esta frmula utilizando a referncia relativa. Clique na clula C4 e digite o sinal de igual ( = ). O excel estar neste momento criando a frmula.
Referenciando C2 Insira o operador de multiplicao ( * ) e digite a referncia clula C3, ou clique sobre a mesma.
Refernciando C3 Pressione Enter. O clculo ser exibido na clula e a fruma na barra de frmula.
Resultado da fruma
Em frmulas do Excel, existe a possibilidade de utlizao de funes do Excel ou funes criadas pelo prprio usurio. Funes so clculos internos que retornam um resultado, normalmente necessitam de parmetros de entrada. O estudo de funes ser mais detalhado nos prximos captulos. Vamos supor que tenhamos uma planilha para controle de notas de alunos, onde teremos trs notas e a mdia aritimtica destas notas. Para calcular a mdia dos resultados poderemos, por exemplo, utilizar a funo Mdia do Excel, utilizada para clculo de mdias. A funo Mdia exige como parmetro o intervalo de clulas e retorna a mdia aritimtica como resultado.
Planilha de demonstrao Vamos calcular a mdia de resultados na coluna F, primeiramente calcularemos a linha 3. Clique na clula F3 e pressione a tecla igual ( = ). Neste momento estaremos editando a frmula da clula. Insira a funo MDIA e fornea como parmetro o intervalo C3:E3, ou seja, =MDIA(C3:E3) .
Criando a frmula O resultado ser a mdia aritimtica da clula, na barra de frmulas ser exibido a frmula que gerou o clculo.
Pgina 25 de 219
Resultado da frmula
Pgina 26 de 219
Funes do Excel XP
Vamos verificar a sintaxe e exemplos das funes mais comuns do Excel XP
2.5.1 PROCV
Localiza um valor na primeira coluna esquerda de uma tabela e retorna um valor na mesma linha de uma coluna especificada na tabela. Use PROCV em vez de PROCH quando os valores da comparao estiverem posicionados em uma coluna esquerda ou direita dos dados que voc deseja procurar. O V em PROCV significa "Vertical". Sintaxe PROCV(valor_procurado;matriz_tabela;nm_ndice_coluna;procurar_interva lo) Valor_procurado o valor a ser localizado na primeira coluna da Matriz. Valor_procurado pode ser um valor, uma referncia ou uma seqncia de caracteres de texto. Matriz_tabela a tabela de informaes em que os dados so procurados. Use uma referncia para um intervalo ou nome de intervalo, tal como Banco de dados ou Lista. Observao Se procurar_intervalo for VERDADEIRO, os valores na primeira coluna de matriz_tabela devero ser colocados em ordem ascendente: ..., -2, -1, 0, 1, 2, ... , A-Z, FALSO, VERDADEIRO; caso contrrio, PROCV pode no retornar o valor correto. Se procurar_intervalo for FALSO, matriz_tabela no precisar ser ordenada.
Os valores na primeira coluna de matriz_tabela podem ser texto, nmeros ou valores lgicos. Textos em maisculas e minsculas so equivalentes.
Pgina 27 de 219
Nm_ndice_coluna o nmero da coluna em matriz_tabela a partir do qual o valor correspondente deve ser retornado. Um nm_ndice_coluna de 1 retornar o valor na primeira coluna em matriz_tabela; um nm_ndice_coluna de 2 retornar o valor na segunda coluna em matriz_tabela, e assim por diante. Se nm_ndice_coluna for menor do que 1, PROCV retornar o valor de erro #VALOR!; se nm_ndice_coluna for maior do que o nmero de colunas em matriz_tabela, PROCV retornar o valor de erro #REF!. Procurar_intervalo um valor lgico que especifica se voc quer que PROCV encontre a correspondncia exata ou uma correspondncia aproximada. Se VERDADEIRO ou omitida, uma correspondncia aproximada retornada; em outras palavras, se uma correspondncia exata no for encontrada, o valor maior mais prximo que menor que o valor_procurado retornado. Se FALSO, PROCV encontrar uma correspondncia exata. Se nenhuma correspondncia for encontrada, o valor de erro #N/D retornado. Observaes Se PROCV no localizar valor_procurado e procurar_intervalo for VERDADEIRO, ela usar o maior valor que for menor do que ou igual a valor_procurado. Se valor_procurado for menor do que o menor valor na primeira coluna de matriz_tabela, PROCV fornecer o valor de erro #N/D. Se PROCV no localizar valor_procurado e procurar_intervalo for FALSO, PROCV fornecer o valor #N/D.
Utilizando a funo PROCV No exemplo abaixo utiliza-se a funo para localizar o telefone de acordo com o cdigo digitado na clula C12.
Resultado da frumula
2.5.2 PROCH
Localiza um valor especfico na linha superior de uma tabela ou matriz de valores e retorna um valor na mesma coluna de uma linha especificada na tabela ou matriz. Use PROCH quando seus valores de comparao estiverem localizados em uma linha ao longo da parte superior de uma tabela de dados e voc quiser observar um nmero especfico de linhas mais abaixo. Use PROCV quando os valores de comparao estiverem em uma coluna esquerda dos dados que voc deseja localizar. O H de PROCH significa "Horizontal." Sintaxe PROCH(valor_procurado;matriz_tabela;nm_ndice_lin;procurar_intervalo) Valor_procurado o valor a ser localizado na primeira linha da tabela. Valor_procurado pode ser um valor, uma referncia ou uma seqncia de caracteres de texto. Matriz_tabela uma tabela de informaes onde os dados devem ser procurados. Use uma referncia para um intervalo ou um nome de intervalo. Os valores na primeira linha de matriz_tabela podem ser texto, nmeros ou valores lgicos. Observaes Se procurar_intervalo for VERDADEIRO, os valores na primeira linha de matriz_tabela devero ser colocados em ordem ascendente: ...-2, -1, 0, 1, 2,... , A-Z, FALSO, VERDADEIRO, caso contrrio, PROCH pode no retornar o valor correto. Se procurar_intervalo for FALSO, matriz_tabela no precisar ser ordenada.
Pgina 29 de 219
Textos em maisculas e minsculas so equivalentes. Voc pode colocar valores em ordem ascendente, da esquerda para a direita, selecionando os valores, escolhendo o comando Classificar no menu Dados. Clique em Opes, clique em Classificar da esquerda para a direita e, em seguida, em OK. Em Classificar por, clique na linha da lista e depois em Crescente. Nm_ndice_lin o nmero da linha em matriz_tabela de onde o valor correspondente deve ser retirado. Um nm_ndice_lin equivalente a 1 retorna o valor da primeira linha na matriz_tabela, um nm_ndice_lin equivalente a 2 retorna o valor da segunda linha na matriz_tabela, e assim por diante. Se nm_ndice_lin for menor do que 1, PROCH retornar o valor de erro #VALOR!; se nm_ndice_lin for maior do que o nmero de linhas na matriz_tabela, PROCH retornar o valor de erro #REF!. Procurar_intervalo um valor lgico que especifica se voc quer que PROCH localize uma correspondncia exata ou aproximada. Se VERDADEIRO ou omitido, uma correspondncia aproximada retornada. Em outras palavras, se uma correspondncia exata no for localizada, o valor maior mais prximo que seja menor que o valor_procurado retornado. Se FALSO, PROCH encontrar uma correspondncia exata. Se nenhuma correspondncia for localizada, o valor de erro #N/D ser retornado. Observaes Se PROCH no localizar valor_procurado, e procurar_intervalo for VERDADEIRO, ela usar o maior valor que menor do que o valor_procurado. Se o valor_procurado for menor do que o menor valor na primeira linha de matriz_tabela, PROCH retornar o valor de erro #N/D.
Utilizando a funo PROCH No exemplo abaixo utilizamos a funo PROCH para localizar na coluna Nome e retornar o valor contido na segunda linha (posio 2).
Pgina 30 de 219
Valor retornado
2.5.3 COL
Retorna o nmero de coluna da referncia especificada. Sintaxe COL(ref) Ref a clula ou intervalo de clulas cujo nmero da coluna voc deseja obter. Se ref for omitido, presume-se que seja a referncia da clula onde a funo COL aparece. Ref no pode se referir a reas mltiplas. Exemplo
Pgina 31 de 219
Funo COL
2.5.4 COLS
Retorna o nmero de colunas em uma matriz ou referncia. Sintaxe COLS(matriz) Matriz uma matriz, uma frmula de matriz ou uma referncia a um intervalo de clulas cujo nmero de colunas voc deseja obter. Exemplo
Funo COLS
2.5.5 CORRESP
Retorna a posio relativa de um item em uma matriz que coincide com um valor especificado em uma ordem especfica. Use CORRESP em vez de uma das funes PROC quando voc precisar da posio de um item em um intervalo ao invs do item propriamente dito. Sintaxe CORRESP(valor_procurado;matriz_procurada;tipo_correspondncia) Valor_procurado tabela. o valor utilizado para localizar o valor desejado em uma
Valor_procurado o valor que voc deseja coincidir com matriz_procurada. Por exemplo, quando voc procura o nmero do telefone de algum em
Pgina 32 de 219
uma lista telefnica, voc est usando o nome da pessoa como o valor da procura, mas o nmero do telefone o valor que voc deseja. Valor_procurado pode ser um valor (nmero, texto ou valor lgico) ou uma referncia de clula de um nmero, texto ou valor lgico.
Matriz_procurada um intervalo contguo de clulas que contm valores possveis de procura. Matriz_procurada precisa ser uma matriz ou uma referncia de matriz. Tipo_correspondncia o nmero -1, 0 ou 1. Tipo_correspondncia especifica como o Microsoft Excel corresponde a valor_procurado com os valores contidos em matriz_procurada. Se tipo_correspondncia for 1, CORRESP localizar o maior valor que for menor do que ou igual a valor_procurado. Matriz_procurada deve ser posicionada em ordem ascendente: ...-2, -1, 0, 1, 2,...A-Z, FALSO, VERDADEIRO. Se tipo_correspondncia for 0, CORRESP localizar o primeiro valor que for exatamente igual a valor_procurado. Matriz_procurada pode ser colocada em qualquer ordem. Se tipo_correspondncia for -1, CORRESP localizar o menor valor que seja maior ou igual a valor_procurado. Matriz_procurada deve ser posicionada em ordem decrescente: VERDADEIRO, FALSO, Z-A,...2, 1, 0, -1, -2,... e assim por diante. Se tipo_correspondncia for omitido, ser equivalente a 1.
Comentrios CORRESP retorna a posio do valor coincidente em matriz_procurada, e no o valor propriamente dito. Por exemplo: CORRESP("b";{"a"."b"."c"};0) retorna 2, a posio relativa de "b" na matriz {"a"."b"."c"}. CORRESP no faz distino entre letras maisculas e minsculas quando estiver fazendo a correspondncia entre valores de texto. Se CORRESP no conseguir localizar um valor coincidente, ele fornecer o valor de erro #N/D. Se tipo_correspondncia for 0 e valor_procurado for um texto, valor_procurado poder conter os caracteres curinga asterisco (*) e ponto de interrogao (?). Um asterisco corresponde a qualquer seqncia de caracteres; um ponto de interrogao corresponde a qualquer caractere individual. Exemplo
Pgina 33 de 219
No exemplo abaixo se utiliza um valor de procura na clula C9 e retorna-se a posio correspondente a este valor.
CORRESP
2.5.6 DESLOC
Retorna uma referncia para um intervalo, que um nmero especificado de linhas e colunas de uma clula ou intervalo de clulas. A referncia retornada pode ser uma nica clula ou um intervalo de clulas. Voc pode especificar o nmero de linhas e de colunas a serem retornadas. Sintaxe DESLOC(ref;lins;cols;altura;largura) Ref a referncia em que se deseja basear o deslocamento. Ref deve se referir a uma clula ou intervalo de clulas adjacentes; caso contrrio, DESLOC retornar o valor de erro #VALOR!. Lins o nmero de linhas, acima ou abaixo, a que se deseja que a clula superior esquerda se refira. Usar 5 como o argumento de linhas, especifica que a clula superior esquerda na referncia est cinco linhas abaixo da referncia. Lins pode ser positivo (que significa abaixo da referncia inicial) ou negativo (acima da referncia inicial).
Pgina 34 de 219
Cols o nmero de colunas, esquerda ou direita, a que se deseja que a clula superior esquerda do resultado se refira. Usar 5 como o argumento de colunas, especifica que a clula superior esquerda na referncia est cinco colunas direita da referncia. Cols pode ser positivo (que significa direita da referncia inicial) ou negativo ( esquerda da referncia inicial). Altura a altura, em nmero de linhas, que se deseja para a referncia fornecida. Altura deve ser um nmero positivo. Largura a largura, em nmero de colunas, que se deseja para a referncia fornecida. Largura deve ser um nmero positivo. Comentrios Se lins e cols deslocarem a referncia sobre a borda da planilha, DESLOC retornar o valor de erro #REF!. Se altura ou largura forem omitidos, sero equivalentes a altura ou largura de ref. Na verdade, DESLOC no desloca quaisquer clulas nem modifica a seleo; apenas fornece uma referncia. DESLOC pode ser usada com qualquer funo que pressuponha um argumento de referncia. Por exemplo, a frmula SOMA(DESLOC(C2;1;2;3;1)) calcula o valor total de um intervalo formado por 3 linhas e 1 coluna que est 1 linha abaixo e 2 colunas direita da clula C2.
Exemplo
- Funo Desloc
2.5.7 ENDEREO
Cria um endereo de clula como texto, dados nmeros especficos de linhas e colunas. Sintaxe ENDEREO(nm_linha;nm_col;nm_abs;a1;texto_planilha)
Pgina 35 de 219
Nm_linha o nmero da linha a ser utilizado na referncia da clula. Nm_col o nmero da coluna a ser utilizado na referncia da clula. Nm_abs especifica o tipo de referncia a ser retornado.
Nm_abs 1 ou omitido 2 3 4
Descrio Absoluta. Linha absoluta, coluna relativa. Couna absoluta, linha relativa. Relativa
A1 um valor lgico que especifica o estilo de referncia A1 ou L1C1. Se A1 for VERDADEIRO ou omitido, ENDEREO retornar uma referncia em estilo A1, se for FALSO, ENDEREO retornar uma referncia em estilo L1C1. Texto_planilha o texto que especifica o nome da planilha a ser usada como referncia externa. Se texto_planilha for omitido, o nome da planilha no ser utilizado. Exemplo
funo Endereo
2.5.8 ESCOLHER
Use ESCOLHER para selecionar um valor entre 29 valores que se baseie no nmero de ndice. Por exemplo, se do valor1 at o valor7 forem os nmeros da semana, ESCOLHER retorna um dos dias quando um nmero entre 1 e 7 for usado como nm_ndice. Sintaxe ESCOLHER(nm_ndice;valor1;valor2,...)
Pgina 36 de 219
Nm_ndice especifica o argumento de valor selecionado. Nm_ndice deve ser um nmero entre 1 e 29, ou uma frmula ou referncia a uma clula que contenha um nmero entre 1 e 29. Se nm_ndice for 1, ESCOLHER retornar valor1; se for 2, ESCOLHER retornar valor2; e assim por diante. Se nm_ndice for menor do que 1 ou maior do que o nmero do ltimo valor na lista, ESCOLHER retornar o valor de erro #VALOR!. Se nm_ndice for uma frao, ser truncada para o menor inteiro antes de ser usada.
Valor1,valor2,... so 1 a 29 argumentos de valor a partir dos quais ESCOLHER seleciona um valor ou uma ao a ser realizada com base no nm_ndice. Os argumentos podem ser nmeros, referncias de clula, nomes definidos, frmulas, funes ou texto. Comentrios Se nm_ndice for uma matriz, cada valor ser avaliado quando ESCOLHER for avaliada. Os argumentos de valor para ESCOLHER podem ser referncias de intervalo bem como valores nicos. Por exemplo, a frmula: =SOMA(ESCOLHER(2;A1:A10;B1:B10;C1:C10)) avalia para: =SOMA(B1:B10) que depois retorna um valor baseado nos valores do intervalo B1:B10. A funo ESCOLHER a primeira a ser avaliada, retornando a referncia B1:B10. A funo SOMA avaliada posteriormente usando B1:B10, o resultado da funo ESCOLHER, como seu argumento. Exemplo
Pgina 37 de 219
Funo ESCOLHER
2.5.9 HIPERLINK
Cria um atalho ou salto que abre um documento armazenado em um servidor de rede, uma intranet ou na Internet. Quando voc clica na clula que contm a funo HYPERLINK, o Microsoft Excel abre o arquivo armazenado em local_vnculo. Sintaxe HYPERLINK(local_vnculo,nome_amigvel) Local_vnculo o caminho e nome de arquivo para o documento que ser aberto como texto. Local_vnculo pode se referir a uma posio em um documento como uma clula especfica ou um intervalo nomeado em uma planilha ou pasta de trabalho do Excel, ou a um marcador em um documento do Microsoft Word. O caminho pode ser para um arquivo armazenado em uma unidade de disco rgido, um caminho da conveno universal de nomenclatura (UNC) em um servidor (no Microsoft Excel para Windows) ou um caminho do localizador de recursos uniforme URL na Internet ou em uma intranet. Local_vnculo pode ser uma seqncia de caracteres de texto entre aspas ou uma clula que contm o vnculo como uma seqncia de caracteres de texto. Se o salto especificado em local_vnculo no existir ou no puder ser navegado, aparecer um erro quando voc clicar na clula.
Nome_amigvel o texto de salto ou valor numrico exibido na clula. Nome_amigvel exibido em azul e com sublinhado. Se nome_amigvel for omitido, a clula exibir o local_vnculo como um texto de salto. Nome_amigvel pode ser um valor, uma seqncia de caracteres de texto, um nome ou uma clula que contm o texto de salto ou valor.
Pgina 38 de 219
Se nome_amigvel retornar um valor de erro (por exemplo, #VALOR!), a clula exibir o erro em vez do texto de salto.
Comentrios Para selecionar uma clula onde existe um hiperlink sem ir para o destino do hiperlink, clique na clula e mantenha o boto do mouse pressionado at o cursor se transformar em uma cruz, depois libere o boto do mouse. Exemplos Direciona o usurio para a URL do buscador Cad. =HYPERLINK(http://www.cade.com.br;CAD) Cria um hiperlink com a rea denominada Totais de outra pasta de trabalho (externa), Minhapasta.xls: =HYPERLINK("[C:\Meus documentos\MinhaPasta.xls]Totais")
2.5.10
INDIRETO
Retorna a referncia especificada por uma seqncia de caracteres de texto. As referncias so imediatamente avaliadas para exibir seu contedo. Use INDIRETO quando quiser mudar a referncia a uma clula em uma frmula sem mudar a prpria frmula. Sintaxe INDIRETO(texto_ref;a1) Texto_ref uma referncia a uma A1, uma referncia em estilo L1C1, uma referncia a uma clula como texto_ref no for uma referncia de erro #REF!. clula que contm uma referncia em estilo um nome definido como uma referncia ou uma seqncia de caracteres de texto. Se clula vlida, INDIRETO retorna o valor de
Se texto_ref referir-se a outra pasta de trabalho (uma referncia externa), ela deve ser aberta. Se a pasta de trabalho original no estiver aberta, INDIRETO retornar o valor de erro #REF!
A1 um valor lgico que especifica o tipo de referncia contido na clula texto_ref. Se a1 for VERDADEIRO ou omitido, texto_ref ser interpretado como uma referncia em estilo A1.
Pgina 39 de 219
Se a1 for FALSO, texto_ref ser interpretado como uma referncia em estilo L1C1.
Exemplo
- Funo INDIRETO
2.5.11
NDICE
A funo NDICE apresenta duas formas de sintaxe: matriz e referncia. A forma de matriz sempre retorna um valor ou uma matriz de valores; a forma de referncia sempre retorna uma referncia. Use a forma de matriz se o primeiro argumento de NDICE for uma constante de matriz. Sintaxe da forma matricial NDICE(matriz,nm_linha,nm_coluna) Matriz um intervalo de clulas ou uma constante de matriz. Se a matriz contiver apenas uma linha ou coluna, o argumento nm_linha ou nm_coluna correspondente opcional. Se a matriz tiver mais de uma linha e mais de uma coluna e apenas nm_linha ou nm_coluna for usado, NDICE retornar uma matriz referente linha ou coluna inteira da matriz.
Nm_linha seleciona a linha na matriz a partir da qual um valor dever ser retornado. Se nm_linha for omitido, nm_coluna obrigatrio. Nm_coluna seleciona a coluna na matriz a partir da qual um valor dever ser retornado. Se nm_coluna for omitido, nm_linha obrigatrio.
Pgina 40 de 219
Comentrios Se os argumentos nm_linha e nm_coluna forem usados, NDICE retornar o valor contido na clula que estiver no ponto de interseo entre nm_linha e nm_coluna. Se voc definir nm_linha ou nm_coluna como 0 (zero), NDICE retornar a matriz de valores referente coluna ou linha inteira, respectivamente. Para usar valores retornados como uma matriz, insira a funo NDICE como uma frmula de matriz em um intervalo horizontal de clulas para uma linha e em um intervalo vertical de clulas para uma coluna. Para inserir uma frmula de matriz, pressione CTRL+SHIFT+ENTER.
Nm_linha e nm_coluna devem fazer referncia a uma clula dentro de uma matriz, caso contrrio, NDICE retornar o valor de erro #REF!.
Exemplo
Funo ndice
2.5.12
LIN
Retorna o nmero da linha de uma referncia. Sintaxe LIN(ref) Ref a clula ou intervalo de clulas cujo nmero da linha voc deseja obter. Se ref for omitido, ser equivalente referncia da clula na qual a funo LIN aparecer. Se ref for um intervalo de clulas e LIN for inserida como uma matriz vertical, LIN retornar os nmeros de linha de referncia como uma matriz vertical.
Pgina 41 de 219
Exemplo
Funo LIN
2.5.13
LINS
Retorna o nmero de linhas em uma referncia ou matriz. Sintaxe LINS(matriz) Matriz uma matriz, uma frmula de matriz ou uma referncia a um intervalo de clulas cujo nmero de linhas voc deseja obter. Exemplo
Funo LINS
2.6.1 DPD
Retorna a depreciao em linha reta de um ativo durante um perodo. Sintaxe DPD(custo;recuperao;vida_til)
Pgina 42 de 219
Custo o custo inicial do ativo. Recuperao o valor no final da depreciao (s vezes chamado de valor residual do ativo). Vida_til o nmero de perodos durante os quais o ativo depreciado (s vezes chamado vida til do ativo). Exemplo
Funo DPD
2.6.2 PGTO
Calcula os juros pagos durante um perodo especfico de um investimento. Essa funo fornecida para que haja compatibilidade com o Lotus 1-2-3. Sintaxe PGTO(taxa;perodo;nper;vp) Taxa a taxa de juros do investimento. Perodo o perodo para o qual voc deseja encontrar os juros e deve estar entre 1 e nper. Nper o nmero total de perodos de pagamento do investimento. Vp o valor presente do investimento. Para um emprstimo, vp a quantia do emprstimo. Comentrios Certifique-se de que est consistente sobre as unidades usadas para especificar a taxa e nper. Se voc fizer pagamentos mensais para um emprstimo de quatro anos com uma taxa de juros de 12%, use 12%/12 para taxa e 4*12 para nper. Se fizer pagamentos anuais no mesmo emprstimo, use 12% para taxa e 4 para nper.
Pgina 43 de 219
Para todos os argumentos, o saldo em dinheiro pago, como depsitos em poupanas ou saques, representado por nmeros negativos; o saldo em dinheiro recebido, como cheques de dividendos e outros depsitos, representado por nmeros positivos. Para obter informaes adicionais sobre funes financeiras, consulte a funo VP.
Exemplo
Funo PGTO
2.6.3 IPGTO
Retorna o pagamento de juros para um determinado perodo de investimento de acordo com pagamentos peridicos e constantes e com uma taxa de juros constante. Para obter uma descrio completa dos argumentos em IPGTO e para obter mais informaes sobre funes de anuidade, consulte VP. Sintaxe IPGTO(taxa;perodo;nper;vp;vf;tipo) Taxa a taxa de juros por perodo. Perodo o perodo cujos juros se deseja saber e deve estar no intervalo entre 1 e nper. Nper o nmero total de perodos de pagamento em uma anuidade. Vp o valor presente ou atual de uma srie de pagamentos futuros.
Pgina 44 de 219
Vf o valor futuro, ou o saldo, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de um emprstimo, por exemplo, 0). Tipo o nmero 0 ou 1 e indica as datas de vencimento dos pagamentos. Se tipo for omitido, ser considerado 0, onde 0 o fim do perodo e 1 o incio do perodo. Comentrios Certifique-se de que esteja sendo consistente quanto s unidades usadas para especificar taxa e nper. Se fizer pagamentos mensais de um emprstimo de quatro anos com taxa de juros de 12% ao ano, use 12%/12 para taxa e 4*12 para nper. Se voc fizer pagamentos anuais para o mesmo emprstimo, use 12% para taxa e 4 para nper. Todos os argumentos, saques, tais como depsitos em poupana, sero representados por nmeros negativos; depsitos recebidos, tais como cheques de dividendos, sero representados por nmeros positivos.
Exemplo
Funo IPGTO
2.6.4 VF
Retorna o valor futuro de um investimento de acordo com os pagamentos peridicos e constantes e com uma taxa de juros constante. Sintaxe
Pgina 45 de 219
VF(taxa;nper;pgto;vp;tipo) Para obter uma descrio completa dos argumentos em VF e para obter mais informaes sobre as funes de anuidade, consulte VP. Taxa a taxa de juros por perodo. Nper o nmero total de perodos de pagamento em uma anuidade. Pgto o pagamento feito a cada perodo; no pode mudar durante a vigncia da anuidade. Geralmente, pgto contm o capital e os juros e nenhuma outra tarifa ou taxas. Se pgto for omitido, voc dever incluir o argumento vp. Vp o valor presente ou a soma total correspondente ao valor presente de uma srie de pagamentos futuros. Se vp for omitido, ser considerado 0 (zero) e a incluso do argumento pgto ser obrigatria. Tipo o nmero 0 ou 1 e indica as datas de vencimento dos pagamentos. Se tipo for omitido, ser considerado 0, Onde 0 o valor futuro e 1 o valor presente. Comentrios Certifique-se de que esteja sendo consistente quanto s unidades usadas para especificar taxa e nper. Se fizer pagamentos mensais de um emprstimo de quatro anos com taxa de juros de 12% ao ano, use 12%/12 para taxa e 4*12 para nper. Se voc fizer pagamentos anuais para o mesmo emprstimo, use 12% para taxa e 4 para nper. Todos os argumentos, saques, tais como depsitos em poupana, sero representados por nmeros negativos; depsitos recebidos, tais como cheques de dividendos, sero representados por nmeros positivos.
Exemplo
Funo VF
Pgina 46 de 219
2.6.5 VP
Retorna o valor presente de um investimento. O valor presente o valor total correspondente ao valor atual de uma srie de pagamentos futuros. Por exemplo, quando voc pede dinheiro emprestado, o valor do emprstimo o valor presente para quem empresta. Sintaxe VP(taxa;nper;pgto;vf;tipo) Taxa a taxa de juros por perodo. Por exemplo, se voc obtiver um emprstimo para um carro com uma taxa de juros de 10% ao ano e fizer pagamentos mensais, a sua taxa de juros mensal ser 10%/12, ou 0,83%. Voc deve inserir 10%/12, ou 0,83%, ou 0,0083, na frmula como taxa. Nper o nmero total de perodos de pagamento de uma anuidade. Por exemplo, se voc obtiver um emprstimo de quatro anos e fizer pagamentos mensais, o emprstimo ter 4*12 (ou 48) perodos. Voc deve inserir 48 na frmula para nper. Pgto o pagamento feito a cada perodo e no pode mudar durante a vigncia da anuidade. Geralmente, pgto inclui o principal e os juros, e no h outras tarifas ou taxas. Por exemplo, os pagamentos mensais por um emprstimo para o carro de R$ 10.000 de quatro anos a 12% so R$ 263,33. Voc deve inserir -263,33 na frmula como pgto. Se pgto for omitido, voc dever incluir o argumento vf. Vf o valor futuro, ou um saldo de caixa, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de determinado emprstimo, por exemplo, 0). Por exemplo, se quiser economizar R$ 50.000 para pagar um projeto especial em 18 anos, ento R$ 50.000 o valor futuro. Voc pode ento calcular a taxa de juros e determinar quanto dever economizar a cada ms. Se vf for omitido, voc dever incluir o argumento pgto. Tipo o nmero 0 ou 1 e indica as datas de vencimento. Onde 0 o valor futuro e 1 o valor presente. Exemplo
Pgina 47 de 219
Funo VP
2.6.6 MTIR
Retorna a taxa interna de retorno modificada para uma srie de fluxos de caixa peridicos. MTIR considera o custo do investimento e os juros recebidos no reinvestimento do capital. Sintaxe MTIR(valores;taxa_financ;taxa_reinvest) Valores uma matriz ou referncia a clulas que contm nmeros. Estes nmeros representam uma srie de pagamentos (valores negativos) e receitas (valores positivos) que ocorrem em perodos regulares. Valores deve conter pelo menos um valor positivo e um negativo para calcular a taxa interna de retorno modificada. Caso contrrio, MTIR retornar o valor de erro #DIV/0!. Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas vazias, estes valores sero ignorados; no entanto, clulas com valor zero sero includas.
Taxa_financ a taxa de juros paga sobre o dinheiro usado nos fluxos de caixa. Taxa_reinvest a taxa de juros recebida nos fluxos de caixa ao reinvesti-los. Comentrios MTIR utiliza a ordem de valores para interpretar a ordem de fluxos de caixa. Certifique-se de inserir os valores de pagamento e renda na seqncia desejada e com os sinais corretos (valores positivos para quantias recebidas, valores negativos para quantias pagas). Se n for o nmero de fluxos de caixa, taxa f para taxa_financ e taxa r para taxa_reinvest, ento a frmula para MTIR ser:
Pgina 48 de 219
Exemplo
Funo MITR
2.6.7 NOMINAL
Retorna a taxa de juros anual nominal, dados a taxa efetiva e o nmero de perodos compostos por ano. Se esta funo no estiver disponvel e retornar o erro #NOME?, instale e carregue o suplemento Ferramentas de anlise. Sintaxe NOMINAL(taxa_efet,npera) Taxa_efet a taxa de juros efetiva. Npera o nmero de perodos compostos por ano. Comentrios
Pgina 49 de 219
Npera truncado para que aparea como um nmero inteiro. Se qualquer um dos argumentos no for numrico, NOMINAL retornar o valor de erro #VALOR!. Se taxa_efet 0 ou se npera < 1, NOMINAL retornar o valor de erro #NM!. NOMINAL est relacionada a EFFECT conforme indicado na seguinte equao:
Exemplo
Funo NOMINAL
2.6.8 NPER
Retorna o nmero de perodos para investimento de acordo com pagamentos constantes e peridicos e uma taxa de juros constante. Sintaxe NPER(taxa;pgto;vp;vf;tipo) Para obter uma descrio completa dos argumentos em NPER e sobre as funes de anuidade, consulte VP. Taxa a taxa de juros por perodo. Pgto o pagamento feito em cada perodo; no pode mudar durante a vigncia da anuidade. Geralmente, pgto contm o capital e os juros, mas nenhuma outra tarifa ou taxas. Vp o valor presente ou atual de uma srie de pagamentos futuros.
Pgina 50 de 219
Vf o valor futuro, ou o saldo, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de um emprstimo, por exemplo, 0). Tipo o nmero 0 ou 1 e indica as datas de vencimento, onde 0 significa o fim do perodo e 1 o incio do perodo. Exemplo
Funo NPER
2.6.9 PGTO
Retorna o pagamento peridico de uma anuidade de acordo com pagamentos constantes e com uma taxa de juros constante. Sintaxe PGTO(taxa;nper;vp;vf;tipo) Para obter uma descrio mais completa dos argumentos em PGTO, consulte a funo VP. Taxa a taxa de juros por perodo. Nper o nmero total de pagamentos pelo emprstimo. Vp o valor presenteo valor total presente de uma srie de pagamentos futuros.
Pgina 51 de 219
Vf o valor futuro, ou o saldo de caixa, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de determinado emprstimo, por exemplo, 0). Tipo o nmero 0 ou 1 e indica as datas de vencimento. Onde 0 significa o fim do perodo e 1 o incio do perodo. Exemplo
Funo PGTO
2.6.10
PPGTO
Retorna o pagamento de capital para determinado perodo de investimento de acordo com pagamentos constantes e peridicos e uma taxa de juros constante. Sintaxe PPGTO(taxa;perodo;nper;vp;vf;tipo) Para uma descrio mais completa dos argumentos em PPGTO, consulte VP. Taxa a taxa de juros por perodo. Perodo especifica o perodo e deve estar entre 1 e nper. Nper o nmero total de perodos de pagamento em uma anuidade. Vp o valor presente o valor total correspondente ao valor atual de uma srie de pagamentos futuros. Vf o valor futuro, ou o saldo de caixa, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de determinado emprstimo, por exemplo, 0). Tipo o nmero 0 ou 1 e indica as datas de vencimento. Onde 0 representa o fim do perodo e 1 o incio do perodo.
Pgina 52 de 219
Comentrio Certifique-se de que esteja sendo consistente quanto s unidades usadas para especificar taxa e nper. Se fizer pagamentos mensais de um emprstimo de quatro anos com taxa de juros de 12% ao ano, use 12%/12 para taxa e 4*12 para nper. Se voc fizer pagamentos anuais para o mesmo emprstimo, use 12% para taxa e 4 para nper. Exemplo
Funo PPGTO
2.6.11
TAXA
Retorna a taxa de juros por perodo de uma anuidade. TAXA calculado por iterao e pode ter zero ou mais solues. Se os resultados sucessivos de TAXA no convergirem para 0,0000001 depois de 20 iteraes, TAXA retornar o valor de erro #NM!. Sintaxe TAXA(nper;pgto;vp;vf;tipo;estimativa) Consulte VP para obter uma descrio completa dos argumentos nper, pgto, vp, vf e tipo. Nper o nmero total de perodos de pagamento em uma anuidade. Pgto o pagamento feito em cada perodo e no pode mudar durante a vigncia da anuidade. Geralmente, pgto inclui o principal e os juros e nenhuma outra taxa ou tributo. Se pgto for omitido, voc dever incluir o argumento vf. Vp o valor presente o valor total correspondente ao valor atual de uma srie de pagamentos futuros.
Pgina 53 de 219
Vf o valor futuro, ou o saldo, que voc deseja obter depois do ltimo pagamento. Se vf for omitido, ser considerado 0 (o valor futuro de um emprstimo, por exemplo, 0). Tipo o nmero 0 ou 1 e indica as datas de vencimento, onde 0 o fim do perodo e 1 o incio do perodo. Estimativa a sua estimativa para a taxa. Se voc omitir estimativa, este argumento ser considerado 10%. Se TAXA no convergir, atribua valores diferentes para estimativa. Em geral, TAXA converge se estimativa estiver entre 0 e 1.
Comentrios Certifique-se de que esteja sendo consistente quanto s unidades usadas para especificar estimativa e nper. Se voc fizer pagamentos mensais por um emprstimo de quatro anos com juros de 12% ao ano, utilize 12%/12 para estimativa e 4*12 para nper. Se fizer pagamentos anuais para o mesmo emprstimo, utilize 12% para estimativa e 4 para nper. Exemplo
Funo TAXA
2.6.12
TIR
Retorna a taxa interna de retorno de uma seqncia de fluxos de caixa representada pelos nmeros em valores. Estes fluxos de caixa no precisam ser iguais como no caso de uma anuidade. Entretanto, os fluxos de caixa devem ser feitos em intervalos regulares, como mensalmente ou anualmente. A taxa interna de retorno a taxa de juros recebida para um investimento que consiste em pagamentos (valores negativos) e receitas (valores positivos) que ocorrem em perodos regulares.
Pgina 54 de 219
Sintaxe TIR(valores;estimativa) Valores uma matriz ou uma referncia a clulas que contm nmeros cuja taxa interna de retorno se deseja calcular. Valores deve conter pelo menos um valor positivo e um negativo para calcular a taxa interna de retorno. TIR usa a ordem de valores para interpretar a ordem de fluxos de caixa. Certifique-se de inserir os valores de pagamentos e rendas na seqncia desejada. Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas em branco, estes valores sero ignorados.
Estimativa um nmero que se estima ser prximo do resultado de TIR. O Microsoft Excel usa uma tcnica iterativa para calcular TIR. Comeando por estimativa, TIR refaz o clculo at o resultado ter uma preciso de 0,00001 por cento. Se TIR no puder localizar um resultado que funcione depois de 20 tentativas, o valor de erro #NM! ser retornado. Na maioria dos casos, no necessrio fornecer estimativa para o clculo de TIR. Se estimativa for omitida, ser considerada 0,1 (10 por cento). Se TIR fornecer o valor de erro #NM!, ou se o resultado no for prximo do esperado, tente novamente com um valor diferente para estimativa.
Comentrios TIR est intimamente relacionada com VPL, a funo do valor presente lquido. A taxa de retorno calculada por TIR a taxa de juros correspondente a um valor presente lquido zero. A seguinte frmula demonstra como VPL e TIR esto relacionados: VPL(TIR(B1:B6);B1:B6) igual a 3,60E-08 (Com a preciso do clculo TIR, o valor 3,60E-08 , na verdade, 0.) Exemplo
Pgina 55 de 219
TIR
2.6.13
VPL
Calcula o valor lquido atual de um investimento utilizando a taxa de desconto e uma srie de futuros pagamentos (valores negativos) e receita (valores positivos). Sintaxe VPL(taxa,valor1,valor2; ...) Taxa a taxa de desconto sobre o intervalo de um perodo. Valor1; valor2;... so argumentos de 1 a 29 que representam os pagamentos e a receita. Valor1; valor2;... devem ter o mesmo intervalo de tempo entre eles e ocorrer ao final de cada perodo. VPL utiliza a ordem de valor1; valor2;... para interpretar a ordem de fluxos de caixa. Certifique-se de fornecer os valores de pagamentos e receita na seqncia correta. Argumentos que so nmeros, clulas vazias, valores lgicas ou representaes em forma de texto de nmeros so contados; os argumentos que so valores de erro ou texto que no podem ser traduzidos em nmeros so ignorados.
Pgina 56 de 219
Se um argumento for uma matriz ou referncia, apenas os nmeros da matriz ou referncia sero contados. Clulas vazias, valores lgicos, valores de texto ou de erro na matriz ou referncia so ignorados.
Comentrios O investimento de VPL comea um perodo antes da data do fluxo de caixa de valor1 e termina com o ltimo fluxo de caixa na lista. O clculo de VPL baseia-se em fluxos e caixa futuros. Se o seu primeiro fluxo de caixa ocorrer no incio do primeiro perodo, o primeiro valor dever ser includo ao resultado VPL, e no nos valores de argumentos. Para obter mais informaes, consulte os exemplos abaixo. Se n for o nmero de fluxos de caixa na lista de valores, a frmula para VPL ser:
VPL assemelha-se funo VP (valor presente). A principal diferena entre VP e VPL que a primeira permite que os fluxos de caixa comecem no final ou no incio do perodo. Diferentemente dos valores de fluxo de caixa da varivel VPL, os fluxos de caixa VP devem ser constantes durante o perodo de investimento. Para obter informaes sobre anuidades e funes financeiras, consulte VP. VPL tambm est relacionado funo TIR (taxa interna de retorno). TIR a taxa para qual VPL igual a zero: VPL(TIR(...); ...)=0.
Exemplo
Funo VPL
Pgina 57 de 219
2.7.1 AGORA
Retorna o nmero de srie seqencial da data e hora atuais. Se o formato da clula era Geral antes de a funo ser inserida, o resultado ser formatado como uma data. Sintaxe AGORA( ) Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Os nmeros direita da vrgula decimal no nmero de srie representam a hora; os nmeros esquerda representam a data. Por exemplo, o nmero de srie 0,5 representa a hora 12:00 meio-dia. A funo AGORA s muda quando a planilha calculada ou quando a macro que contm a funo executada, no sendo atualizada continuamente.
2.7.2 ANO
Retorna o ano correspondente a uma data. O ano retornado como um inteiro no intervalo de 1900-9999. Sintaxe ANO(nm_srie) Nm_srie a data do ano que voc deseja localizar. As datas devem ser inseridas com a funo DATA ou como resultado de outras frmulas ou funes. Por exemplo, use DATA(2008;5;23) para 23 de maio de 2008. Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o
Pgina 58 de 219
nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Os valores retornados pelas funes ANO, MS e DIA sero valores gregorianos, no importa qual seja o formato de exibio do valor de data fornecido. Por exemplo, se o formato de exibio da data fornecida for HIjri, os valores retornados para as funes ANO, MS e DIA sero valores associados data gregoriana equivalente. Exemplo
- funo ANO
DATA Retorna o nmero de srie seqencial que representa uma determinada data. Se o formato da clula era Geral antes de a funo ser inserida, o resultado ser formatado como uma data. Sintaxe DATA(ano,dia,ms) Ano O argumento de ano pode ter de um a quatro dgitos. O Microsoft Excel interpretar o argumento de ano de acordo com o sistema de data que voc estiver usando. Por padro, o Excel para Windows usa o sistema de data de 1900. Se o ano estiver entre 0 (zero) e 1899 (inclusive), o Excel adicionar o valor a 1900 para calcular o ano. Por exemplo, DATA(108,2,1) retorna 2 janeiro, 2008 (1900+108). Se o ano estiver entre 1900 e 9999 (inclusive), o Excel usar esse valor como o ano. Por exemplo, DATA(2008,2,1) retorna 2 janeiro, 2008. Se o ano for menor do que 0 ou igual a ou maior que 10000, o Excel retornar o valor de erro #NM!.
Pgina 59 de 219
Se o ano estiver entre 4 e 1899 (inclusive), o Excel adicionar esse valor a 1900 para calcular o ano. Por exemplo, DATA(108,2,1) retorna 2 janeiro, 2008 (1900+108). Se o ano estiver entre 1904 e 9999 (inclusive), o Excel usar esse valor como o ano. Por exemplo, DATA(2008,2,1) retorna 2 janeiro, 2008. Se o ano for menor do que 4 ou igual a ou maior que 10000 ou se estiver entre 1900 e 1903 (inclusive), o Excel retornar o valor de erro #NM!.
Ms um nmero que representa o ms do ano. Se o valor de ms for maior do que 12, esse nmero ser adicionado ao primeiro ms do ano especificado. Por exemplo, DATA(2008,2,14) retorna o nmero de srie que representa 2 fevereiro, 2009. Dia um nmero que representa o dia do ms. Se o valor de dia for maior do que o nmero de dias do ms especificado, esse nmero ser adicionado ao primeiro dia do ms. Por exemplo, DATA(2008,35,1) retorna o nmero de srie que representa 4 fevereiro, 2008. Comentrios O Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. A funo DATA mais til em frmulas em que o ano, o ms e o dia so frmulas, no constantes.
Funo DATA
2.7.3 DATA.VALOR
Retorna o nmero de srie da data representada por texto_data. Use DATA.VALOR para converter uma data representada pelo texto em um nmero de srie.
Pgina 60 de 219
Sintaxe DATA.VALOR(texto_data) Texto_data texto que representa uma data no formato de data do Microsoft Excel. Por exemplo, "30/1/1998" ou "30-jan-1998" so seqncias de caracteres de texto entre aspas que representam datas. Ao usar o sistema de data padro no Excel para Windows, texto_data dever representar uma data de 1 de janeiro de 1900 a 31 de dezembro de 9999. Se a parte do ano de texto_data for omitida, DATA.VALOR utilizar o ano atual do relgio interno do computador. As informaes de hora texto_data so ignoradas. Comentrios O Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. A maior parte das funes converte automaticamente valores de data em nmeros de srie. Exemplo
Funo DATA.VALOR
2.7.4 DIA
Retorna o dia de uma data representado por um nmero de srie. O dia dado como um inteiro que varia de 1 a 31. Sintaxe DIA(nm_srie)
Pgina 61 de 219
Nm_srie a data do dia que voc est tentando encontrar. As datas devem ser inseridas com a funo DATA ou como resultado de outras frmulas ou funes. Por exemplo, use DATA(2008,5,23) para 23 de maio de 2008. Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Os valores retornados pelas funes ANO, MS e DIA sero valores gregorianos, independentemente do formato de exibio do valor de data fornecido. Por exemplo, se o formato de exibio da data fornecida for Hijir, os valores retornados para as funes ANO, MS e DIA sero valores associados data gregoriana equivalente. Exemplo
Funo DIA
2.7.5 DIA.DA.SEMANA
Retorna o dia da semana correspondente a uma data. O dia dado como um inteiro, variando de 1 (domingo) a 7 (sbado), por padro. Sintaxe DIA.DA.SEMANA(nm_srie; retornar_tipo) Nm_srie um nmero seqencial que representa a data do dia que voc est tentando encontrar. As datas devem ser inseridas com a funo DATA ou como resultado de outras frmulas ou funes. Por exemplo, use DATA(2008;5;23) para 23 de maio de 2008. Retornar_tipo um nmero que determina o tipo do valor retornado, onde 1 determina o intervalo entre 1 e 7 (de Domingo a sbado), o valor 2 representa o intervalo 1 a 7 como de Segunda a Domingo e o valor 3 representa o mesmo intervalo, Segunda a domingo mas para valores de 0 a 6.
Pgina 62 de 219
Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Exemplo
Funo DIA.DA.SEMANA
2.7.6 DIA360
Retorna o nmero de dias entre duas datas com base em um ano de 360 dias (doze meses de 30 dias). Use esta funo para ajudar no clculo dos pagamentos, se o seu sistema de contbil estiver baseado em doze meses de 30 dias. Sintaxe DIAS360(data_inicial;data_final;mtodo) Data_inicial e data_final so as duas datas entre as quais voc deseja saber o nmero de dias. Se data_inicial ocorrer aps data_final, DIAS360 retornar um nmero negativo. As datas devem ser inseridas com a funo DATA ou como resultado de outras frmulas ou funes. Por exemplo, use DATA(2008,5,23) para 23 de maio de 2008. Mtodo um valor lgico que especifica que mtodo ser usado no clculo, o americano ou o europeu. Se mtodo for FALSO ou Omitido, utiliza-se o mtodo americano, ou seja, se a data inicial for o dia 31 de um ms, ela se tornar igual ao dia 30 do mesmo ms. Se a data final for o dia 31 de um ms e a data inicial for anterior ao trigsimo dia de um ms, a data final se tornar igual ao dia
Pgina 63 de 219
primeiro do prximo ms. Caso contrrio, a data final se tornar igual ao trigsimo dia do mesmo ms. Se o mtodo for Verdadeiro, utiliza-se o mtodo europeu, ou seja, a data inicial e final que ocorrer no dia 31 de um ms se tornar igual ao trigsimo dia do mesmo ms.
Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Exemplo
Funo DIA360
2.7.7 HOJE
Retorna o nmero de srie da data atual. O nmero de srie o cdigo de datahora usado pelo Microsoft Excel para clculos de data e hora. Se o formato da clula era Geral antes de a funo ser inserida, o resultado ser formatado como uma data. Sintaxe HOJE( ) Comentrios O Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900.
Pgina 64 de 219
2.7.8 MS
Retorna o ms de uma data representado por um nmero de srie. O ms fornecido como um inteiro, variando de 1 (janeiro) a 12 (dezembro). Sintaxe MS(nm_srie) Nm_srie a data do ms que voc est tentando encontrar. As datas devem ser inseridas com a funo DATA ou como resultado de outras frmulas ou funes. Por exemplo, use DATA(2008,5,23) para 23 de maio de 2008. Comentrios O Microsoft Excel armazena datas como nmeros de srie seqenciais para que eles possam ser usados em clculos. Por padro, 1 de janeiro de 1900 o nmero de srie 1 e 1 de janeiro de 2008 o nmero de srie 39448 porque est 39.448 dias aps 1 de janeiro de 1900. Exemplo
Funo Hoje
As informaes de data em texto_hora so ignoradas. O Excel para Windows e o Excel para o Macintosh usam sistemas de data diferentes como seus padres. Os valores de tempo so uma parte do valor de data e so representados por um nmero decimal (por exemplo, 12:00 PM representado por 0,5 porque metade de um dia).
Exemplo
Funo VALOR.TEMPO
2.8.1 E
Retornar VERDADEIRO se todos os argumentos forem verdadeiros; retornar FALSO se um ou mais argumentos forem falsos. Sintaxe E(lgico1;lgico2; ...) Lgico1; lgico2;... so de 1 a 30 condies que voc deseja testar e que podem ser VERDADEIRO ou FALSO. Comentrios Os argumentos devem ser avaliados para valores lgicos, como VERDADEIRO ou FALSO, ou devem ser matrizes ou referncias que contm valores lgicos. Se um argumento de uma matriz ou referncia contiver texto ou clulas vazias, esses valores sero ignorados.
Pgina 66 de 219
Exemplo
Funo E
2.8.2 FALSO
Retorna o valor lgico FALSO. Sintaxe FALSO( ) Comentrios Voc tambm pode digitar a palavra FALSO diretamente na planilha ou frmula, e o Microsoft Excel a interpretar como o valor lgico FALSO.
2.8.3 NO
Inverte o valor do argumento. Use NO quando quiser ter certeza de que um valor no igual a outro valor determinado. Sintaxe NO(lgico) Lgico um valor ou expresso que pode ser avaliado como VERDADEIRO ou FALSO.
Pgina 67 de 219
Comentrios Se lgico for FALSO, NO retornar VERDADEIRO; se lgico for VERDADEIRO, NO retornar FALSO. Exemplo
Funo NO
2.8.4 OU
Retorna VERDADEIRO se qualquer argumento for VERDADEIRO; retorna FALSO se todos os argumentos forem FALSOS. Sintaxe OU(lgico1;lgico2;...) Lgico1;lgico2,... so de uma a 30 condies que voc deseja testar e que podem resultar em VERDADEIRO ou FALSO. Comentrios Os argumentos devem ser avaliados como valores lgicos, como VERDADEIRO ou FALSO, ou em matrizes ou referncias que contenham valores lgicos. Se um argumento de uma matriz ou referncia contiver texto ou clulas vazias, esses valores sero ignorados. Se o intervalo especificado no contiver valores lgicos, OU retornar o valor de erro #VALOR!. Voc pode usar uma frmula de matriz OU para verificar se um valor ocorre em uma matriz. Para inserir uma frmula de matriz, pressione CTRL+SHIFT+ENTER.
Exemplo
Pgina 68 de 219
Funo OU
2.8.5 VERDADEIRO
Retorna o valor lgico VERDADEIRO. Sintaxe VERDADEIRO( ) Comentrios Voc pode inserir o valor VERDADEIRO diretamente nas clulas e frmulas sem usar esta funo. A funo VERDADEIRO fornecida primeiramente para compatibilidade com outros programas de planilha.
2.9.1 CONT.NM
Conta quantas clulas contm nmeros e tambm os nmeros na lista de argumentos. Use CONT.NM para obter o nmero de entradas em um campo de nmero que esto em um intervalo ou matriz de nmeros. Sintaxe CONT.NM(valor1;valor2;...) Valor1; valor2, ... so argumentos de 1 a 30 que contm ou se referem a uma variedade de diferentes tipos de dados, mas somente os nmeros so contados. Comentrios
Pgina 69 de 219
Os argumentos que so nmeros, datas ou representaes de texto de nmero so calculados, os argumentos que so valores de erro ou texto que no podem ser traduzidos em nmeros so ignorados. Se um argumento for uma matriz ou referncia, somente os nmeros nesta matriz ou referncia so calculados. Clulas vazias, valores lgicos, texto ou valores de erro nesta matriz ou referncia so ignorados. Se voc precisa calcular valores lgicos, texto ou valores de erro, utilize a funo CONT.VALORES.
Exemplo
Funo CONT.NM
2.9.2 CONT.SE
Calcula o nmero de clulas no vazias em um intervalo que corresponde a determinados critrios. Sintaxe CONT.SE(intervalo;critrios) Intervalo o intervalo de clulas no qual se deseja contar clulas no vazias. Critrios o critrio na forma de um nmero, expresso ou texto que define quais clulas sero contadas. Por exemplo, os critrios podem ser expressos como 32, "32", ">32", "mas".
Pgina 70 de 219
Comentrios O Microsoft Excel fornece funes adicionais que podem ser usadas para analisar seus dados com base em uma condio. Por exemplo, para calcular uma soma baseada em uma seqncia de caracteres de texto ou em um nmero contido em um intervalo, use a funo de planilha SOMASE. Para que a frmula retorne um de dois valores com base em uma condio, como uma bonificao de vendas baseada em um valor de vendas especificado, use a funo de planilha SE. Exemplo
Funo CONT.SE
2.9.3 CONT.VALORES
Calcula o nmero de clulas no vazias e os valores na lista de argumentos. Use CONT.VALORES para calcular o nmero de clulas com dados em um intervalo ou matriz. Sintaxe CONT.VALORES(valor1;valor2;...) Valor1; valor2;... so argumentos de 1 a 30 que representam os valores que voc deseja calcular. Neste caso, um valor qualquer tipo de informaes, incluindo texto vazio (""), mas no incluindo clulas em branco. Se um argumento for uma matriz ou referncia, as clulas vazias na matriz ou referncia so ignoradas. Se voc no precisa calcular valores lgicos, texto ou valores de erro, utilize a funo CONT.NM Exemplo
Pgina 71 de 219
Funo CONT.VALORES
2.9.4 CONTAR.VAZIO
Conta o nmero de clulas vazias no intervalo especificado. Sintaxe CONTAR.VAZIO(intervalo) Intervalo o intervalo no qual se deseja contar as clulas em branco. Comentrios Clulas com frmulas que retornam "" (texto vazio) tambm so contadas. Clulas com valores nulos no so contadas. Exemplo
Pgina 72 de 219
Funo CONT.VAZIO
2.9.5 CRESCIMENTO
Calcula o crescimento exponencial previsto usando dados existentes. CRESCIMENTO retorna os valores y para uma srie de novos valores x que voc especifica usando valores x e y existentes. Voc tambm pode usar a funo de planilha CRESCIMENTO para ajustar uma curva exponencial em valores x e y. Sintaxe CRESCIMENTO(val_conhecidos_y;val_conhecidos_x;novos_valores_x;cons tante) Val_conhecidos_y o conjunto de valores y que voc j conhece na relao y = b*m^x. Se a matriz val_conhecidos_y estiver em uma nica coluna, cada coluna de val_conhecidos_x ser interpretada como uma varivel separada. Se a matriz val_conhecidos_y for uma nica linha, cada linha de val_conhecidos_x ser interpretada como uma varivel separada. Se qualquer um dos nmeros em val_conhecidos_y for 0 ou negativo, CRESCIMENTO retornar o valor de erro #NM!.
Val_conhecidos_x um conjunto opcional de valores x que voc talvez conhea na relao y = b*m^x. A matriz val_conhecidos_x pode incluir um ou mais conjuntos de variveis. Se apenas uma varivel for usada, val_conhecidos_y e val_conhecidos_x podem ser intervalos de qualquer formato, desde que tenham dimenses iguais. Se mais de uma varivel for usada, val_conhecidos_y deve ser um vetor (ou seja, um intervalo com altura de uma linha ou largura de uma coluna).
Pgina 73 de 219
Se val_conhecidos_x for omitido, pressupe-se que a matriz {1,2,3....} do mesmo tamanho que val_conhecidos_y. Novos_valores_x so novos valores x para os quais voc deseja que CRESCIMENTO retorne valores y correspondentes. Novos_valores_x deve incluir uma coluna (ou linha) para cada varivel independente, da mesma forma que val_conhecidos_x. Portanto, se val_conhecidos_y estiver em uma nica coluna, val_conhecidos_x e novos_valores_x devem ter o mesmo nmero de colunas. Se val_conhecidos_y estiver em uma nica linha, val_conhecidos_x e novos_valores_x devem ter o mesmo nmero de linhas. Se novos_valores_x for omitido, ser considerado como equivalente a val_conhecidos_x. Se val_conhecidos_x e novos_valores_x forem omitidos, sero considerados como equivalentes matriz {1,2,3,...} que do mesmo tamanho de val_conhecidos_y.
Constante um valor lgico que fora ou no a constante b a se igualar a 1. Se constante for VERDADEIRO ou omitida, b ser calculado normalmente. Se constante for FALSO, b ser definido como 1 e os valores m sero ajustados para que y = m^x.
Comentrios As frmulas que retornam matrizes devem ser inseridas como frmulas de matriz aps a seleo do nmero de clulas. Ao inserir uma constante de matriz para um argumento, como val_conhecidos_x, use vrgulas na mesma linha e pontos-e-vrgulas para separar linhas.
Exemplo
Pgina 74 de 219
Funo CRESCIMENTO
2.9.6 FREQNCIA
Calcula a freqncia com que os valores ocorrem em um intervalo de valores e, em seguida, retorna uma matriz vertical de nmeros. Por exemplo, use FREQNCIA para contar o nmero de resultados de teste. Pelo fato de FREQNCIA retornar uma matriz, deve ser inserida como uma frmula matricial. Sintaxe FREQNCIA(matriz_dados;matriz_bin) Matriz_dados uma matriz ou uma referncia a um conjunto de valores cujas freqncias voc deseja contar. Se matriz_dados no contiver valores, FREQNCIA retornar uma matriz de zeros. Matriz_bin uma matriz ou referncia a intervalos nos quais voc deseja agrupar os valores contidos em matriz_dados. Se matriz_bin no contiver valores, FREQNCIA retornar o nmero de elementos em matriz_dados. Comentrios FREQNCIA inserida como uma frmula matricial depois de selecionado um intervalo de clulas adjacentes no qual voc deseja que a distribuio fornecida aparea. O nmero de elementos da matriz retornada um a mais do que o nmero de elementos de matriz_bin. O elemento adicional da matriz retornada apresenta a contagem dos valores que estiverem acima do intervalo mais
Pgina 75 de 219
alto. Por exemplo, ao contar trs intervalos de valores inseridos em trs clulas, certifique-se de inserir a FREQNCIA em quatro clulas para os resultados. A clula adicional retornar o nmero de valores de matriz_dados que forem maiores do que o valor do terceiro intervalo. FREQNCIA ignora clulas em branco e texto. As frmulas que fornecem matrizes devem ser inseridas como frmulas matriciais.
Exemplo
. - Funo FREQNCIA
2.9.7 MAIOR
Retorna o maior valor k-simo de um conjunto de dados. Voc pode usar esta funo para selecionar um valor de acordo com a sua posio relativa. Por exemplo, voc pode usar MAIOR para obter o primeiro, o segundo e o terceiro resultados. Sintaxe MAIOR(matriz;k)
Pgina 76 de 219
Matriz a matriz ou intervalo de dados cujo maior valor k-simo voc deseja determinar. K a posio (do maior) na matriz ou intervalo de clula de dados a ser fornecida. Comentrios Se a matriz estiver vazia, MAIOR retornar o valor de erro #NM!. Se k 0 ou se k for maior que o nmero de pontos de dados, MAIOR retornar o valor de erro #NM!. Se n for o nmero de pontos de dados em um intervalo, MAIOR(matriz;1) retornar o maior valor e MAIOR(matriz;n) retornar o menor valor. Exemplo
Funo MAIOR
2.9.8 MXIMO
Retorna o valor mximo de um conjunto de valores. Sintaxe MXIMO(nm1;nm2; ...) Nm1, nm2,... so de 1 a 30 nmeros para os quais voc deseja saber o valor mximo. Comentrios
Pgina 77 de 219
Voc pode especificar os argumentos que so nmeros, clulas vazias, valores lgicos ou representaes em texto de nmeros. Os argumentos que so valores de erro ou texto que no podem ser traduzidos em nmeros causam erros. Se um argumento for uma matriz ou referncia, apenas os nmeros nesta matriz ou referncia sero usados. Clulas vazias, valores lgicos ou texto na matriz ou referncia sero ignorados. Se os valores lgicos e o texto tiverem que ser ignorados, use MXIMO. Se os argumentos no contiverem nmeros, MXIMO retornar 0.
Exemplo
Funo MXIMO
2.9.9 MXIMOA
Retorna o maior valor em uma lista de argumentos. Alm de nmeros, so comparados valores lgicos e de texto, como VERDADEIRO e FALSO. MXIMOA semelhante a MNIMOA. Para obter mais informaes, consulte os exemplos de MNIMOA. Sintaxe MXIMOA(valor1;valor2;...) Valor1; valor2;... encontrar. Comentrios so de 1 a 30 valores cujo valor mximo voc deseja
Pgina 78 de 219
Voc pode especificar argumentos que sejam nmeros, clulas vazias, valores lgicos ou representaes em forma de texto de nmeros. Os argumentos que so valores de erro geram erros. Se o clculo no deve incluir valores lgicos e de texto, use, em substituio, a funo de planilha MXIMO. Se um argumento for uma matriz ou referncia, sero usados apenas valores nesta matriz ou referncia. As clulas vazias e valores de texto na matriz ou referncia sero ignorados. Os argumentos que contiverem VERDADEIRO sero avaliados como 1; os argumentos que contiverem texto ou FALSO sero avaliados como 0 (zero). Se os argumentos no contiverem valores, MXIMOA retornar 0 (zero).
Exemplo
Funo MXMOA
2.9.10
MED
Retorna a mediana dos nmeros indicados. A mediana o nmero no centro de um conjunto de nmeros; isto , metade dos nmeros possui valores que so maiores do que a mediana e a outra metade possui valores menores. Sintaxe MED(nm1;nm2;...) Nm1; nm2;... so de 1 a 30 nmeros dos quais voc deseja obter a mediana. Comentrios
Pgina 79 de 219
Os argumentos devem ser nmeros ou nomes, matrizes ou referncias que contenham nmeros. O Microsoft Excel examina todos os nmeros em cada argumento de referncia ou matriz. Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas vazias, estes valores sero ignorados; no entanto, clulas com valor zero sero includas. Se houver uma quantidade par de nmeros no conjunto, MED calcular a mdia dos dois nmeros do meio. Consulte a segunda frmula no exemplo.
Exemplo
Funo MED
2.9.11
Sintaxe
MDIA
MDIA(nm1;nm2; ...) Nm1; nm2;... so de 1 a 30 argumentos numricos para os quais voc deseja obter a mdia. Comentrios Os argumentos devem ser nmeros ou eles devem ser nomes, matrizes ou referncias que contenham nmeros.
Pgina 80 de 219
Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas vazias, estes valores sero ignorados; no entanto, clulas com valor zero sero includas.
Exemplo
Funo Mdia
2.9.12
MEDIAA
Calcula a mdia (mdia aritmtica) dos valores na lista de argumentos. Alm de nmeros, so includos no clculo valores lgicos e de texto, como VERDADEIRO e FALSO. Sintaxe MDIAA(valor1;valor2;...) Valor1; valor2;... so de 1 a 30 clulas, intervalos de clulas ou valores para os quais voc deseja obter a mdia. Comentrios Os argumentos devem ser nmeros, nomes, matrizes ou referncias. Os argumentos de referncia ou matriciais que contiverem texto sero avaliados como 0 (zero). O texto vazio ("") ser avaliado como 0 (zero). Se o clculo no deve incluir valores de texto na mdia, use a funo MDIA. Os argumentos que contiverem VERDADEIRO sero avaliados como 1; os argumentos que contiverem FALSO sero avaliados como 0 (zero).
Pgina 81 de 219
Exemplo
Funo MDIAA
2.9.13
MDIA.GEOMTRICA
Retorna a mdia geomtrica de uma matriz ou de um intervalo de dados positivos. Por exemplo, voc pode usar MDIA.GEOMTRICA para calcular o crescimento mdio considerando-se juros compostos com taxas variveis. Sintaxe MDIA.GEOMTRICA(nm1;nm2;...) Nm1, nm2,... so de 1 a 30 argumentos para os quais voc deseja calcular a mdia. Voc tambm pode usar uma nica matriz ou referncia a uma matriz em vez de argumentos separados por ponto-e-vrgulas. Comentrios Os argumentos devem ser nmeros, ou nomes, matrizes ou referncias que contenham nmeros. Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas vazias, estes valores sero ignorados; no entanto, clulas com valor zero sero includas. Se qualquer valor de dados 0, MDIA.GEOMTRICA retornar o valor de erro #NM!.
Pgina 82 de 219
Exemplo
Funo MDIAGEOMTRICA MENOR Retorna o menor valor k-simo do conjunto de dados. Use esta funo para retornar valores com uma posio especfica relativa em um conjunto de dados. Sintaxe MENOR(matriz;k) Matriz uma matriz ou intervalo de dados numricos cujo menor valor k-simo voc deseja determinar. K a posio (a partir do menor) na matriz ou intervalo de dados a ser fornecido. Comentrios Se matriz estiver vazia, MENOR retornar o valor de erro #NM!. Se k 0 ou k exceder o nmero de pontos de dados, MENOR retornar o valor de erro #NM!. Se n for o nmero de pontos de dados em matriz, MENOR(matriz;1) ser igual ao menor valor, e MENOR(matriz;n) ser igual ao maior valor.
Exemplo
Pgina 83 de 219
Funo MENOR
2.9.14
MNIMO
Retorna o menor nmero na lista de argumentos. Sintaxe MNIMO(nm1;nm2;...) Nm1, nm2,... mnimo. Comentrios Voc pode especificar os argumentos que so nmeros, clulas vazias, valores lgicos ou representaes em texto de nmeros. Os argumentos que so valores de erro ou texto que no podem ser traduzidos em nmeros causam erros. Se um argumento for uma matriz ou referncia, apenas os nmeros daquela matriz ou referncia podero ser usados. Clulas vazias, valores lgicos ou valores de erro na matriz ou referncia sero ignorados. Caso o texto e os valores lgicos no devam ser ignorados, utilize MNIMOA. Se os argumentos no contiverem nmeros, MNIMO retornar 0.
Pgina 84 de 219
Exemplo
Funo Mnimo MNIMOA comparados valores lgicos e de texto, como VERDADEIRO e FALSO. Sintaxe MNIMOA(valor1;valor2;...) Valor1; valor2;... so de 1 a 30 valores cujo menor valor voc deseja encontrar. Comentrios Voc pode especificar argumentos que sejam nmeros, clulas vazias, valores lgicos ou representaes em forma de texto de nmeros. Os argumentos que so valores de erro geram erros. Se o clculo no deve incluir valores lgicos ou de texto, use, em substituio, a funo de planilha MNIMO. Se um argumento for uma matriz ou referncia, sero usados apenas valores nesta matriz ou referncia. As clulas vazias e valores de texto na matriz ou referncia sero ignorados. Os argumentos que contiverem VERDADEIRO sero avaliados como 1; os argumentos que contiverem texto ou FALSO sero avaliados como 0 (zero). Se os argumentos no contiverem valores, MNIMOA retornar 0 (zero).
Exemplo
Pgina 85 de 219
Funo MNIMOA MODO Retorna o valor que ocorre com mais freqncia em uma matriz ou intervalo de dados. Assim como MED, MODO uma medida de local. Sintaxe MODO(nm1;nm2;...) Nm1, nm2,... so argumentos de 1 a 30 para os quais voc deseja calcular o modo. Voc tambm pode usar uma nica matriz ou referncia a uma matriz em vez de argumentos separados por pontos-e-vrgulas. Comentrios Os argumentos devem ser nmeros ou nomes, matrizes ou referncias que contenham nmeros. Se uma matriz ou argumento de referncia contiver texto, valores lgicos ou clulas vazias, estes valores sero ignorados; no entanto, clulas com valor zero sero includas. Se o conjunto de dados no contiver pontos de dados duplicados, MODO retornar o valor de erro #N/D.
Em um conjunto de valores, o modo o valor com ocorrncia mais freqente, a mediana o valor do meio e a mdia o valor mdio. Nenhuma medida nica de tendncia central fornece um quadro completo dos dados. Suponha que os dados estejam agrupados em trs reas, metade em torno de um nico valor baixo e a outra metade em torno de dois valores altos. MDIA e MED podem retornar um valor no meio relativamente vazio, enquanto que MODO pode retornar o valor baixo dominante.
Pgina 86 de 219
Exemplo
Funo MODO
2.9.15
QUARTIL
Retorna o quartil do conjunto de dados. Quartis so comumente usados em dados de vendas e de pesquisas para dividir a populao em grupos. Por exemplo, voc pode usar QUARTIL para descobrir 25% de maior renda de uma populao. Sintaxe QUARTIL(matriz;quarto) Matriz a matriz ou intervalo de clula de valores numricos cujo valor quartil voc deseja obter. Quarto indica o valor a ser retornado, onde 0 o valor mnimo, 1 representa 25%, 2 representa 50%, 3 representa 75% e 4 o valor mximo. Comentrio Se a matriz estiver vazia, QUARTIL retornar o valor de erro #NM!. Se quarto no for um nmero inteiro, ser truncado. Se quarto < 0 ou se quarto > 4, QUARTIL retornar o valor de erro #NM!. MNIMO, MED e MXIMO retornaro o mesmo valor que QUARTIL quando quarto for igual a 0, 2 e 4, respectivamente.
Exemplo
Pgina 87 de 219
Funo QUARTIL
2.10.1
CONCATENAR
Agrupa vrias seqncias de caracteres de texto em uma nica seqncia de caracteres de texto. Sintaxe CONCATENAR (texto1;texto2; ...) Texto1; texto2;... so 1 a 30 itens de texto a serem agrupados em um nico item de texto. Os itens de texto podem ser seqncia de caracteres de texto, nmeros ou referncias de clula nica. Comentrios O operador "&" pode ser usado no lugar de CONCATENAR para agrupar itens de texto. Exemplo
Pgina 88 de 219
Funo CONCATENAR
2.10.2
DEF.NM.DEC
Arredonda o nmero para o nmero especificado de decimais, formata o nmero no formato decimal usando vrgula e pontos e retorna o resultado como texto. Sintaxe DEF.NM.DEC(nm;decimais;sem_sep_milhar) Nm o nmero que voc deseja arredondar e converter em texto. Decimais o nmero de dgitos direita da vrgula decimal. Sem_sep_milhar um valor lgico que, se VERDADEIRO, impede que DEF.NM.DEC inclua vrgulas no texto retornado. Comentrios Os nmeros no Microsoft Excel no podem ter mais de 15 dgitos significativos, mas os decimais podem chegar a 127. Se decimais for negativo, nm ser arredondado esquerda da vrgula decimal. Se voc omitir decimais, ele ser considerado 2. Se sem_sep_milhar for FALSO ou omitido, o texto retornado incluir vrgulas como padro. A principal diferena entre formatar uma clula que contm um nmero com o comando Clulas (menu Formatar) e formatar um nmero diretamente com a funo DEF.NM.DEC que DEF.NM.DEC converte o resultado em texto. Um nmero formatado com o comando Clulas continua sendo um nmero.
Exemplo
Pgina 89 de 219
Funo DEF.NM.DEC
2.10.3
DIREITA
DIREITA retorna o ltimo caractere ou caracteres em uma seqncia de caracteres de texto com base no nmero de caracteres especificado por voc. Sintaxe DIREITA(texto;nm_caract) Texto a seqncia de caracteres de texto que contm os caracteres que voc deseja extrair. Nm_caract especifica o nmero de caracteres a ser extrado por DIREITA. Comentrios Nm_caract deve ser maior ou igual a zero. Se nm_caract for maior do que o comprimento do texto, DIREITA retornar todo o texto. Se nm_caract for omitido, ser considerado 1.
Exemplo
Pgina 90 de 219
. Funo DIREITA
2.10.4
ESQUERDA
ESQUERDA retorna o primeiro caractere ou caracteres em uma seqncia de caracteres de texto baseado no nmero de caracteres especificado por voc. Sintaxe ESQUERDA(texto;nm_caract) Texto a seqncia de caracteres de texto que contm os caracteres que voc deseja extrair. Nm_caract especifica o nmero de caracteres que voc deseja que ESQUERDA extraia. Nm_caract deve ser maior ou igual a zero. Se nm_caract for maior do que o comprimento do texto, ESQUERDA retornar todo o texto. Se nm_caract for omitido, ser considerado 1.
Exemplo
Funo ESQUERDA
Pgina 91 de 219
2.10.5
EXT.TEXTO
EXT.TEXTO retorna um nmero especfico de caracteres da seqncia de caracteres texto, comeando na posio especificada, com base no nmero de caracteres especificado. Sintaxe EXT.TEXTO(texto;nm_inicial;nm_caract) Texto a seqncia de caracteres de texto que contm os caracteres que voc deseja extrair. Nm_inicial a posio do primeiro caractere que voc deseja extrair como texto. O primeiro caractere em texto possui nm_inicial1, e assim por diante. Nm_caract especifica o nmero de caracteres que voc deseja que EXT.TEXTO retorne do texto. Comentrios Se nm_inicial for maior do que o comprimento de texto, EXT.TEXTO retornar "" (texto vazio). Se nm_inicial for menor do que o comprimento de texto, mas nm_inicial e nm_caract excederem o comprimento de texto, EXT.TEXTO retornar os caracteres at o final do texto. Se nm_inicial for menor do que 1, EXT.TEXTO retornar o valor de erro #VALOR!. Se nm_caract for negativo, EXT.TEXTO retornar o valor de erro #VALOR!.
Exemplo
Pgina 92 de 219
Funo EXT.TEXTO
2.10.6
LOCALIZAR
LOCALIZAR retorna o nmero do caractere no qual um caractere especfico ou uma seqncia de caracteres de texto encontrado primeiro, comeando com nm_inicial. Use LOCALIZAR para determinar o local de um caractere ou uma seqncia de caracteres de texto em outra seqncia para que voc possa usar as funes EXT.TEXTO ou MUDAR para alterar o texto. Sintaxe LOCALIZAR(texto_procurado;no_texto;nm_inicial) Texto_procurado o texto que voc deseja localizar. possvel usar os caracteres curinga ponto de interrogao (?) e asterisco (*) em texto_procurado. Um ponto de interrogao coincide com qualquer caractere nico; um asterisco coincide com qualquer seqncia de caracteres. Se desejar localizar um ponto de interrogao ou asterisco real, digite um til (~) antes do caractere. No_texto o texto em que se deseja localizar o texto_procurado. Nm_inicial o nmero do caractere em no_texto em que se deseja iniciar a pesquisa. Comentrios LOCALIZAR e LOCALIZARB no fazem distino entre letras maisculas e minsculas quando localiza texto. Se texto_procurado no for localizado, o valor de erro #VALOR! ser retornado. Se nm_inicial for omitido, ser equivalente a 1.
Pgina 93 de 219
Se nm_inicial no for maior do que 0 ou for maior do que o comprimento de no_texto, o valor de erro #VALOR! ser retornado.
Exemplo
Funo LOCALIZAR
Pgina 94 de 219
Voc pode Gravar uma macro para realizar uma tarefa em uma etapa: Antes de gravar uma macro, planeje as etapas e os comandos que voc deseja que a macro execute. Se cometer um erro durante a gravao da macro, as correes feitas tambm so gravadas. Ao gravar macros, o VBA armazena cada uma em um novo mdulo anexado a uma pasta de trabalho. Por exemplo, se voc insere com freqncia seqncias de caracteres de texto extensas nas clulas, voc pode gravar uma macro para formatar essas clulas de maneira que o texto retorne automaticamente. Selecione a clula em que deseja inserir o retorno automtico de texto e inicie a gravao. Clique em Clulas no menu Formatar, clique na guia Alinhamento, marque a caixa de seleo Retorno automtico de texto, clique em OK e, em seguida, clique em Parar gravao . Como gravar uma macro. Nos veremos exemplos detalhados de macros a seguir. Como tornar uma macro fcil de ser executada: Voc pode executar uma macro escolhendo-a de uma lista na caixa de dilogo Macro. Para que uma macro seja executada sempre que voc clicar em um boto especfico ou pressionar determinada combinao de teclas, voc pode atribuir a macro a um boto da barra de ferramentas, um atalho no teclado ou um objeto grfico em uma planilha. Veremos como fazer essas atribuies nas prximas lies.
2.12.1
Depois de gravar uma macro, voc poder exibir o cdigo da macro com o Editor do VBA para corrigir erros ou alterar a funo da macro. O Editor do VBA um programa criado para facilitar a escrita e a edio de cdigo de macro para principiantes e fornece bastante Ajuda on-line. Voc no precisa aprender a programar ou a usar a linguagem do Visual Basic para fazer alteraes simples nas suas macros. Nas prximas lies veremos como exibir e editar macros. Na Figura a seguir temos um exemplo de cdigo associado com uma Macro. Esse um exemplo de cdigo VBA:
Pgina 96 de 219
Janela de macros
2.12.2
Voc pode editar macros, copiar macros de um mdulo para outro, copiar macros entre pastas de trabalho diferentes, renomear os mdulos que armazenam as macros ou renomear as macros. Por exemplo, se voc quisesse que a macro de retorno automtico de texto, do exemplo anterior, tambm deixasse o texto em negrito, voc poderia gravar outra macro para aplicar negrito a uma clula e copiar as instrues dessa macro para a macro de retorno automtico de texto. Segurana da macro: O Microsoft Excel XP fornece proteo contra vrus que podem ser transmitidos atravs das macros. Se voc compartilha macros com outros usurios, voc pode certific-las com uma assinatura digital de forma que os outros usurios possam verificar que as macros so de origem confivel. Sempre que voc abrir uma pasta de trabalho que contenha macros, poder verificar a origem das macros antes de ativ-las. Aprenda sobre como evitar vrus de macro.
Informao Para um melhor aproveitamento e entendimento do VBA importante que se tenha uma noo bsica de Lgica de Programao.
Por exemplo, vamos supor que voc precisasse fazer a verificao do CPF que digitado em uma clula. O clculo do DV do CPF, o qual de domnio pblico, envolve uma srie de operaes aritmticas. Para implementar uma funo que faz a verificao do DV do CPF, voc ter que fazer uso de programao. Por isso que, conforme descrito anteriormente, veremos os comandos bsicos da linguagem VBA, para aplica-los em alguns exemplos prticos nas lies dos prximo mdulo.
2.14.1
Podemos usar o gravador de Macros: Nesse caso o Excel grava cada uma das aes que faro parte da Macro e transforma essas aes nos comandos VBA equivalentes. Quando a macro for executada, os comandos VBA que sero efetivamente executados. Cada comando VBA corresponde a uma ao efetiva da macro. Criar a Macro usando VBA: A partir do momento em que voc domina a linguagem VBA, poder criar a macro digitando os comandos VBA necessrios. Isso feito usando o Editor de VBA, conforme veremos a seguir.
Pgina 98 de 219
Melhor do que uma srie de definies ver uma Macro em ao. Vamos a um exemplo simples, onde criaremos uma Macro. Em seguida vamos executa-la . Na prxima lio analisaremos o cdigo VBA criado pelo gravador de macros. Criar uma macro usando o Gravador de Macros Vamos supor que nossa macro dever formatar a clula atual com Negrito, cor de fonte Vermelha, com fundo cinza. Gravar a macro com o nome de FormataVermCinza. Clique na clula A4. Agora vamos iniciar a gravao da Macro. Selecione o comando Ferramentas -> Macro -> Gravar nova macro. Ser exibida a janela Gravar Macro. No campo Nome da macro digite: FormataVermCinza. No campo Tecla de atalho digite L. Observe que o Excel troca para Ctrl+Shift+L. Isso acontece porque a combinao Ctrl+L j deve estar associada com algum comando do Excel. Com isso estamos associando a combinao Ctrl+Shift+L com a macro FormataVermCinza, ou seja, cada vez que quisermos executar essa macro basta pressionar Ctrl+Shift+L. O campo descrio simplesmente uma descrio da funcionalidade da macro. Digite o texto indicado na Figura 5.2:
Figura 5.2 Definio do nome e da tecla de atalho da Macro. Clique em OK. A gravao da Macro ser iniciada. Todos os comandos que voc executar, durante a gravao da Macro, faro parte da Macro.
Uma nova barra ( ) exibida na planilha do Excel. Essa barra utilizada para parar a gravao da Macro. Agora devemos escolher os comandos que
Pgina 99 de 219
faro parte da
macro. Aps ter executado os comandos que faro parte da ) para encerrar a gravao da Macro.
Agora a macro FormataVermCinza foi criada e podemos utiliza-la sempre que necessrio.
2.14.2
Executando a macro
Clique na Clula B7. Pressione Ctrl+Shift+L. A macro FormataVermCinza executada e as formataes definidas pela macro (Negrito, fonte Vermelha e fundo Cinza) so automaticamente aplicadas na Clula B7. Veja que com um simples comando de teclado, executo uma srie de comandos (nesse exemplo: trs comandos de formatao). Esse exemplo nos d uma pequena idia do poder e facilidade do uso das macros. Tambm possvel executar a macro usando o comando Ferramentas -> Macro > Macros. Clique na clula B5. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro, onde so listadas todas as macros existentes na pasta de trabalho atual (no arquivo carregado no Excel), conforme indicado na Figura 5.3:
Figura 5.3 A janela Macro. Clique na Macro FormataVermCinza para seleciona-la. Clique no boto Executar. A Macro ser executada e as respectivas formataes sero aplicadas clula B5. A sua planilha deve estar conforme indicado na Figura 5.4:
Ou de outra forma: Do que feita uma macro? Conforme veremos a seguir, uma macro gravada no Excel como uma ( seqncia de comandos VBA. Por exemplo, ao clicarmos no boto ( ), para a aplicao de negrito, o Excel gera um comando VBA que faz a formatao em negrito. Nessa lio aprenderemos a acessar o cdigo VBA gerado pelo Excel (embora ainda no sejamos capazes de entender esse cdigo).
2.15.1
Voc deve estar com a planilha C:\ExcelAvancado\Mdulo 5 Exerccio 01.xls aberta, se no estiver, abra-a. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro FormataVermCinza para seleciona-la. Clique no boto Editar. O Editor do VBA ser carregado e sero exibidas as seguintes linhas de cdigo:
Sub FormataVermCinza() ' ' FormataVermCinza Macro ' Macro que faz a formatao em fonte Vermelha, Negrito e ' fundo Cinza. ' ' Atalho do teclado: Ctrl+Shift+L ' Selection.Font.Bold = True Selection.Font.ColorIndex = 3 With Selection.Interior .ColorIndex = 15 .Pattern = xlSolid End With End Sub
Esses so os comandos VBA (que por enquanto no entendemos o que significam) que formam a macro FormataVermCinza. Apenas para adiantar um pouco o assunto, a seguir descrevo o que faz cada um dos principais comandos dessa Macro:
Selection.Font.Bold = True
Esse comando aplica a formatao em Negrito para a clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada.
Selection.Font.ColorIndex = 3
Esse comando aplica cor de fonte Vermelha para a clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada.
With Selection.Interior .ColorIndex = 15 .Pattern = xlSolid End With
Esses comandos aplicam a cor de fundo cinza, na clula onde est o cursor (ou no conjunto de clulas selecionadas), quando a macro executada. Esses so comandos da linguagem VBA. Com o uso do VBA temos acesso a todos os comandos e funes do Microsoft Excel. Tudo o que voc faz usando o teclado e o mouse, tambm possvel de ser feito com o uso do VBA, porm de uma maneira automatizada. O uso de macros especialmente indicado naquelas situaes em que temos um conjunto de comandos que precisam ser executados, repetidamente, em diferentes situaes. Nesses casos muito mais prtico criar uma macro composta pelo conjunto de comandos e, cada vez que os comandos precisarem ser executados, executar a macro. Na Figura 5.5 temos uma viso do Editor do Visual Basic. Veremos mais detalhes sobre esse editor nas prximas lies, quando comearmos a trabalhar com o VBA.
Figura 5.5 O Editor de VBA Selecione o comando Arquivo -> Fechar e Voltar para o Microsoft Excel. Voc estar de volta planilha.
2.16.1
Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro a ser renomeada para seleciona-la. Clique no boto Editar.
Pgina 104 de 219
Ser aberto o editor do VBA. O nome da macro vem logo aps o comando Sub da primeira linha, conforme destacado na Figura 5.6:
Figura 5.6 Renomeando uma Macro. Para renomear a macro basta alterar o nome aps o comando Sub e depois clicar no boto ( ) para salvar as alteraes. Em seguida s fechar o Editor de VBA.
2.16.2
Abra o arquivo onde est a macro a ser excluda. Selecione o comando Ferramentas -> Macro -> Macros. Ser exibida a janela Macro. Clique na macro a ser excluda para selecion-la. Clique no boto Excluir. O Excel emite um aviso solicitando que voc confirme a excluso, conforme indicado na Figura 5.7:
Figura 5.7 Confirmando a excluso da macro. Clique em Sim para confirmar a excluso ou em No para cancelar a excluso da macro.
Figura 5.8 Confirmando a excluso da macro. Faa as alteraes desejadas e clique em OK.
boto com a macro. Dessa forma toda vez que precisarmos executar a macro, bastar clicar no boto associado com a macro. Exemplo 2: Criar uma macro usando o Gravador de Macros. A macro dever formatar As clulas selecionadas com formato Contbil, com duas casas decimais, cor de fonte Vermelha e Itlico. Gravar a macro com o nome de FormataContbil . Criar um boto de comando na Barra de Ferramentas padro e associar esse boto com a macro FormataContbil. Abra o Excel. Abra a Planilha C:\ExcelAvancado\Mdulo 5 Exerccio 02.xls. Clique na clula F2. Agora vamos iniciar a gravao da Macro. Selecione o comando Ferramentas -> Macro -> Gravar nova macro . Ser exibida a janela Gravar Macro. No campo Nome da macro digite: FormataContbil. Na lista Armazenar macro em, selecione a opo Esta pasta de trabalho . O campo descrio simplesmente uma descrio da funcionalidade da macro. Digite o texto indicado na Figura 5.9:
Figura 5.9 Definio do nome e da descrio da macro FormataContbil. 10. Clique em OK. A gravao da Macro ser iniciada. Todos os comandos que voc executar, durante a gravao da Macro, faro parte da Macro.
Uma nova barra ( ) exibida na planilha do Excel. Essa barra utilizada para parar a gravao da Macro. Agora devemos escolher os comandos que faro parte da macro. Aps ter executado os comandos que faro parte da macro, basta clicar no boto ( ) para encerrar a gravao da Macro.
Pgina 107 de 219
Clique no boto ( ) para aplicar Itlico. Na lista de Cores da fonte ( ) selecione Vermelho.
Selecione o comando Formatar -> Clulas. Clique na opo Contbil e selecione duas casas decimais, conforme indicado na Figura 5.10:
Figura 5.10 Formatao Contbil com duas casas decimais. Clique em OK. Clique no boto ( ) para encerrar a gravao da Macro.
Agora a macro FormataContbil foi criada e podemos utiliz-la sempre que necessrio. Agora vamos aprender como associar um boto com a macro FormataContbil.
2.17.1
Clique com o boto direito do mouse em uma das barras de ferramentas do Excel. Por exemplo, clique com o boto direito do mouse na rea cinza, ao( lado do boto ( ). No menu que exibido clique na opo Personalizar. Ser exibida a janela Personalizar. Clique na guia Comandos. Na lista de Categorias que exibida d um clique na opo Macros conforme indicado na Figura 5.11:
Figura 5.11 A opo Macros da guia Comandos. Clique no boto ( ) e arraste-o para a barra de ferramentas padro, ao lado ( boto ( esquerdo do ), conforme indicado na Figura 5.12:
Figura 5.12 Arrastando o boto que ser associado com a Macro. A janela Personalizar ser fechada e o boto ramentas padro. D um clique no boto ). ) ser adicionado barra de
Ser exibida a janela Atribuir macros. Nessa janela voc pode selecionar a macro que ser associada com o boto, isto , a macro que ser executada quando voc clicar no boto. Clique na macro FormataContbil para seleciona-la, conforme indicado na Figura 5.13. Clique em OK. Pronto, agora o boto (
( )
Figura 5.13 Associando a macro FormataContbil com o boto. Vamos testar se o boto est funcionando. Clique na clula F10. Clique no boto ).
Observe que a macro executada e as respectivas formataes so aplicadas clula F10. Isso comprova que o boto Salve e Feche a planilha. ) est associado macro FormataContbil.
Microsoft Excel Estudo Avanado Acessar a tabela Pedidos Aplicar um filtro para Pas=Brasil Exibir os dados obtidos na planilha atual formatar a primeira linha como negrito formatar a primeira linha como fonte azul Encerrar a macro
fazer clculos, consolidaes, gerar os resultados no formato de uma planilha do Excel e salvar a planilha na rede. Este apenas um pequeno exemplo do que pode ser feito como o VBA.
2.19.1
J utilizamos macros e aprendemos a automatizar algumas tarefas como a aplicao de formatos personalizados. O VBA apresenta, em relao as macros, as seguintes vantagens: Acessando dados de uma ou mais planilhas: Com aes de macros estamos limitados a operar com os registro ou com o conjunto de registros atualmente sendo exibido na pasta de trabalho atual O VBA permite trabalhar com qualquer conjunto de dados, quer seja da pasta de trabalho atual, quer seja de outra pasta de trabalho na rede ou com outros formatos de dados, como por exemplo de arquivos .txt ou bancos de dados do Microsoft Access. Manipulao de objetos : O VBA oferece mtodos de criao e modificao dos objetos de uma planilha no Excel. Chamamos de objeto qualquer elemento do Microsoft Excel, por exemplo: uma planilha, uma faixa de clulas, um grfico, etc. Criao de funes definidas pelo usurio : Este um dos maiores benefcios do VBA. Podemos criar funes que executam clculos repetitivos. Por exemplo, vrios planilhas podem conter um campo CPF ou CNPJ. Poderamos criar, em cada planilha, o cdigo necessrio para a validao do DV do CPF ou CNPJ. Porm este procedimento no o mais indicado, pois alm da duplicao do cdigo necessrio a validao, teramos dificuldades para fazer atualizaes neste cdigo, pois cada alterao necessria ter que ser feita em vrios locais. O ideal criarmos uma funo para validao do DV (uma funo deve ser criada dentro de um mdulo. Em cada planilha, onde for necessria, chamamos a funo, passando o valor do CPF como parmetro. A funo calcula o DV e retorna o resultado para a planilha. Desta maneira precisamos criar uma nica funo. Quando forem necessrias alteraes, basta alterar a funo (em um nico local, ou seja, no mdulo onde a funo foi criada) e todos os formulrios passaro a utilizar a verso atualizada da funo. Definio de condies e controle de fluxo: O VBA oferece uma variedade de comandos e estruturas para a realizao de testes condicionais e para a repetio de um conjunto de comandos. Aprenderemos a utilizar todas as estruturas de controle de fluxo e testes condicionais, mais adiante. Realizao de clculos complexos e soluo de problemas que envolvem uma lgica complexa: Com macros impossvel a realizao de clculos mais complexos, simplesmente atravs da automao de comandos de teclado e mouse. Tambm no possvel a resoluo de problemas que envolvem uma lgica complexa, como por exemplo clculo do imposto de renda, recolhimentos de tributos, etc.
Pgina 113 de 219
2.20.1
Vamos acessar o editor do VBA para alterar uma macro. Abra o Excel. Abra a Planilha com a macro. Como existem macros j criadas, o Excel pede uma confirmao, perguntando se voc deseja ativar as macros existentes, conforme indicado na Figura 5.14. Essa confirmao solicitada devido ao perigo representado pelos vrus de Macro, que podem afetar os aplicativos do Microsoft Office. Clique no boto Ativar Macros. A planilha ser aberta.
Pgina 114 de 219
Nessa planilha existe uma macro chamada AtivaNegrito. Vamos editar essa macro. O nosso objetivo conhecer alguns detalhes sobre o Editor do VBA.
Figura 5.14 Confirmao para ativao de macros, na abertura da planilha. Selecione o comando Ferramentas -> Macro -> Macros... Ser exibida a janela Macro. Clique na macro para selecion-la. Clique no boto Editar. Ser aberto o editor do VBA e o cdigo associado macro. Na Figura 5.15 temos a descrio de algumas partes da janela do editor VBA.
Figura 5.15 O Editor VBA. No lado esquerdo da tela temos duas janelas: Project VBA Project: Nessa janela so exibidos os vrios elementos que fazem parte da Pasta de trabalho atual. Aqui so exibidas as planilhas e mdulos da pasta de trabalho (arquivo .xls) carregado no Excel. Ao criarmos uma macro podemos cri-la em uma determinada planilha. Os mdulos so utilizados para criar funes e procedimentos que podem ser chamados em todas as planilhas da pasta de trabalho atual. Aprenderemos mais sobre funes e procedimentos nas prximas lies. Janela na parte de baixo: A janela abaixo da janela Project, exibe as propriedades do elemento selecionado na janela Project. Por exemplo, ao selecionar Plan1, na janela Project, na janela de baixo sero exibidas as propriedades de Plan1, conforme indicado na Figura 5.16:
Agora vamos iniciar o estudo de uma srie de comandos e conceitos bsicos da linguagem VBA. Esses comandos sero utilizados nas lies do Mdulo 6, onde apresentaremos alguns exemplos prticos do uso do VBA para soluo de problemas com o Excel. Iniciaremos o nosso estudo de VBA pela definio do conceito de variveis a aprendendo a declarar variveis no VBA.
2.21.1
Uma varivel um espao na memria do computador, reservado para armazenar um ou mais valores. Fazemos referncia a este espao utilizando nomes. Como o valor armazenado pode variar, a medida que o cdigo VBA executado, estas estruturas so chamadas de variveis. No VBA, no obrigatrio a declarao de variveis. Porm recomendvel que declaremos todas as variveis, de tal forma que o cdigo fique mais claro e de fcil compreenso. Para declararmos uma varivel, utilizamos o comando Dim, conforme exemplificado abaixo:
Dim x Dim nome Dim teste
Neste caso estamos apenas declarando o nome da varivel, sem declarar de que tipo (texto,inteiro, data, etc) a varivel. Uma varivel declarada sem tipo considerada do tipo Variant, o que na prtica significa que a varivel pode conter qualquer tipo de valor. Pode parecer uma prtica interessante a no declarao do tipo da varivel, porm isso altamente desaconselhvel. Se no declararmos o tipo, conforme descrito anteriormente, a varivel poder conter qualquer valor. Neste caso o que impede de um campo numrico conter valores de texto ou viceversa. A sintaxe para o comando Dim
Dim nome_da_varivel As tipo_da_varivel
Tambm podemos declarar mais do que uma varivel, com um nico comando Dim. Para isto, basta separar as variveis, com vrgula, conforme exemplificado abaixo:
Dim x,y,z As String Dim nome as Double Dim teste1, teste2 As Integer
Observe que definimos o tipo de cada varivel. O Tipo define quais dados podem ser armazenados em uma varivel. Por exemplo, variveis que armazenam valores numricos, no devem aceitar caracteres de texto. Variveis que armazenam datas, no devem aceitar datas invlidas, como por exemplo
Pgina 117 de 219
30/02/2001. Toda varivel no VBA, do tipo Variant, isto significa que a varivel pode ser de qualquer tipo. O que define o tipo da varivel o valor que est armazenado no momento. Existem funes que converso de tipo, conforme veremos mais adiante. Tambm podemos utilizar variveis que no foram, explicitamente, declaradas com o comando Dim. Com isso, a varivel criada na memria, no momento da sua utilizao. Para fazer com que toda varivel tenha que ser, explicitamente, declarada, antes de ser utilizada, devemos utilizar o seguinte comando na seo de declarao do mdulo:
Option Explicit
Ao colocarmos este comando na seo de declarao do mdulo, estamos definindo que toda varivel deve ser declarada, antes de ser utilizada em uma expresso. Se tentarmos utilizar uma varivel no declarada, ser gerado um erro de compilao e a execuo dos comandos suspensa. Na Listagem 1, temos um exemplo simples de utilizao de variveis no declaradas explicitamente.
2.21.2
b=2 c=a+b
Ao tentarmos executar este cdigo, tendo sido definida a opo "Option Explicit", obteremos a mensagem de erro indicada na prxima figura. Este erro acontece porque tentamos utilizar uma varivel c, varivel esta que no foi declarada.
Erro O tipo Variant formado de pequenas unidades, chamadas subtipos. Cada subtipo, identifica de que maneira os dados so armazenados em uma varivel do tipo Variant Por exemplo, variveis do subtipo Integer so armazenadas de uma maneira diferente de variveis do subtipo Long. Na Tabela a seguir temos uma descrio dos principais subtipos. Subtipos do tipo Variant disponveis no VBA
Empty
O Valor zero para variveis numricas ou uma String de tamanho zero ( ), para variveis de texto. A varivel no contm dados vlidos.
Null Contm variveis que somente podem valores:Verdadeiro ou Falso (True ou False). assumir dois
Boolean
Byte
Integer Valores na faixa de 923.337.203.685.447,5808 at 922.337.203.685.447,5807 Long Valor inteiro, na faixa de 2.147.483.648 at 2.147.483.647. um nmero que representa a data entre 01 de Janeiro do ano 100, at 31 de Dezembro de 9999 (Olha o bug do ano 10000 chegando). Texto de tamanho varivel, pode conter, aproximadamente, 2 bilhes de caracteres. Pode conter um objeto qualquer, como um Controle Activex, ou um Objeto COM+ Pode conter um nmero de erro.
Currency
Date(Time)
String
Object Error
Antes de fazermos alguns exemplos prticos, vamos aprender um pouco mais sobre o uso de variveis no VBA. Vamos falar sobre operadores aritmticos e de comparao. Mas isso j assunto para a prxima lio .
2.22.1
Podemos realizar clculos no VBA, utilizamos operadores aritmticos. Na Tabela a seguir, temos uma descrio dos operadores que podemos utilizar: Operadores Aritmticos do VBA:
Operador +
Significado
Adio (3+3).
Multiplicao (3*3).
Diviso (3/3).
Porcentagem (20%).
Para que possamos estudar os operadores de comparao, vamos apresentar uma das estruturas de controle mais simples que existem no VBA, a estrutura If Then Else. Abaixo temos um exemplo do funcionamento da estrutura If Then Else:
2.23.1
If x>y Then
If Then Else
Comandos a serem executados quando x for maior do que y Comando 1 Comando 2 Comando n Else Comandos a serem executados quando x for menor ou igual a y Comando 1 Comando 2 Comando n End If
Conforme podemos ver, a estrutura If Then Else, bastante simples. Fazemos um teste no incio da estrutura. Se o valor do teste for verdadeiro, executamos os comandos na seqncia, caso contrrio, executamos os comandos aps o Else. Note que utilizamos o operador de comparao maior do que: > , no caso x>y , estamos testando se x maior do que y. Logo em seguida apresentaremos detalhes sobre os operadores de comparao disponveis no VBA. Podemos utilizar laos If Then Else mais complexos, como os do exemplo:
If x>y Then Comandos a serem executados quando x for maior do que y Comando 1 Comando 2 ... Comando n ElseIf x=y Then Comandos a serem executados quando x for igual a y Comando 1 Pgina 122 de 219
Microsoft Excel Estudo Avanado Comando 2 ... Comando n Else Comandos a serem executados quando x for menor do que y Comando 1 Comando 2 ... Comando n End If
Podemos utilizar tantos ElseIf, quantos forem necessrios. Cada ElseIf utilizado para fazer um teste adicional. Na Tabela a seguir temos uma descrio dos operadores de comparao.
2.23.2
Operador >
Descrio
Maior
>=
Igual
<>
Diferente
<
Menor
<=
Menor ou igual
>=
O uso de Operadores de comparao, amplia o leque de possibilidades para nossos programas em VBA. Devemos ter alguns cuidados quando comparamos variveis que possuem valores de tipos diferentes, como por exemplo, nmero e texto. A Tabela a seguir descreve o que acontece, quando comparamos variveis com valores de tipos diferentes.
O escopo de uma varivel, define em que partes do cdigo a varivel pode ser utilizada. Em VBA, podemos ter os seguintes escopos para as variveis: Escopo de Mdulo: Uma varivel declarada dentro do Mdulo (um mdulo pode conter um ou mais procedimentos ou funes, cada procedimento funo comea com um Sub ou Function e termina com um End Sub ou End Function, respectivamente. Veremos mais sobre funes e procedimentos, nas prximas lies), mas fora de qualquer Procedimento. Com isso a varivel pode ser utilizada dentro de todo o bloco de cdigo do Mdulo, inclusive dentro dos Procedimentos, caso exista algum. Um mdulo de uma planilha pode conter uma ou mais macros, sendo que cada macro um procedimento, isto , inicia com um Sub e termina com um End Sub. Tudo o que estiver entre Sub e End Sub, faz parte da respectiva macro. Uma varivel declarada ao nvel de Mdulo, existe enquanto o Mdulo estiver sendo executado.So as variveis declaradas na seo de Declaraes do Mdulo. Uma varivel declarada ao nvel de Mdulo, poder ser utilizada em todos os procedimentos/funes do mdulo, isto , em todas as macros que fazem parte do respectivo mdulo.
2.24.2
A varivel somente pode ser utilizada, dentro do procedimento onde esta declarada. Aqui o conceito de procedimento praticamente se confunde com o de macro, ou seja, cada macro criada como um procedimento separado, dentro do mdulo de cdigo da planilha. Se tentarmos utilizar a varivel fora do procedimento onde a ela foi declarada, no teremos acesso ao valor da varivel. Uma varivel declarada ao nvel de procedimento, existe enquanto o procedimento estiver sendo executado. Nota Um procedimento um bloco de cdigo que pode ser chamado em qualquer ponto do Mdulo. Ao chamarmos um procedimento, a execuo deslocada para dentro do procedimento. Aps concludo o procedimento, a execuo segue com a linha seguinte
Pgina 124 de 219
que chamou o procedimento. Veremos maiores detalhes sobre procedimentos e funes nas prximas lies
Vamos considerar alguns trechos de cdigo para entendermos melhor este conceito de escopo de uma varivel. Considere o seguinte trecho de cdigo, dentro de um mdulo VBA de uma planilha do Excel:
Seo geral do mdulo. Variveis declaradas nessa seo tem o escopo de mdulo, isto , podem ser utilizadas em qualquer procedimento dentro do mdulo. Dim x, y,aux1 As Integer Call proc1 ' Agora vamos tentar utilizar os valores de a e b ' Fora do procedimento proc1. ' Observe que a varivel aux1 no calculada ' corretamente, uma vez que os valores de a e b ' no esto disponveis, fora do procedimento proc1 Aux1 = a + b MsgBox "aux1= " & Aux1 'Agora vamos criar um procedimento 'E declarar duas variveis dentro deste procedimento. 'Estas variveis somente sero visveis, 'Dentro deste procedimento. Sub proc1() Dim a, b x=10 y=20 a=5 b=7 MsgBox "x= " & x & " y= " & y & " a= " & a & " b= " & End Sub
O comando Call faz o chamado ao procedimento proc1. Este procedimento deve ser definido no mesmo mdulo, caso contrrio um erro ser gerado. Ao encontrar esse comando o Excel desloca a execuo para o procedimento proc1, executa os comandos deste procedimento e aps encerrar continua a execuo a partir do comando seguinte ao comando Call. Ao executar esse cdigo ser exibida a janela indicada na Figura a seguir:
O comando Call Proc1 executado. O excel executa os comandos dentro de Proc1. As variveis x e y foram declarados com escopo de mdulo, por isso podem ser utilizadas corretamente dentro do procedimento Proc1, embora no tenham sido declaradas dentro desse procedimento. As variveis x e y tem escopo de mdulo, ou seja, podem ser utilizadas em qualquer procedimento, dentro do mdulo. Os valores definidos para x e y, dentro do procedimento Proc1, permanecero disponveis, mesmo se usarmos x e y em outros procedimentos desse mdulo. Como a e b esto declaradas dentro de Proc1, o seu escopo est ativo, isso , o Excel tem acesso aos valores de a e b. Porm observe que x e y apresentam valores nulos. Isso ocorre porque a e b foram declarados. Por isso os valores de a e b tambm so exibidos corretamente. Agora vamos fazer uma tentativa de usar as variveis a e b fora do procedimento Proc1. Como elas foram declaradas dentro de Proc1, somente so visveis, isto , mantm o seu valor quando Proc1 estiver sendo executada. Fora de Proc1, as variveis a e b tero valores nulos, conforme comprovaremos logo a seguir: D um clique no boto OK. Ser exibida a janela indicada na figura a seguir:
Como possvel se aux1= a + b e a=5 e b=7, logo aux1 deveria ser igual a 12. O que est acontecendo?? Observe que o valor da varivel aux1 (foi calculado incorretamente), pois a varivel aux1 depende dos valores de "a" e "b". Como as variveis a e b foram declaradas dentro do procedimento Proc1, elas no podem ser acessadas de fora do procedimento proc1, ou seja, aps a execuo do procedimento ter sido encerrada. D um clique no boto OK e mantenha a planilha aberta. Com esse exemplo, foi possvel verificar, na prtica, o conceito de escopo (algumas vezes chamado de visibilidade) das variveis. Na prxima lio, trataremos das Estruturas e laos de controle, que so elementos muito importantes na criao de programas VBA.
Pgina 126 de 219
2.24.3
A estrutura Select...Case
Quando precisamos realizar uma srie de testes, mais eficiente utilizarmos uma nica estrutura Select...Case , do que utilizarmos uma srie de testes utilizando a estrutura If...Then...ElseIf . O funcionamento da estrutura Select...Case, bastante intuitivo.
A estrutura Select Case x , vai testar o valor de x. Em cada um dos Case, o valor de x est sendo testado. Quando for encontrado um valor coincidente com o de x, os comandos abaixo deste Case sero executados. No nosso exemplo, o comando MsgBox X vale 10 ! , abaixo de Case 10, ser executado. O comando abaixo do Case Else somente ser executado, se todos os testes anteriores falharem. O uso da estrutura Select...Case, torna o cdigo mais eficiente e de mais fcil leitura. Na prxima lio veremos mais algumas estruturas de controle, disponveis no VBA.
Em determinadas situaes, precisamos repetir um ou mais comandos, um nmero especfico de vezes, ou at que uma determinada condio torne-se verdadeira ou falsa. Por exemplo, pode ser que haja a necessidade de percorrer todos os registros de uma determinada tabela, at que o ltimo registro seja alcanado. Para isso, utilizamos as chamadas estruturas de repetio, ou Laos. A partir de agora, aprenderemos as estruturas de repetio disponveis.
2.25.2
A estrutura For...Next.
Utilizamos o lao For...Next, para repetir um segmento de cdigo, um nmero determinado de vezes. Utilizamos esta estrutura, quando j sabemos o nmero de vezes que uma determinada seo de cdigo deve ser repetida. Neste tipo de estrutura, normalmente, utilizamos uma varivel como contador. Este contador varia de um valor inicial at um valor final. O Formato geral desta estrutura o seguinte:
For contador = inicio to fim incremento Comando1 Comando2 Comandon Next
No incio a varivel contador tem o valor definido. Em cada passagem do lao, a varivel contador incrementada pelo valor definido em incremento. Caso no seja definido o incremento, ser utilizado o padro 1. Considere o exemplo a seguir:
Dim x x=10 Soma=0 Faz a soma For i=1 to x Soma = Soma +i Next MsgBox Valor da Soma = & Soma dos 10 primeiros nmeros maiores do que zero
Neste exemplo, a varivel i inicia com o valor 1. Em cada passo, o valor de i acrescentado varivel Soma. Como o incremento no foi definido, ser utilizado o padro que 1. Com isso, ao final do lao For...Next, a varivel Soma, ter armazenado o valor da soma dos 10 primeiros nmeros inteiros. Poderamos utilizar um valor de incremento diferente de 1, para, por exemplo, obter a soma somente dos nmeros mpares menores do que 10:
Dim x x=10 Soma=0
resultado
2.25.3
A estrutura Do...Loop
Esta estrutura pode ser utilizada para repetir um trecho de cdigo, enquanto uma determinada condio for verdadeira, ou at que uma determinada condio torne- se verdadeira . Podemos utilizar dois operadores condicionais diferentes: While ou Until . Os operadores While ou Until, podem ser utilizados de duas maneiras diferentes: No incio do lao, ou no final do lao. Com isso temos quatro situaes distintas, vamos analisar cada uma delas, a partir de agora.
2.25.4
Neste caso, estamos utilizando o operador condicional While, no incio do lao. O formato geral, neste caso o seguinte:
Do While condio/teste Comando1 Comando2 Pgina 129 de 219
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado . Quando a condio tornar-se falsa, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for falsa j na primeira vez, o lao no ser executado nenhuma vez. O Cdigo dentro do lao deve ser capaz de alterar a condio para que essa se torne Falsa, pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos. Considere o exemplo a seguir:
Dim x x=10 Contador=1 Soma=0 ' Faz a soma dos 10 primeiros nmeros maiores do que zero Soma = Soma + Contador Contador = Contador + 1
Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio do lao torna-se falso, e o lao encerrado.
2.25.5
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no final, e continuar sendo executado, enquanto a condio for verdadeira. O formato geral, neste caso o seguinte:
Do Comando1 Comando2 ... Comandon Loop While condio/teste
Nesta estrutura, enquanto a condio for verdadeira, o cdigo dentro do lao executado. Quando a condio tornar-se falsa, o primeiro comando aps o final
Pgina 130 de 219
do lao, ser executado. Neste caso, se a condio for falsa j na primeira vez, o lao ser executado uma nica vez. O Cdigo dentro do lao deve ser capaz de alterar a condio para Falso, quando for necessrio, pois caso contrrio a condio ser sempre verdadeira, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos. Considere o exemplo a seguir:
Dim x x=10 Contador=1 Soma=0 Faz a soma dos 10 primeiros nmeros maiores do que zero Do Soma = Soma + Contador Contador = Contador + 1 Loop While Contador <= x MsgBox Valor da Soma = & Soma
Muito simples. A condio Contador < x falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade dentro do lao, antes do teste ser realizado). Neste caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao. Quando o lao executado, atribudo o valor 11 para a varivel Soma. Com isso, o valor exibido para a varivel Soma, ser 11.
2.25.6
Neste caso, estamos utilizando o operador condicional Until, no incio do lao. O formato geral, neste caso o seguinte:
Do Until condio Comando1 Comando2 ... Comandon Loop
Nesta estrutura, enquanto a condio for falsa, o cdigo dentro do lao executado. Quando a condio tornar-se verdadeira, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for verdadeira, j na primeira vez, o lao no ser executado nenhuma vez. O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos. Considere o exemplo a seguir:
Dim x x=10 Contador=1 Soma=0 Faz a soma dos 10 primeiros nmeros maiores do que zero
Do Until Contador > x Soma = Soma + Contador Contador = Contador + 1 Loop MsgBox Valor da Soma = & Soma Pgina 132 de 219
Observe que dentro do lao, vamos Incrementando o valor da varivel Contador, uma unidade para cada passagem do lao. Com isso, quando o valor de Contador, atingir 11, o teste do incio do lao torna-se Verdadeiro, e o lao encerrado.
2.25.7
Neste caso, deslocamos o teste de condio para o final do lao. Com o teste no final do lao, o cdigo dentro do lao, ser executado, pelo menos uma vez, pois o teste somente feito no final, e continuar sendo executado, enquanto a condio for Falsa. O formato geral, neste caso o seguinte:
Do Comando1 Comando2 ... Comandon Loop Until condio
Nesta estrutura, enquanto a condio for Falsa, o cdigo dentro do lao executado. Quando a condio tornar-se Verdadeira, o primeiro comando aps o final do lao, ser executado. Neste caso, se a condio for Verdadeira, j na primeira vez, o lao ser executado uma nica vez. O Cdigo dentro do lao deve ser capaz de tornar a condio Verdadeira, quando for necessrio, pois caso contrrio a condio ser sempre Falsa, e os comandos dentro do lao ficaro em execuo, infinitamente, ou at o programa travar. A criao de laos infinitos, devido a erros de programao, uma causa comum de erros e travamentos. Considere o exemplo a seguir:
Dim x x=10 Contador=1 Soma=0 Faz a soma Do Soma = Soma + Contador Contador = Contador + 1 Pgina 133 de 219 dos 10 primeiros nmeros maiores do que zero
Microsoft Excel Estudo Avanado Loop Until Contador > x MsgBox Valor da Soma = & Soma
Qual o valor ser exibido para a varivel Soma? Muito simples. A condio Contador>= x falsa, pois x=10 e Contador=12 (Lembre que o Contador foi incrementado de uma unidade, na linha 11, na primeira passagem do lao). Neste caso, o lao ser executado uma nica vez, pois o teste de condio est no final do lao. Quando o lao executado, atribudo o valor 11 para a varivel Soma. Com isso, o valor exibido para a varivel Soma, ser 11.
2.26.1 varivel.
Existem diversas funes, que permitem que seja determinado o tipo de valor contido em uma varivel. Existem diversas aplicaes para este tipo de funo. Por exemplo, ao digitar dados em um formulrio do Excel (no curso sobre Programao VBA e Criao de Aplicativos com o Excel, aprenderemos a criar formulrios), podemos utilizar uma funo para determinar se os valores digitados pelo usurio, no apresentam problemas. Por exemplo, o usurio pode ter digitado, por engano, texto em um campo que deve conter valores numricos.
2.26.2
A funo IsArray.
Um Array um tipo especial de varivel, a qual pode armazenar diversos valores em uma nica varivel. De uma forma simples, um Array um conjunto ou como aprendi nos bons e velhos tempos da faculdade de Engenharia Eltrica na UFSM: Um vetor. Por exemplo, poderamos ter uma varivel Array na qual so armazenados todos os cdigos de tributo, vlidos para o recolhimento de impostos. Cada valor armazenado no Array um elemento do conjunto. Um outro exemplo: Poderamos criar um Array para armazenar os nomes dos meses do ano. Com isso teramos um Array de 12 elementos. Cada elemento de um Array, acessado atravs do nome da varivel Array e de um ndice. O ndice inicia em zero e no em um . Por isso se tivermos um Array de 10 elementos, teremos o elemento 0, o elemento 1, o elemento 2, e assim por diante, at o elemento 9. O fato do ndice comear com 0, influencia na hora que formos declarar um Array. Para declarar um Array chamado produtos, com 20 elementos, utilizaramos o seguinte comando:
Dim produtos(19)
O 19 significa que temos 20 elementos (sempre um a mais do que o nmero que aparece na declarao), isto , do elemento 0, indicado por produtos(0), at o elemento 20, indicado por produtos(19). No exemplo a seguir, temos um exemplo simples de utilizao de Array:
'Declara um Array de 7 posies 'Como a primeira posio a posio zero, Pgina 135 de 219
Microsoft Excel Estudo Avanado 'Indicamos o tamanho como 6, o que significa 'da posio 0 at a posio 6 = 7 elementos. Dim Dias(6) 'Atribumos valores para os dias da semana Dias(0)= Dias(1)= Dias(2)= Dias(3)= Dias(4)= Dias(5)= Dias(6)= "Segunda-feira" "Tera-feira" "Quarta-feira" "Quinta-feira" "Sexta-feira" "Sbado" "Domingo"
'Agora utilizamos um lao For...Next 'Para criar uma String, com o contedo
'Do Array Dias. For i=0 to 6 mensagem = mensagem & "Dia: " & i+1 & " " & Dias(i)& chr(13) Next 'Utilizamos uma MsgBox, para exibir a mensagem 'com o contedo do Array Dias. MsgBox mensagem
caixa com o resultado Utilizamos a funo IsArray, para determinar se uma varivel do tipo Variant (lembre que todas as variveis do VBA, so do tipo Variant), est armazenando um Array. Utilizamos a seguinte sintaxe:
IsArray(NomeDaVarivel)
A funo IsArray retorna verdadeiro se a varivel for um Array, e falso caso contrrio.
Pgina 136 de 219
Vamos alterar um pouco o exemplo anterior, adicionando o seguinte comando, ao final da listagem.: MsgBox IsArray(Dias) o resultado seria o indicado na Figura a seguir:
resultado
2.26.3
A funo VarType.
Podemos utilizar a funo VarType, para determinar o subtipo de uma varivel. Como todas as variveis so do tipo Variant, o subtipo pode ser utilizado para determinar o tipo de dado armazenado na varivel. Passamos para a funo, o nome de uma varivel ou expresso. A funo retorna um nmero inteiro que indica o subtipo da varivel. A sintaxe da funo a seguinte:
VarType(NomeDaVarivel)
ou
VarType(expresso)
Valor 0
Descrio
Inteiro
Monetrio
Data
Objeto de automao
10
Erro
11
Boleano
12
13
17
Byte
8192
Microsoft Excel Estudo Avanado mensagem = "Tipo da varivel x: " & Vartype(x) & Chr(13) mensagem = mensagem & "Tipo da varivel y: " & Vartype(y) & Chr(13) mensagem = mensagem & "Tipo da varivel z: " & Vartype(z) & Chr(13) mensagem = mensagem & "Tipo da varivel a: " & Vartype(a) & Chr(13) mensagem = mensagem & "Tipo da varivel b: " & Vartype(b) & Chr(13) mensagem = mensagem & "Tipo da varivel c: " & Vartype(c) & Chr(13) MsgBox mensagem
Resultado Observe, principalmente, no tipo da varivel z, o qual retornou 0. Isto significa que a varivel z est vazia, ou seja, no foi inicializado. Este resultado est coerente com a Tabela anterior. Tambm podemos salientar o retorno para a varivel b, o qual retornou 7, indicando que o valor armazenado nesta varivel do tipo Data, o que tambm est coerente com a Tabela anterior, uma vez que usamos a funo Date() , para armazenar a data do sistema, na varivel b. Finalmente observe o valor de retorno para a varivel c, o qual retornou 8192, indicando que a varivel c um Array. Este resultado est coerente com a Tabela anterior, e com a declarao: Dim c(20), a qual declarou a varivel c como sendo um Array. Muitas so as aplicaes prticas para a funo VarType, dentre as quais podemos destacar a validao dos dados digitados em um formulrio.
A funo IsDate recebe uma varivel ou expresso como argumento, e determina se a varivel ou expresso uma data vlida, ou pode ser convertida para uma data vlida. Caso o argumento passado seja uma data vlida, a funo retorna Verdadeiro, caso contrrio,retorna Falso. Podemos utilizar esta funo, por exemplo, para verificar se o usurio digitou uma data vlida, em um campo de um formulrio.
Pgina 139 de 219
ou
IsDate(expresso)
2.27.2
A funo IsEmpty.
A funo IsEmpty recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo algum valor para a varivel ou expresso. Caso tenha sido atribudo algum valor, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Podemos utilizar esta funo, por exemplo, para verificar se um campo de digitao obrigatria, como por exemplo o nome, no foi deixado em branco. A sintaxe da funo IsEmpty a seguinte:
IsEmpty(NomeDaVarivel)
ou
IsEmpty(expresso)
A seguir temos um exemplo de utilizao da funo IsEmpty. Vamos declarar uma varivel x, que nunca Ser utilizada no nosso Script Dim a, b, c Dim x a=10 b=23 c=a+b If IsEmpty(x) Then
Pgina 140 de 219
MsgBox "A varivel x, no foi utilizada !" End If A varivel x foi declarada porm no foi inicializada, com isso est vazia, logo a funo IsEmpty(x) ir retornar Verdadeiro.
2.27.3
A funo IsNull
A funo IsNull recebe uma varivel ou expresso como argumento, e determina se, em algum momento, foi atribudo o valor Null para a varivel ou expresso. Caso tenha sido atribudo o valor Null, a funo retorna Verdadeiro, caso contrrio, retorna Falso. Para atribuirmos Null para uma varivel, utilizamos a seguinte sintaxe:
NomeDaVarivel = Null
Uma varivel com valor Null, no a mesma coisa que uma varivel com valor zero, ou uma varivel de texto com tamanho zero. Quando atribudo o valor Null para a varivel, esta continua existindo na memria, porm sem nenhum valor definido. A sintaxe da funo IsNull a seguinte:
IsNull(NomeDaVarivel)
ou
IsNull(expresso)
Resultado.
2.27.4
A funo IsNumeric.
A funo IsNumeric recebe uma varivel ou expresso como argumento, e determina se o valor atribudo varivel ou expresso numrico, ou pode ser convertido para numrico. Caso o valor seja numrico, ou possa ser convertido, a funo retorna Verdadeiro, caso contrrio, retorna Falso. A sintaxe da funo IsNumeric a seguinte:
IsNumeric(NomeDaVarivel)
Cabe salientar a utilizao da funo Date(), para capturar a data do sistema, e atribuir esta data varivel z. Observe que esta data no foi considerada um valor numrico para a funo IsNumeric.
2.28.1
Funo Cbool
A funo Cbool converte uma varivel ou resultado de um expresso, para o subtipo Boolean. Qualquer nmero, com exceo do zero, automaticamente convertido para Verdadeiro. O valor zero sempre convertido para Falso. O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro em tempo de execuo. Observe este linha de cdigo:
MsgBox cbool(10>25) & chr(13) & cbool(3)
Resultado A expresso 10>25 avaliada, como a expresso falsa, a funo Cbool retorna Falso. J no segundo uso da funo Cbool, foi passado o parmetro 3 para a funo. Qualquer valor diferente de zero (com exceo de texto), a funo interpreta como Verdadeiro, o que comprovado pela Figura anterior.
2.28.2
Funo CByte
A funo CByte converte uma varivel ou resultado de um expresso, para o subtipo Byte. O valor a ser convertido, deve estar na faixa aceitvel para o tipo byte, que vai de 0 255. Caso o nmero esteja fora desta faixa, ser gerada uma mensagem de erro, em tempo de execuo. O argumento desta funo, no pode
Pgina 143 de 219
ser Texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:
MsgBox CByte(10+34) & chr(13) & CByte(35)
Resultado. A expresso 10+34 calculada, e o resultado (44), convertido para o tipo byte. A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, pois o valor a ser convertido para byte, est fora da faixa de 0 255.
MsgBox CByte(100+200)
Erro gerado.
2.28.3
Funo CCur
A funo CCur converte uma varivel ou resultado de um expresso, para o subtipo Currency (semelhante ao formato Moeda, porm sem o smbolo do real: R$). O argumento desta funo, no pode ser Texto, caso contrrio ser gerado um erro. Observe este linha de cdigo:
MsgBox CCur(250.335677+324.3333) & chr(13) & CCur(1250.326582)
Resultado. A expresso 250.335677+324.3333 calculada, e o resultado convertido para o tipo Currency. Se passarmos um argumento de texto para a funo CCur, ser gerado um erro de execuo, conforme indicado na Figura a seguir:
Erro
2.28.4
Funo CDate
A funo CDate converte uma varivel ou resultado de um expresso, para o subtipo Date. O argumento desta funo deve estar em um formato que seja aceitvel para datas, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:
MsgBox CDate(31/10/1980) & chr(13) & CDate(23-01-2007)
Resultado. A linha de cdigo abaixo, ir gerar uma mensagem de erro, em tempo de execuo, conforme indicado na prxima figura:
MsgBox CDate(31/02/1980)
Erro.
2.28.5
Funo CDbl
A funo CDbl converte uma varivel ou resultado de um expresso, para o subtipo Double. O tipo Doubl utilizado para nmeros grandes com casas decimais. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo: MsgBox CDbl("4.940651247E-17") Esta linha gera a mensagem indicada na Figura a seguir:
Resultado.
2.28.6
Funo CInt
A funo CInt converte uma varivel ou resultado de um expresso, para o subtipo Integer. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:
MsgBox CInt(32.36) & Chr(13) & CInt(20.35+40.45)
Resultado.
2.28.7
Funo CLng
A funo CLng converte uma varivel ou resultado de um expresso, para o subtipo Long. O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Long, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:
MsgBox CLng("3462315")
Resultado
2.28.8
Funo CSng
A funo CSng converte uma varivel ou resultado de um expresso, para o subtipo Single.
Pgina 147 de 219
O argumento desta funo no pode ser do tipo texto, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. O argumento tambm no pode estar fora da faixa admitida pelo subtipo Single, caso contrrio ser gerada uma mensagem de erro, em tempo de execuo. Observe este linha de cdigo:
MsgBox CSng("3.1418256927")
Resultado
2.28.9
Funo CStr
A funo CStr converte uma varivel ou resultado de um expresso, para o subtipo String. Observe este linha de cdigo:
MsgBox CStr("12345" & " hectares de terra")
Resultado.
2.28.10
Funo Int
A funo Int retorna somente a parte inteira de um determinado nmero. A linha de cdigo a seguir:
MsgBox Int(-7.35) & Chr(13) & Int(10.35)
Resultado. Com isso, terminamos a nossa apresentao sobre as principais funes para a converso de tipos de dados. Na prxima lio, analisaremos mais algumas funes do VBA, para operaes com dados do tipo String e do tipo Data/Hora.
2.29.1
Funo Asc
A funo Asc, retorna o valor numrico do cdigo ASCII, para a primeira letra de uma String. Considere o exemplo:
Asc(Ainda chovia)
Este exemplo de uso da funo retorna o valor 65, o qual o cdigo ASCII, para a letra A maiscula. Caso fosse a letra "a" minscula, o cdigo retornado seria 97 e assim por diante.
2.29.2
Funo Chr
A funo Chr(nmero), recebe um nmero como parmetro, e retorna o caractere ASCII, associado ao nmero passado como parmetro. Considere o exemplo:
Chr(65)
Este exemplo de uso da funo retorna o caractere "A" maisculo. At agora, utilizamos a funo Chr em diversos exemplos. Utilizamos o Chr(13), para simular um ENTER, o que faz uma quebra de linha, nas mensagens montadas com o MsgBox.
2.29.3
Funo Len
Esta funo determina o tamanho da String que foi passada como parmetro para a funo. Considere o exemplo:
MsgBox Len(Este um exemplo de uso da funo Len !)
Este exemplo de uso da funo, retorna 41, conforme indicado na Figura a seguir:
Fgiura x.x Resultado. importante observar que os espaos em branco tambm contam para o tamanho da string.
2.29.4
Funo LCase
Esta funo converte para minsculas, a String que foi passada como parmetro para a funo. Considere o exemplo:
MsgBox Lcase(ESTE UM EXEMPLO DE USO DA FUNO LCASE!)
Este exemplo de uso da funo, converte o parmetro passado, para letras minsculas, conforme indicado na Figura a seguir:
Resultado.
2.29.5
Funo UCase
Esta funo converte para MAISCULAS, a String que foi passada como parmetro para a funo. Considere o exemplo: MsgBox Lcase(este um exemplo do uso da funo ucase !) Este exemplo de uso da funo, converte o parmetro passado, para letras maisculas, conforme indicado na Figura a seguir:
2.29.6
Funo Left
Esta funo retorna um nmero especificado de caracteres, a partir do incio (Left Esquerda) de uma String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte:
Left(String, n)
Este exemplo de uso da funo, retorna as cinco primeiras letras da String passada, neste caso, retornar Gabriel. Vamos alterar um pouco o nosso exemplo:
MsgBox Left(Gabriel Otvio,9)
2.29.7
Funo Right
Esta funo retorna um nmero especificado de caracteres, a partir do final (Right Direita) de uma String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Right(String, n) Onde n o nmero de caracteres a retornar. Considere o exemplo:
MsgBox Right(Gabriel Otvio,6)
Este exemplo de uso da funo, retorna as seis ultimas letras da String passada, neste caso, retornar Otvio. Vamos alterar um pouco o nosso exemplo:
MsgBox Right(Jlio Cesar Fabris Battisti,8)
2.29.8
Funo Mid
Esta funo retorna um nmero especificado de caracteres, a partir de uma posio especificada, dentro da String. importante salientar que espaos em branco tambm devem ser considerados. O formato geral da funo o seguinte: Mid(String, posicao_inicio, n) Onde: posicao_inicio a posio a partir da qual devem ser retornados caracteres n o nmero de caracteres a retornar. Considere alguns exemplos:
Mid(Gabriel Otvio,8,6)
Este exemplo de uso da funo, retorna, a partir da posio 7, 5 caracteres, neste caso, retornar Otvio.
Mid(SANTA MARIA,3,7)
ir retornar NTA MAR. Observe que o espao em branco tambm considerado. Um detalhe interessante, que podemos utilizar o valor retornado por uma funo, como parmetro para outra funo. Considere o seguinte exemplo:
LCase(Mid(SANTA MARIA,3,7))
Este exemplo retorna nta mar. A funo Mid retira os caracteres NTA MAR, os quais so passados como parmetros para a funo LCase, a qual converte os caracteres para minsculos.
2.29.9
Funo String
Esta funo retorna um determinado caractere, um nmero especificado de vezes. O formato geral da funo o seguinte:
String(n, Caracter)
Onde n o nmero de vezes que Caractere deve ser repitido. Considere o exemplo:
MsgBox String(35,*) Pgina 152 de 219
2.30.1
Funo Date
Retorna a data corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo:
MsgBox Data do Sistema: & Date()
Resultado.
2.30.2
Funo Time
Retorna a hora corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo:
MsgBox Hora do Sistema: & Time( )
Resultado.
2.30.3
Funo Day
Recebe como parmetro uma data, e retorna um nmero entre 1 e 31, indicando o dia do ms. O formato geral o seguinte:
Day(data)
O resultado deste comando, est indicado na Figura a seguir: A funo Date() captura a data do sistema e passa como parmetro para a funo Day, a qual por sua vez, retorna apenas o dia do ms.
Resultado.
2.30.4
Funo Month
Recebe como parmetro uma data, e retorna um nmero entre 1 e 12, indicando o ms do ano. O formato geral o seguinte:
Month(data)
Resultado. A funo Date() captura a data do sistema e passa como parmetro para a funo Month, a qual por sua vez, retorna apenas o ms do ano
2.30.5
Funo Now
Retorna a hora e a data corrente do sistema. No precisamos passar parmetros para esta funo. Considere o exemplo abaixo:
MsgBox Data e Hora do Sistema: & Now( )
Resultado
2.30.6
Funo MonthName
Recebe como parmetro um nmero, indicativo do ms do ano (1 Janeiro, 2 Fevereiro, e assim por diante), e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do ms ser exibido abreviadamente. O formato geral o seguinte:
MonthName(nmero_do_ms, abreviar)
Resultado.
Pgina 155 de 219
2.30.7
Funo Hour
Recebe como parmetro uma hora, e retorna um nmero entre 0 e 23, indicando o hora do dia. O formato geral o seguinte:
Hour(horrio)
Resultado. A funo Time() captura a hora do sistema e passa como parmetro para a funo Hour(), a qual por sua vez, retorna apenas o hora do dia.
2.30.8
A funo DateDiff
Esta funo pode ser utilizada para determinar o nmero de intervalos (em dias, trimestres, semestres, anos, etc), entre duas datas. A sintaxe desta funo o seguinte:
DateDiff(intervalo, data1, data2)
O parmetro intervalo uma String que diz que tipo de intervalo vamos calcular. Por exemplo, este parmetro que define se queremos calcular o nmero de dias, ou o nmero de meses entre duas datas. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo.
2.30.8.1
Valor
Descrio
yyyy
Anos
Trimestres
Meses
Dias
Semanas
Semanas do ano
ww
Horas
Minutos
A ttulo de exemplo, vamos calcular o nmero de meses, desde o descobrimento do Brasil, at 31 de Dezembro de 1999. Para isso, utilizaramos o seguinte comando
MsgBox Meses desde o descobrimento: & DateDiff(m,22/04/1500,31/12/1999)
Resultado. Vamos modificar um pouco o nosso exemplo, e calcular o nmero de horas desde o descobrimento. Para isto, podemos utilizar o seguinte comando:
MsgBox Meses desde o descobrimento: & DateDiff(h,22/04/1500,31/12/1999)
Resultado.
Pgina 158 de 219
2.30.9
A funo DateAdd
Esta funo pode ser utilizada para determinar uma data futura, com base em uma data fornecida, o tipo de perodo a ser acrescentado (dias, meses, anos, etc), e o nmero de perodos a serem acrescentados. A sintaxe desta funo o seguinte:
DateAdd(intervalo, nmero_de_intervalos, data)
O parmetro intervalo uma String que diz que tipo de intervalo vamos acrescentar. Por exemplo, este parmetro que define se queremos acrescentar um nmero especificado de dias, meses, anos, etc. Na Tabela a seguir, temos os valores possveis para o parmetro intervalo. A ttulo de exemplo, vamos calcular a data em que tivemos um perodo de 1000 meses, aps o descobrimento do Brasil. Para isso, utilizaramos o seguinte comando:
MsgBox Mil meses aps o descobrimento foi em : & DateAdd(m,1000,22/04/1500)
Resultado. Vamos modificar um pouco o nosso exemplo, e calcular em que data teremos passado um milho de dias aps o descobrimento.
MsgBox Um milho de dias aps o descobrimento em : & DateAdd(d,1000000,22/04/1500)
Resultado.
2.30.10
Funo Year
Recebe como parmetro uma data, e retorna um nmero indicativo do ano. O formato geral o seguinte:
Year(data)
Resultado. A funo Date() captura a data do sistema e passa como parmetro para a funo Year, a qual por sua vez, retorna apenas o ano.
2.30.11
Funo WeekDay
Recebe como parmetros uma data, e um parmetro opcional, que indica qual o primeiro dia da semana. Se este parmetro for omitido, o primeiro dia da semana ser considerado Domingo. O valor para o primeiro dia da semana numrico: 1 Domingo, 2 Segunda- feira, e assim por diante.
WeekDay(data, prim_dia_semana.)
Resultado. O valor 6, indica que foi uma Sexta-feira, o que confere com o calendrio. Poderamos determinar que o primeiro dia da semana a Segunda-feira (2 para o ltimo parmetro). Com isso o nosso exemplo, ficaria assim:
Pgina 160 de 219
Resultado. O valor 5, indica que foi uma Sexta-feira, pois agora a Segunda-feira passou a ser o dia 1, a Tera-feira o dia 2, e assim por diante. Novamente confere com o calendrio.
2.30.12
Funo WeekDayName
Recebe como parmetro um nmero, indicativo do dia da semana, e um segundo parmetro que pode ser Verdadeiro ou Falso. Se o segundo parmetro for verdadeiro, o nome do dia da semana ser exibido abreviadamente. O formato geral o seguinte:
WeekDayName(nmero_do_dia, abreviar)
2.31.1
Abs(n)
Retorna o valor absoluto (sem sinal), do nmero n. Atn(n) Retorna o valor do arco, cuja tangente o nmero n. O nmero n deve ser fornecido em radianos. Cos(n) Retorna o coseno do nmero n. O nmero n deve ser fornecido em radianos. Exp(n) Retorna o nmero e (logaritmo neperiano e=2,7183), elevado no nmero n. Log(n) Retorna o logaritmo natural de um nmero n. Rnd(n) Retorna um nmero aleatrio entre 0 e 1. Sgn(n) Retorna um nmero inteiro, indicando o sinal do nmero n. Retorna de1 para nmeros negativos e 1 para nmeros positivos. Sin(n) Retorna o seno do nmero n. O nmero n deve ser fornecido em radianos Sqr(n) Retorna a Raiz quadrada do nmero n. Tan(n) Retorna a tangente do nmero n. O nmero n deve ser fornecido em radianos.
Dica Para converter graus para radianos, multiplique o valor em graus por pi (3.14), e divida o resultado por 180.
exemplos
de
utilizao
das
funes
Abs(-2350) Retorna 2350 Atn(2) Retorna 1,1071487177 Cos(0) Retorna 1 Exp(1) Retorna 2,71828182845905 Log(1000) Retorna 6,90775527898214 Rnd*10 Gera um nmero aleatrio entre 0 e 10 Sgn(-235) Retorna 1, pois o nmero negativo Sin(0) Retorna 0 Sqr(400) Retorna 20 Tan(0) Retorna 0
2.32.1
um novo conjunto de objetos para acesso a fontes de dados externas, tais como o Microsoft Access ou o SQL Server 2000. Voc pode, at mesmo, criar uma planilha do Excel que acessa dados diretamente do Mainframe. Fornece uma interface de acesso direto a banco de dados. O ADO agora o mtodo de acesso de dados preferido no Excel. Nas verses anteriores utilizava-se um outro conjunto de objetos, conhecido como DAO Data Access Objects.
2.32.2
2.32.3
Assinatura digital
Fornece uma forma de determinar se o projeto do Visual Basic for Applications da pasta de trabalho foi assinada digitalmente. muito utilizado quando trabalhamos com planilhas e/ou aplicaes criadas com o Excel, onde o quesito segurana e identificao um fator fundamental.
2.32.4
Fornece interface do usurio de vrias lnguas aprimorada e recursos de edio e tratamento de texto fontico melhorado para suporte a idioma do leste asitico. Exibe rtulos de unidade: Fornece rtulos de unidade para tornar os rtulos de marcas de escala em eixos de grfico fceis de serem lidos. Representa um rtulo de unidade em um eixo no grfico especificado. Os rtulos de unidade so teis para a criao de grficos com valores altos por exemplo, milhes ou bilhes. Voc pode tornar o grfico mais legvel usando um nico rtulo de unidade em vez de nmeros grandes em cada marca de escala.
2.32.5 Fontes de dados OLAP para relatrios de tabela dinmica e grfico dinmico:
Fornece um meio para exibir e analisar dados de fontes de dados OLAP (Processamento Analtico On-line). Para maiores detalhes sobre os recursos de Tabela Dinmica e Grfico Dinmico, consulte o Mdulo 3.
2.32.6
Fornece capacidades integradas de correio eletrnico. Por exemplo, voc pode criar um cdigo VBA que, de dentro de uma planilha do Excel, envie dados via email, para um ou mais endereos eletrnicos.
Pgina 164 de 219
2.32.7
Fornece uma forma de salvar planilhas, grficos e relatrios de tabela dinmica como pginas interativas da Web. Para saber como usar esses componentes em formulrios do usurio e em caixas de dilogo, consulte Usar o Microsoft Office Web Components em formulrios, na Ajuda do Microsoft Excel.
2.32.8
Fornece uma interface para relatrios de grfico dinmico, que so baseados em dados de relatrios de tabela dinmica.
2.32.9
Fornece recursos para criar pginas da Web, salvar e editar recursos. Alm disso, fornece uma interface para salvar Microsoft Office Web Components.
2.32.10
Fornece recursos de script de pgina da Web para solues de cliente com base em HTML. Suplementos do Modelo de objeto de componente (COM): Fornece uma interface de usurio consistente na qual os desenvolvedores podem criar suplementos em qualquer linguagem de programao que tenha suporte para COM (Microsoft Visual C++, Visual J++ e Visual Basic, por exemplo). Por exemplo, voc pode querer criar um componente onde sejam desenvolvidas funes para validao de CPF, nmero de Carto de Crdito e assim por diante. Em seguida voc pode utilizar esse componente em qualquer planilha do Excel.
2.32.11
Fornece os recursos de idioma mais recentes, assim como formulrios do usurio sem modo e suporte para controles ActiveX adicionais. Muitas dessas novidades envolvem conceitos avanados de programao, os quais sero abordados em curso especfico: Desenvolvimento de Aplicaes usando o Excel e VBA. Nas demais lies desse mdulo aprenderemos a utilizar os principais objetos que fazem parte do modelo de objetos do Excel. Com esses objetos teremos acesso a
Pgina 165 de 219
todo e qualquer elemento de uma planilha do Excel, desde os valores em uma ou mais clulas, at comandos de menu.
Objetos,
Propriedades,
Mtodos
Nos tpicos anteriores tratamos dos aspectos bsicos do VBA. Com os aplicativos do Office (Word, Excel, Access e Power Point), temos acesso a um vasto conjunto de Bibliotecas; cada biblioteca com dezenas/centenas de objetos, cada objeto com inmeros mtodos, propriedades e colees. Com a utilizao dos objetos disponibilizados pelo Office, podemos criar solues bastante sofisticadas. Nesta lio vamos entender exatamente o que so e como se relacionam, os seguintes itens:Bibliotecas, Objetos, Propriedades, Mtodos, Colees. Para incio de conversa, considere a figura a seguir:
Os diversos objetos disponveis esto agrupados em Bibliotecas. Uma Biblioteca um conjunto de objetos que so utilizados para uma determinada funo/atividade. Por exemplo, todos os objetos para acesso a dados so agrupados em uma biblioteca chamada DAO - Data Access Objects. Existe uma outra biblioteca para acesso a dados, conhecida como ADO - Activex Data bjects. Existe uma biblioteca com os diversos objetos do Excel e assim por diante. Existem dezenas de bibliotecas disponveis. Isso demonstra bem o poder da utilizao do VBA em conjunto com os Objetos/Bibliotecas disponveis. Em cada Biblioteca esto disponveis dezenas/centenas de objetos. Cada objeto utilizado para um conjunto de aes especfico. Por exemplo: O objeto RecordSet utilizado para acessar dados de uma tabela. Uma vez criado um objeto RecordSet, podemos realizar uma srie de operaes sobre os diversos registros da tabela. Cada objeto possui um conjunto de mtodos, propriedades e colees. Um mtodo realiza uma operao especfica, como por exemplo o mtodo Open, do objeto RecordSet. Este mtodo utilizado para estabelecer a conexo entre um objeto RecordSet e um determinado conjunto de Registros. No cdigo VBA, utilizamos a seguinte sintaxe:
NomeDoObjeto.NomeDoMtodo(par1, par2, ..., parn)
Por exemplo, para utilizar o mtodo Open, de um objeto RecordSet chamado rs, utilizaramos a seguinte sintaxe:
rs.Open("Pedidos")
Uma propriedade descreve uma caracterstica do objeto. Por exemplo, temos uma propriedade chamada RecordCount que informa quantos registros existem no objeto RecordSet. Por exemplo, para atribuir a varivel quantos, o nmero de registros de um objeto RecordSet chamado rs, utilizaramos o seguinte comando:
quantos = rs.RecordCount
Uma coleo um conjunto de elementos do mesmo tipo. Por exemplo, todo banco de dados do Microsoft Access, possui uma coleo chamada Forms. Atravs desta coleo podemos ter acesso a todos os Formulrios do banco de dados. Toda planilha do Excel tem uma coleo chamada Worksheets. Atravs dessa coleo temos acesso a todas as planilhas de um arquivo do Excel. Podemos percorrer todos os elementos de uma coleo, utilizando a estrutura de Controle For...Each, que ser tratada no prximo tpico.
2.33.1
A Estrutura For...Each
Pgina 167 de 219
A estrutura For...Each utilizada para "percorrer" todos os elementos de uma coleo. Por exemplo, se quisermos percorrer todos os elementos da coleo Forms de um banco de dados, exibindo o nome de cada formulrio, devemos utilizar a estrutura For/Each, para percorrer todos os elementos da coleo Forms, exibindo o nome de cada um dos elementos. Nota: Nos exemplos de cdigo das prximas lies, veremos o funcionamento da estrutura For...Each em detalhes. Uma viso geral da Biblioteca de Objetos do Excel: Na figura a seguir temos uma viso geral da Biblioteca de Objetos do Microsoft Excel.
Nota
Quando trabalhamos com o VBA, temos que utilizar os nomes dos comandos, objetos, funes, mtodos e propriedades em ingls. No existe traduo. Por exemplo, se ao invs de Left, usarmos Esquerda para o nome da funo, ser gerado um erro, informando que no existe a funo Esquerda.
Pgina 168 de 219
Nas demais lies desse mdulo, estudaremos alguns dos principais objetos, da Biblioteca de Objetos do Excel. Observe que uma biblioteca de objetos forma uma espcie de hierarquia de objetos. Por exemplo, um objeto Worksheet somente existe dentro do contexto de um objeto Application. J o prprio objeto Worksheet pode possuir outros objetos, cada objeto com os seus mtodos e propriedades, conforme indicado na Figura a seguir:
Veja que um nico objeto da hierarquia de objetos Worksheet, composto de dezenas de outros objetos, mtodos, propriedades e colees. esse grande nmero de objetos que possibilita o acesso a todo e qualquer elemento de uma planilha do Excel, atravs da programao VBA.
2.33.2
Nas lies do Mdulo 5, aprendemos a utilizar as funes prontas, que j fazem parte do Excel. Porm podemos criar nossas prprias funes. Neste item, aprenderemos a criar nossas prprias funes e Sub-rotinas . O princpio por trs da criao de funes e sub- rotinas, o de reaproveitamento de cdigo e facilidade de manuteno do programa. Imagine que estejamos criando uma planilha para clculos financeiros, por exemplo, depreciao contbil. Vamos supor que em diversos locais, seja necessria a realizao do clculo de depreciao. Poderamos colocar o cdigo/frmulas que faz o clculo, em cada um dos locais, onde o clculo seja necessrio. Porm esta no a melhor maneira de criarmos nossos programas. Imagine, por exemplo, quando fosse necessrio alterar a maneira de realizar os clculos. Teramos que repassar todos
Pgina 170 de 219
os locais onde o clculo feito, procurando os pontos onde o cdigo est , e fazer as alteraes. Para resolver estes problemas, poderamos criar uma funo ou sub-rotina que faz os clculos de depreciao. A funo/sub-rotina seria criada dentro de um mdulo de cdigo do VBA, na prpria planilha. Depois, em cada local onde precisamos fazer os clculos, s chamar a funo (ou sub-rotina), para fazer os clculos. Quando fosse necessria a alterao da metodologia de clculo, era s alterar a funo (ou sub-rotina) e pronto, os novos clculos passaro a ser feitos com base na nova metodologia. Isto poupa esforo , reduz o nmero de linhas de cdigo , e facilita a manuteno , alm de reduzir a possibilidade de erros . Agora chegada a hora de aprendermos a criar funes e sub- rotinas. Estes procedimentos/funes so criados em mdulos de cdigo VBA associados a planilha. Quando uma destas funes/procedimentos for necessria, basta chamar a respectiva funo/procedimento que o Microsoft Excel se encarrega de localizar a funo/procedimento, passar os parmetros necessrios (se for o caso) e receber os resultados retornados, caso seja uma funo. Nota Vamos falar um pouco mais sobre o termo Procedimento. Um procedimento um grupo de instrues que pode ser chamado pelo nome atribudo ao procedimento. Neste contexto, funes e sub-rotinas, so tipos diferentes de procedimentos.
2.33.3
Uma sub-rotina um grupo de comandos que podem ser executados, simplesmente atravs da chamada do nome da Sub-rotina. Podemos passar um ou mais argumentos para uma Sub-rotina. Quando uma sub-rotina chamada, a execuo desloca-se para dentro da Sub- rotina, depois de executados todos os comandos dentro da Sub-rotina, a execuo do cdigo continua, com o comando seguinte ao que chamou a Sub-rotina. A sintaxe para a criao de uma Sub-rotina a seguinte:
Sub Nome_da_Sub-rotina(argumento1, argumento2, ..., argumenton) Comando1 Comando2 ... Comandon End Sub Pgina 171 de 219
Uma Sub-rotina pode, ou no, conter argumentos. Caso sejam necessrios argumentos, estes sero passados quando a Sub-rotina for chamada, e devem ser passados, na mesma ordem em que foram definidos. Dica Quando voc criar Sub-rotinas, procure utilizar nomes que descrevam a funo da Sub-rotina. Com isso voc torna o entendimento do cdigo mais fcil para quem for utiliz- lo.
Neste caso, declaramos uma rotina chamada Calcula_imposto, a qual espera receber 3 parmetros: salario, desconto e extras. Os parmetros devem ser fornecidos nesta ordem, para que a Sub-rotina funcione corretamente. Uma vez criada a Sub-rotina, podemos cham-la, simplesmente digitando o nome da Sub- rotina, ou utilizando a palavra Call , mais o nome da Sub-rotina. Nos exemplos abaixo, temos dois mtodos de chamada da Sub-rotina Calcula_imposto:
Calcula_imposto(1500,23,125)
ou
Call Calcula_imposto(1500,23,125)
Observe que os parmetros so passados dentro do parnteses. Tambm poderamos declarar uma Sub-rotina, sem parmetros. Neste caso posso simplesmente no utilizar os parnteses aps o nome da Sub-rotina, ou utilizar um par de parnteses, sem nada dentro, conforme indicado abaixo:
Sub Nome_da_Sub-rotina Comando1 Pgina 172 de 219
Ou
Sub Nome_da_Sub-rotina( ) Comando1 Comando2 ... Comandon End Sub
Por exemplo, poderamos criar uma Sub-rotina que exibe uma Caixa de mensagem com a Data do sistema e a hora, no Formato indicado na Figura a seguir:
Poderamos criar todos os comandos necessrios, para exibir a hora e a data neste formato, cada vez que a exibio fosse necessria. Porm mais prtico criar uma Sub-rotina que faz este trabalho. Cada vez que precisarmos exibir a data e a hora neste formato, s chamarmos a Sub-rotina. Na Listagem a seguir temos o cdigo da Sub-rotina exibe_data_hora (), a qual faz a exibio da data e da hora, no formato proposto pela Figura anterior. Listagem A Sub-rotina exibe_data_hora Listagem A Sub-rotina exibe_data_hora
Microsoft Excel Estudo Avanado es_nome=MonthName(mes_atual,False) mensagem = "Ano atual: " & Year(Date()) & Chr(13) mensagem = mensagem & "Ms atual: " & mes_nome & Chr(13) mensagem = mensagem & "Hoje dia: " & Day(Date())& Chr(13) mensagem = mensagem & Chr(13) & "***************" & Chr(13)& Chr(13) hora_atual = Hour(Time()) minuto_atual = Minute(Time()) secundo_atual = Second(Time()) mensagem = mensagem & "Hora atual: " & hora_atual & chr(13) mensagem = mensagem & "Minuto atual: " & minuto_atual & chr(13) mensagem = mensagem & "Secundo atual: " & secundo_atual MsgBox mensagem End Sub
Agora, cada vez que for necessrio exibir a data e a hora nos formatos do exemplo, basta chamar a Sub-rotina exibe_data_hora, utilizando um dos seguintes comandos:
Call exibe_data_hora
ou
exibe_data_hora
2.33.4
Uma Funo um grupo de comandos que podem ser executados, simplesmente atravs da chamada do nome da Funo. Podemos passar um ou mais argumentos para uma Funo. Quando uma Funo chamada, a execuo desloca-se para dentro da Funo, depois de executados todos os comandos dentro da Funo, a execuo do cdigo continua, com o comando seguinte ao que chamou a Funo. A diferena da Funo para a Sub-rotina, que a Funo sempre retorna um ou mais valores para o comando que a chamou. A sintaxe para declarao de uma Funo a seguinte:
Function Nome_da_Funo(argumento1, argumento2, ..., argumenton) As Tipo Comando1 Comando2 Pgina 174 de 219
Uma Funo pode, ou no, conter argumentos. Caso sejam necessrios argumentos, estes sero passados quando a Funo for chamada, e devem ser passados, na mesma ordem em que foram definidos.
Dica : Quando voc criar Funo, procure utilizar nomes que descrevam os objetivos da Funo. Com isso voc torna o entendimento do cdigo mais fcil para quem for utiliz-lo.
Neste caso, declaramos uma Funo chamada Converte_para_dolar, a qual espera receber 2 parmetros: um valor em real e a cotao do dlar. Uma vez criada a Funo, devemos cham-la, em um comando de atribuio, isto , o valor retornado pela funo, deve ser atribudo a uma varivel, ou exibido atravs de um comando como MsgBox. No exemplo abaixo, estamos atribuindo o valor de retorno da funo, varivel valor_dolar.
valor_dolar = Converte_para_dolar (1500,1.81)
Tambm poderamos exibir o valor retornado pela funo, utilizando o comando MsgBox, conforme indicado a seguir:
MsgBox Valor em dlar: & Converte_para_dolar (1500,1.81)
Observe que os parmetros so passados dentro dos parnteses, e na mesma ordem definida quando da criao da funo. Tambm poderamos declarar uma Funo, sem parmetros. Neste caso posso simplesmente no utilizar os parnteses aps o nome da Funo, ou utilizar um par de parnteses, sem nada dentro, conforme indicado abaixo:
Function Nome_da_Funo Pgina 175 de 219
Microsoft Excel Estudo Avanado Comando1 Comando2 ... Comandon End Function ou Function Nome_da_Funo( ) Comando1 Comando2 ... Comandon End Function
Por exemplo, vamos criar uma funo que converte um valor de um ngulo de Graus para Radianos. Depois utilizaremos a funo dentro de um lao For...Next, para exibir o valor em radianos, para os ngulos de 0 20 graus. No exemplo a seguir temos o cdigo onde foi criada a funo CRad, que converte um valorem graus para radianos. Depois utilizamos um lao for para exibir, atravs de uma Caixa de mensagem os valores em radianos, para os ngulos de 0 20 graus. Criao da funo CRad.
Function CRad(valor_graus) CRad = (valor_graus*3.14)/180 End Function
Mensagem = Mensagem & ngulo: & i & Valor em Radianos: Mensagem = Mensagem & FormatNumber(CRaid(i),5) & Chr(13) Next Msgbox Mensagem
Observe que dentro da funo, atribumos a varivel CRad um determinado valor. isso que caracteriza uma funo. Dentro do cdigo da funo, devemos
Pgina 176 de 219
atribuir a uma varivel que tenha o mesmo nome da funo, um determinado valor. Este valor que ser o valor de retorno da funo. Cabe salientar o uso da funo FormatNumber, dentro do lao For. A funo FormatNumber utilizada para formatar a maneira como um nmero exibido. Neste caso, utilizamos a funo FormatNumber, para limitar o nmero de casas decimais, a 5 casas depois da vrgula. Em cada "passada" do lao For...Next, chamamos a funo CRad(i), para fazer a converso de Graus para radianos. O Valor retornado pela funo CRad, passado para a funo FormatNumber, para ser formatado com apenas 5 casas decimais.
2.34.1
O objeto Application
Representa todo o aplicativo Microsoft Excel. O objeto Application contm: Definies e opes para o aplicativo como um todo (muitas das opes da caixa de dilogo Opes (menu Ferramentas), por exemplo, so configuradas atravs das propriedades do objeto Application). Mtodos que retornem objetos do nvel mais alto, como ActiveCell, ActiveSheet e assim por diante.
Pgina 177 de 219
Usar o objeto Application Usamos o objeto Application quando temos que configurar alguma opo do Excel, como as opes disponveis no menu Ferramentas -> Opes, ou quando temos que acessar dados de uma planilha externa. Nesse ltimo caso criamos um objeto Application. Em seguida, criamos um objeto Workbook associado com o arquivo .xls do qual queremos acessar dados. Em seguida usamos a coleo Worksheets e o objeto Range para acessar os dados do referido arquivo. Com isso possvel, a partir de uma planilha do Excel, fazer clculos que envolvem dados de diversos arquivos .xls diferentes. Vamos considerar alguns exemplos de cdigo que usa o objeto Application. Criar um objeto Application e usar o mtodo Open para abrir uma planilha: No exemplo de cdigo a seguir, temos o uso do objeto Application para abrir um arquivo do Excel que est gravado no disco rgido:
Set xl = CreateObject("Excel.Sheet") xl.Application.Workbooks.Open "C:\ExcelAvanado\ExApp.xls"
Nesse exemplo usamos a funo CreateObject para Excel.Sheet, que na prtica uma planilha do Excel:
Set xl = CreateObject("Excel.Sheet")
Em seguida usamos o mtodo Open, da coleo Workbook do objeto Application, para acessar a planilha C:\ExcelAvanado\ExApp.xls. Exibindo uma caixa para que o usurio selecione a planilha a ser aberta: Nesse exemplo vamos apresentar um trecho de cdigo, o qual exibe uma janela para que o usurio selecione o arquivo a ser aberto. Uma vez feita a seleo, a planilha aberta, usando o mtodo Open, usado no exemplo anterior.
Set xl = CreateObject("Excel.Sheet") ArqParaAbrir = Application.GetOpenFilename("Planilhas do Excel(*.xls), *.xls") If ArqParaAbrir <> False Then MsgBox "A seguinte planilha ser carregada: " & ArqParaAbrir xl.Application.Workbooks.Open ArqParaAbrir End If
Vamos comentar, em detalhes, o exemplo anterior. Usamos a funo CreateObject para criar um objeto do tipo planilha do Excel, objeto esse que associado com a varivel xl:
Pgina 178 de 219
Set xl = CreateObject("Excel.Sheet")
Agora utilizamos o mtodo GetOpenFilename, do objeto Application. Esse mtodo exibe a caixa de dilogo Abrir (a mesma caixa que exibida quando voc seleciona o comando Arquivo -> Abrir). O nome do arquivo selecionado nessa janela, ser atribudo varivel ArqParaAbrir. Ser atribudo o caminho completo, por exemplo C:\ExcelAvanado\Teste.xls.
ArqParaAbrir = Application.GetOpenFilename("Planilhas do Excel (*.xls), *.xls")
Observe que so exibidos apenas os arquivos .xls da pasta de trabalho atual. No exemplo da figura so exibidos os arquivos da pasta C:\ExcelAvanado, porque recm abri um arquivo dessa pasta. Normalmente so exibidos, por padro, os arquivos da pasta Meus documentos. Somente so exibidos os arquivos .xls, porque definimos esse parmetro na chamada do mtodo GetOpenFilename("Planilhas do Excel (*.xls), *.xls"). Voc seleciona um arquivo e clica no boto Abrir. Em seguida o cdigo testa se realmente algum arquivo foi selecionado:
Caso algum arquivo tenha sido selecionado, o nome do arquivo ser exibido:
MsgBox "A seguinte planilha ser carregada: " & ArqParaAbrir Pgina 179 de 219
E o arquivo selecionado ser aberto no Excel. Existem dezenas de mtodos e propriedades do objeto Application. Voc encontra exemplos de cada mtodo e propriedade na Ajuda do Excel. No curso de Programao VBA e Criao de Aplicativos como Excel, estudaremos mais o objeto Application.
Use Workbooks(ndice), onde ndice o nmero de ndice ou o nome da pasta de trabalho, para retornar um nico objeto Workbook. O exemplo seguinte ativa a pasta de trabalho um.
Pgina 180 de 219
O nmero de ndice denota a ordem na qual as pastas de trabalho foram abertas ou criadas. Workbooks(1) a primeira pasta de trabalho criada e Workbooks(Workbooks.Count) a ltima criada, onde a propriedade Count retorna o nmero de pastas de trabalho (arquivos .xls) abertas. A ativao de uma pasta de trabalho no altera seu nmero de ndice. Todas as pastas de trabalho so includas na contagem do ndice, mesmo que elas estejam ocultas. A propriedade Name retorna o nome da pasta de trabalho. Voc no pode definir o nome usando essa propriedade; se voc precisa alterar o nome, use o mtodo SaveAs para salvar a pasta de trabalho com um nome diferente. O seguinte exemplo ativa a planilha Plan1 na pasta de trabalho chamada "Teste.xls" (a pasta de trabalho precisa j estar aberta no Microsoft Excel).
Workbooks("Teste.xls").Worksheets("Plan1").Activate
Para quem no est acostumado com o VBA, pode parecer um pouco estranha essa sintaxe. Uma dica fazer a leitura de trs para frente, ou seja, da direita para a esquerda. No nosso exemplo, comeando da direita para a esquerda, teramos a seguinte leitura, do comando anterior: Ativar (Activate) a planilha cujo nome Plan1 (Worksheets(Plan1), sendo que esta planilha est na pasta de trabalho Teste.xls (Workbooks(Teste.xls). Propriedade ActiveWorkbook: A propriedade ActiveWorkbook retorna a pasta de trabalho que est ativa no momento. O exemplo seguinte define o nome do autor da pasta de trabalho ativa.
ActiveWorkbook.Author = "Jos da Silva"
Propriedade ThisWorkbook: A propriedade ThisWorkbook retorna a pasta de trabalho onde h cdigo do Visual Basic sendo executado. Na maioria dos casos, esta a prpria pasta de trabalho ativa. Entretanto, se o cdigo do Visual Basic for parte de um suplemento, a propriedade ThisWorkbook no retornar a pasta de trabalho ativa. Nesse caso, a pasta de trabalho ativa a pasta de trabalho que est chamando o suplemento, enquanto que a propriedade ThisWorkbook retorna a pasta de trabalho do suplemento.
2.35.1
A coleo Workbooks
Uma coleo de todos os objetos Workbook que esto no momento abertos no aplicativo Microsoft Excel. Use a propriedade Workbooks, do objeto Application, para retornar a coleo Workbooks. O exemplo seguinte fecha todas as pastas de trabalho abertas.
Pgina 181 de 219
Workbooks.Close
Use o mtodo Add para criar uma nova pasta de trabalho vazia e adicion-la coleo. O exemplo seguinte adiciona uma nova pasta de trabalho vazia ao Microsoft Excel.
Workbooks.Add
Use o mtodo Open para abrir um arquivo. Isto cria uma nova pasta de trabalho para o arquivo aberto. O exemplo seguinte abre o arquivo Array.xls como uma pasta de trabalho somente leitura.
Workbooks.Open fileName:="array.xls", readOnly:=True
Vamos ver mais alguns exemplos de cdigo com o objeto Workbook e com a coleo Workbooks. A propriedade Count: Essa propriedade informa o nmero de pastas de trabalho (arquivos .xls) abertas no momento. No exemplo de cdigo a seguir, usamos essa propriedade para exibir uma mensagem que informa quantas pastas esto abertas no momento.
Dim wrkb As Workbooks Set wrkb = Application.Workbooks MsgBox "Pastas atualmente abertas: " & wrkb.Count
Esse exemplo cria um objeto do tipo Workbooks. Em seguida utilizo a propriedade Workbooks, do objeto Application, para associar a varivel wrkb com a coleo Workbooks da pasta de trabalho onde o cdigo esta sendo executado. Na ltimo linha utilizo a propriedade Count para exibir uma mensagem informando o nmero de elementos da coleo Workbooks. Na figura a seguir temos um exemplo da mensagem que gerada, quando esse cdigo executado:
Exibindo o nome de todas as pastas de trabaho abertas o Excel: No exemplo de cdigo a seguir, usamos a coleo Workbooks e a estrutura For...Each, para exibir o nome de todas as pastas de trabalho, atualmente abertas no Excel:
Dim pastas As Workbooks Pgina 182 de 219
Microsoft Excel Estudo Avanado Dim pasta As Workbook Set pastas = Application.Workbooks For Each pasta In pastas MsgBox "Nome da planilha: " & pasta.Name Next
Inicialmente criamos duas variveis, uma do tipo Workbooks (varivel pastas) e outra do tipo Workbook (varivel pasta). Em seguida usamos uma estrutura do tipo For...Each para percorrer todos os elementos da coleo Workbooks. A cada passagem da estrutura For...Each, exibimos o nome da respectiva pasta. Isso feito usando a propriedade Name, do objeto Workbook. A seguir temos uma seqncia de telas que exemplifica a execuo desse cdigo:
Nesse exemplo tnhamos quatro pastas de trabalho abertas. O excel foi percorrendo a coleo de pastas abertas (coleo Workbooks) e exibindo o nome da cada elemento da coleo (cada Workbook). xistem dezenas de mtodos e propriedades do objeto Workbook e da coleo Workbooks. Voc encontra exemplos de cada mtodo e propriedade na Ajuda do
Pgina 183 de 219
Excel. No curso de Programao VBA e Criao de Aplicativos como Excel, estudaremos mais o objeto Workbook e a coleo Workbooks.
Worksheets(1).Visible = False
O nmero de ndice da planilha denota a posio de uma planilha na barra de guias da pasta de trabalho. Worksheets(1) a primeira planilha (mais esquerda) na pasta de trabalho e Worksheets(Worksheets.Count) a ltima. Todas as planilhas so includas na contagem do ndice, mesmo quando esto ocultas. A propriedade Count retorna o nmero de planilhas existentes na pasta de trabalho atual. O nome da planilha mostrado na guia da planilha. Use a propriedade Name para definir ou retornar o nome da planilha. Por exemplo, para definir o nome da primeira planilha como sendo Dbitos, use o seguinte cdigo:
Dim pastas As Workbooks Pgina 184 de 219
Microsoft Excel Estudo Avanado Dim pasta As Worksheet Set pastas = Application.Workbooks Set pasta = Application.Worksheets(1) MsgBox "Nome atual da planilha: " & pasta.Name pasta.Name = "Dbitos" MsgBox "Novo nome da planilha: " & pasta.Name
Vamos supor que voc execute esse cdigo quando o nome da primeira planilha Plan1. Nessa caso, voc obter a seguinte seqncia de mensagens:
Em seguida associamos a varivel pasta com a pasta de trabalho atual: Set pastas = Application.Workbooks Depois associamos a varivel pasta com a primeira planilha, da pasta de trabalho atual. Nesse momento, usamos a coleo Worksheets, do objeto Application, conforme indicado a seguir:
Set pasta = Application.Worksheets(1)
O prximo passo exibir o nome atual da primeria planilha, o que no nosso exemplo feito com o comando a seguir:
MsgBox "Nome atual da planilha: " & pasta.Name
Agora usamos a propriedade Name para renomear a primeira planilha, conforme indicado a seguir:
pasta.Name = "Dbitos" Pgina 185 de 219
O objeto Worksheet tambm um membro da coleo Sheets. A coleo Sheets contm todas as planilhas da pasta de trabalho (tanto folhas de grfico quanto planilhas de trabalho).
2.36.1
Propriedade ActiveSheet
Quando uma planilha a planilha ativa, voc pode usar a propriedade ActiveSheet para referir-se a ela. O exemplo seguinte usa o mtodo Activate para ativar a planilha Plan1, define a orientao da pgina como modo paisagem e, em seguida, imprime a planilha.
Worksheets("Plan1").Activate ActiveSheet.PageSetup.Orientation = xlLandscape ActiveSheet.PrintOut
2.36.2
Propriedade Visible
True se o objeto est visvel ou False caso contrrio. Essa propriedade pode ser utilizada para verificar o valor atual ou para defini-lo . Para um grfico ou planilha, essa propriedade pode ser definida como xlVeryHidden. Isso oculta o objeto para que a nica maneira de voc torn-lo novamente visvel seja definindo essa propriedade como True (o usurio no pode tornar o objeto visvel). A propriedade Visible para um item de tabela dinmica True quando o item est atualmente visvel na tabela. Se voc definir a propriedade Visible de um nome como False, o nome no aparecer na caixa de dilogo Definir nome. Considere o exemplo a seguir: Este exemplo oculta a planilha Plan1.
Worksheets("Plan1").Visible = False
pasta de
2.36.3
Propriedade UsedRange
Essa propriedade retorna um objeto Range representando o intervalo usado na planilha especificada. Somente leitura. Considere o exemplo a seguir: Este exemplo seleciona o intervalo de clulas usado (onde existem dados), na planilha Plan1.
Worksheets("Plan1").Activate ActiveSheet.UsedRange.Select
Existem dezenas de mtodos e propriedades do objeto Worksheet e da coleo Worksheets. Voc encontra exemplos de cada mtodo e propriedade na Ajuda do Excel. No curso de Programao VBA e Criao de Aplicativos como Excel, estudaremos mais o objeto Worksheet e a coleo Worksheets.
2.37.1
O objeto Range
O objeto Range representa uma clula, uma linha, uma coluna, uma seleo de clulas contendo um ou mais blocos contguos de clulas ou um intervalo 3D. Estudaremos as seguintes propriedades do objeto Range: Propriedade Range Propriedade Cells Range e Cells
Pgina 187 de 219
2.37.2
Propriedade Range
Use Range(argumento), onde argumento nomeia o intervalo, para retornar um objeto Range representando uma nica clula ou um intervalo de clulas. O exemplo seguinte atribui o valor da clula A1 para a clula A5.
Worksheets("Plan1").Range("A5").Value = Worksheets("Plan1").Range("A1").Value
O exemplo seguinte preenche o intervalo A1:H8 com nmeros randmicos (aleatrios), definindo a frmula para cada clula do intervalo. Quando usada sem um qualificador de objeto (um objeto esquerda do ponto), a propriedade Range retorna um intervalo da planilha ativa. Se a planilha ativa no for uma planilha de trabalho, o mtodo falhar. Use o mtodo Activate para ativar uma planilha antes de usar a propriedade Range sem um qualificador de objeto explcito.
Worksheets("Plan1").Activate " Range("A1:H8").Formula = "=rand()
Se voc usar um argumento dex texto para o endereo do intervalo, voc ter que especificar o endereo em notao de estilo A1 (voc no poder usar a notao de estilo L1C1, onde L1 significa Linha 1 e C1 significa Coluna 1). Propriedade Cells: Use Cells(linha, coluna) onde linha o ndice da linha e coluna o ndice da coluna, para retornar uma nica clula. O exemplo seguinte define o valor da clula A1 como 24.
Worksheets(1).Cells(1, 1).Value = 24
Embora voc tambm possa usar Range("A1") para retornar a clula A1, pode haver ocasies em que a propriedade Cells seja mais conveniente porque voc pode usar uma varivel para a linha ou coluna. O exemplo seguinte cria cabealhos de coluna e linha na planilha Plan1. Observe que aps a planilha ser ativada, a propriedade Cells pode ser usada sem uma declarao explcita de planilha (ela retorna uma clula da planilha ativa).
Worksheets("Plan1").Activate For theYear = 1 To 5 Cells(1, theYear + 1).Value = 1990 + theYear Next theYear For theQuarter = 1 To 4 Cells(theQuarter + 1, 1).Value = "Q" & theQuarter Next theQuarter
Apesar de voc poder usar funes de cadeia de caracteres do VBA para alterar as referncias de estilo A1, muito mais fcil (e uma prtica de programao muito melhor) usar a notao Cells(1, 1). Use expresso.Cells(linha, coluna), onde expresso uma expresso que retorne um objeto Range, e linha e coluna so relativas ao canto superior esquerdo do intervalo, para retornar parte de um intervalo. O exemplo seguinte define a frmula para a clula C5.
Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=rand()"
2.37.3
Propriedade Offset
Use Offset(linha, coluna), onde linha e coluna so os deslocamentos de linha e coluna, para retornar um intervalo em um deslocamento especificado de um outro
Pgina 189 de 219
intervalo. O exemplo seguinte seleciona a clula trs linhas abaixo e uma coluna esquerda da clula do canto superior esquerdo da seleo atual. Voc no pode selecionar uma clula que no esteja na planilha ativa, portanto, voc precisa ativar primeiro a planilha.
Worksheets("Plan1").Activate
t Selection.Offset(3, 1).Range("A1").Selec
Mtodo Union: Use Union(intervalo1, intervalo2, ...) para retornar intervalos de vrias reas isto , intervalos compostos de dois ou mais blocos contguos de clulas. O exemplo seguinte cria um objeto definido como a unio de intervalos A1:B2 e C3:D4 e, em seguida, seleciona o intervalo definido.
Dim r1 As Range, r2 As Range, myMultiAreaRange As Range Worksheets("Plan1").Activate Set r1 = Range("A1:B2") Set r2 = Range("C3:D4") Set myMultiAreaRange = Union(r1, r2) myMultiAreaRange.Select
Vamos apresentar mais alguns exemplos do uso da propriedade Cells, a qual a propriedade mais utilizada do objeto Range. Este exemplo define o tamanho da fonte para a clula C5 de planilha Plan1 como 14 pontos.
Worksheets("Plan1").Cells(5, 3).Font.Size = 14
Este exemplo percorre as clulas A1:J4 da planilha Plan1. Se uma clula contiver um valor menor que 0,001, o exemplo substituir esse valor por 0 (zero).
For rwIndex = 1 to 4 For colIndex = 1 to 10 If Worksheets("Plan1").Cells(rwIndex, colIndex).Value < .001 Then Worksheets("Plan1").Cells(rwIndex, colIndex) .Value = 0 End If Next colIndex Next rwIndex
Este exemplo define o estilo da fonte para as clulas A1:C5 da planilha Plan1 como itlico.
Worksheets("Plan1").Activate Range(Cells(1, 1), Cells(5, 3)).Font.Italic = True
Este exemplo varre uma coluna de dados chamada "myRange". Se uma clula tiver o mesmo valor que a clula imediatamente acima, o exemplo exibir o endereo da clula que contm os dados duplicados.
Set r = Range("myRange") For n = 1 To r.Rows.Count If r.Cells(n, 1) = r.Cells(n + 1, 1) Then MsgBox "Dados duplicados em: " & r.Cells(n + 1, 1).Address End If Next n
Existem dezenas de mtodos e propriedades do objeto Range. Voc encontra exemplos de cada mtodo e propriedade na Ajuda do Excel. No curso de Programao VBA e Criao de Aplicativos como Excel, estudaremos mais o objeto Range.
2.38.1
Propriedade ThisWorkBook
Essa propriedade retorna um objeto Workbook representando a pasta de trabalho na qual o cdigo da macro atual est sendo executado. do tipo Somente leitura, ou seja, essa propriedade somente pode ser usada para fazer referncia ao Workbook atualmente carregado e no para definir o Workbook ativo. Use essa propriedade para referir-se pasta de trabalho que contm o cdigo de sua macro. Por exemplo, use cdigo tal como o seguinte para ativar uma folha de caixa de dilogo armazenada em sua pasta de trabalho do suplemento.
ThisWorkbook.DialogSheets(1).Show
Essa propriedade s pode ser usada de dentro do Microsoft Excel. Voc no pode us-la para acessar uma pasta de trabalho a partir de um outro aplicativo, como por exemplo o Microsoft Access. O exemplo a seguir fecha a pasta de trabalho que contm o cdigo de exemplo. Alteraes na pasta de trabalho, caso existam, no so salvas.
ThisWorkbook.Close SaveChanges:=False Pgina 191 de 219
A propriedade ThisWorkbook retorna uma referncia a um objeto Workbook, o qual faz referncia a pasta de trabalho atual. Podemos utilizar todas as propriedades do objeto Workbook (que estudaremos em detalhes a partir da lio 14) para obter informaes sobre a pasta de trabalho atual. No exemplo a seguir, usamos a propriedade FullName para obter o caminho completo (por exemplo C:\ExcelAvancado\Teste.xls) da pasta de trabalho atual:
MsgBox Voc est trabalhando no seguinte arquivo: & ThisWorkbook.FullName
2.38.2
Propriedade ActiveCell:
Essa propriedade retorna um objeto Range representando a clula ativa da janela ativa (a janela visvel) ou da janela especificada. Se a janela no estiver exibindo uma planilha, essa propriedade falhar. do tipo Somente leitura, ou seja, somente pode ser usada para retornar a clula ativa e no para ativar uma determinada clula. Quando voc no especifica um qualificador de objeto, essa propriedade retorna a clula ativa da janela ativa. Tenha cuidado de distinguir entre clula ativa e seleo. A clula ativa uma nica clula dentro da seleo atual. A seleo pode conter mais de uma clula, mas somente uma a clula ativa. Todas as expresses seguintes retornam a clula ativa, sendo todas equivalentes. ActiveCell Application.ActiveCell ActiveWindow.ActiveCell Application.ActiveWindow.ActiveCell Exemplos da propriedade ActiveCell: Este exemplo usa uma caixa de mensagem para exibir o valor da clula ativa. Como a propriedade ActiveCell falha se a planilha ativa no for uma planilha de trabalho, o exemplo ativa a planilha Plan1 antes de usar a propriedade ActiveCell.
Worksheets("Plan1").Activate MsgBox ActiveCell.Value
2.38.3
Propriedade ActiveSheet
Essa propriedade retorna um objeto representando a planilha ativa (a planilha visvel) da pasta de trabalho ativa ou na janela ou pasta de trabalho especificada. Retorna Nothing se no houver planilha ativa. Somente leitura. Se voc no especificar um qualificador de objeto, essa propriedade retornar a planilha ativa da pasta de trabalho ativa. Se uma pasta de trabalho aparece em mais de uma janela, a propriedade ActiveSheet poder ser diferente em janelas diferentes. Exemplo da propriedade ActiveSheet: Este exemplo exibe o nome da planilha ativa.
MsgBox "O nome da planilha ativa : " & ActiveSheet.Name
2.38.4
Propriedade Calculation
Essa propriedade Retorna ou define o modo de clculo. Pode ser uma das seguintes constantes xlCalculation xlCalculationAutomatic xlCalculationManual xlCalculationSemiautomatic.
Exemplo da propriedade Calculation: Este exemplo faz o Microsoft Excel calcular pastas de trabalho antes de elas serem salvas em disco.
Application.Calculation = xlCalculateManual Application.CalculateBeforeSave = True
Este exemplo define o campo de dados no relatrio de tabela dinmica em Plan1 para calcular a diferena a partir do campo base, define o campo base com o campo chamado "ORDER_DATE" e define o item base com o item chamado "5/16/89".
Worksheets("Plan1").Range("A3").PivotField.Calculation = xlDifferenceFrom Worksheets("Plan1").Range("A3").PivotField.BaseField = "ORDER_DATE" Worksheets("Plan1").Range("A3").PivotField .BaseItem = "5/16/89"
Na prxima lio veremos mais algumas propriedades do objeto Application e iniciaremos o estudo dos principais mtodos desse objeto.
2.38.5
Propriedade DefaultFilePath
Essa propriedade retorna ou define o caminho padro que o Microsoft Excel usa ao abrir arquivos. String de leitura e gravao. Por padro a pasta Meus documentos, ou seja, quando voc seleciona o comando Arquivo -> Salvar ou Arquivo -> Abrir, por padro, acessada a pasta Meus documentos. Exemplo da propriedade DefaultFilePath: Este exemplo exibe o atual caminho de arquivo padro. MsgBox "O caminho padro : " & Application.DefaultFilePath
2.38.6
Propriedade DefaultSaveFormat:
Essa propriedade retorna ou define o formato padro para salvar arquivos. Para obter uma lista de constantes vlidas, consulte a propriedade FileFormat. Do tipo Long de leitura e gravao. Na tabela a seguir temos uma lista de constantes vlidas para essa propriedade:
Dependendo do idioma da sua verso do Excel, algumas dessas constantes podem no estar disponveis. Exemplo da propriedade DefaultSaveFormat: Este exemplo define o formato padro para salvar arquivos.
Pgina 194 de 219
Application.DefaultSaveFormat = xlExcel4Workbook
2.38.7
Propriedade RecentFiles
Essa propriedade retorna uma coleo RecentFiles representando a lista de arquivos usados recentemente. Exemplo da propriedade RecentFiles: Este exemplo define como 6 o nmero mximo de arquivos da lista de arquivos usados recentemente.
Application.RecentFiles.Maximum = 6
Principais Mtodos do mtodo Application: Vamos iniciar o estudo dos principais mtodos do objeto Application. Esse estudo seguir na Prxima lio.
2.38.8
Mtodo InputBox
Esse mtodo exibe uma caixa de dilogo para entrada pelo usurio e retorna as informaes inseridas na caixa de dilogo. Sintaxe: Expresso.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type) expresso : obrigatria e deve ser uma expresso que retorne um objeto Application. Prompt: String obrigatria. A mensagem a ser exibida na caixa de dilogo. Pode ser uma seqncia, um nmero, uma data ou um valor Boolean (o Microsoft Excel converte o valor automaticamente para uma String antes dele ser exibido). Title: Variant opcional. O ttulo da caixa de entrada. Se esse argumento for omitido, o ttulo padro ser "Entrada". Default: Variant opcional. Especifica um valor que aparecer na caixa de texto quando a caixa de dilogo for inicialmente exibida. Se esse argumento for omitido, a caixa de texto ser deixada vazia. Esse valor pode ser um objeto Range. Left: Variant opcional. Especifica uma posio x para a relao ao canto superior esquerdo da tela, em pontos. caixa de dilogo em
Top: Variant opcional. Especifica uma posio y para a caixa de dilogo em relao ao canto superior esquerdo da tela, em pontos.
HelpFile: Variant opcional. O nome do arquivo de Ajuda para essa caixa de entrada. Se os argumentos HelpFile e HelpContextID estiverem presentes, um boto Ajuda aparecer na caixa de dilogo. HelpContextId: Variant opcional. O nmero de identificao do contexto do tpico da Ajuda em HelpFile. Type: Variant opcional. Especifica o tipo de dados retornado. Se esse argumento for omitido, a caixa de dilogo retornar texto. Pode ser um dos valores abaixo ou a soma deles.
Valor 0 1 2 4 8 16 64
Significado Uma frmula Um nmero Texto (uma seqncia) Um valor lgico (True ou False) Uma referncia a clulas, como um objeto Range Um valor de erro, como #N/D Uma matriz de valores
Voc pode usar a soma dos valores permitidos para Type. Por exemplo, para uma caixa de entrada que possa aceitar tanto texto como nmeros, defina Type como 1 + 2. Use InputBox para exibir uma caixa de dilogo simples para que voc possa inserir informaes a serem usadas em uma macro. A caixa de dilogo tem um boto OK e um boto Cancelar. Quando voc escolhe o boto OK, InputBox retorna o valor inserido na caixa de dilogo. Quando voc clica no boto Cancelar, InputBox retorna False. Quando Type 0, InputBox retorna a frmula na forma de texto por exemplo, "=2*PI()/360". Se houver quaisquer referncias na frmula, elas sero retornadas como referncias de estilo A1. (Use ConvertFormula para fazer a converso entre estilos de referncias). Quando Type 8, InputBox retorna um objeto Range. Voc precisa usar a instruo Set para atribuir o resultado a um objeto Range, como mostrado no exemplo seguinte.
Set myRange = Application.InputBox(prompt := "Sample", type := 8)
Se voc no usar a instruo Set, a varivel ser intervalo em vez do prprio objeto Range.
Se voc usar o mtodo InputBox para pedir uma frmula ao usurio, voc ter que usar a propriedade FormulaLocal para atribuir a frmula a um objeto Range. A frmula de entrada dever estar no idioma do usurio. Exemplo do mtodo InputBox: Este exemplo pede um nmero ao usurio.
myNum = Application.InputBox("Digite um nmero:")
Este exemplo pede ao usurio que selecione uma clula em Plan1. Este exemplo usa o argumento Type para assegurar que o valor retornado seja uma referncia de clula vlida (um objeto Range).
Worksheets("Plan1").Activate Pgina 197 de 219
2.38.9
Mtodo FindFile
expresso: Obrigatria. Uma expresso que retorne um objeto Application. Comentrios: Este mtodo exibe a caixa de dilogo Abrir e permite que o usurio abra um arquivo. Se um novo arquivo for aberto com sucesso, esse mtodo retornar True. Se o usurio cancelar a caixa de dilogo, este mtodo retornar False. Este exemplo exibe a caixa de dilogo Abrir. Application.FindFile
2.38.10
Mtodo GetOpenFilename
Esse mtodo exibe a caixa de dilogo Abrir padro e obtm um nome de arquivo do usurio sem realmente abrir nenhum arquivo. Sintaxe:
expresso.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
expresso: Obrigatria. Uma expresso que retorna um objeto Application. FileFilter: Variant opcional. Uma seqncia que especifica critrios de filtragem do arquivo. Esta seqncia consiste em pares de seqncias de filtro de arquivo seguidas pela especificao de arquivo curinga do MS-DOS, com cada parte e cada par separados por vrgulas. Cada par separado listado na caixa de listagem suspensa Arquivos do tipo. Por exemplo, a seguinte seqncia especifica dois filtros de arquivotexto e suplemento:
"Arquivos de texto (*.txt),*.txt,Arquivos de suplemento (*.xla),*.xla"
Para usar vrias expresses curingas do MS-DOS para um nico tipo de filtro, separe as expresses curinga com pontos-e-vrgulas; por exemplo, "Arquivos do Visual Basic (*.bas; *.txt),*.bas;*.txt". Se omitido, o padro desse argumento ser "Todos os arquivos (*.*),*.*".
Pgina 198 de 219
FilterIndex: Variant opcional. Especifica os nmeros de ndice dos critrios padro de filtragem de arquivo, de 1 at o nmero de filtros especificado em FileFilter. Se esse argumento for omitido ou for superior ao nmero de filtros presentes, o primeiro filtro de arquivo ser usado. Title: Variant opcional. Especifica o ttulo da caixa de dilogo. Se esse argumento for omitido, o ttulo ser "Abrir". ButtonText: Variant opcional. Somente para computadores Macintosh. MultiSelect: Variant opcional. True para permitir que vrios nomes de arquivo sejam selecionados. False para permitir que somente um nome de arquivo seja selecionado. O valor padro False Esse mtodo retorna o nome de arquivo selecionado ou o nome fornecido pelo usurio. O nome retornado pode incluir uma especificao de caminho. Se MultiSelect for True, o valor de retorno ser uma matriz dos nomes de arquivo selecionados (mesmo que somente um nome de arquivo seja selecionado). Retorna False se o usurio cancelar a caixa de dilogo. Esse mtodo pode alterar a unidade ou pasta atual. Exemplo do mtodo GetOpenFilename: Este exemplo exibe a caixa de dilogo Open, com o filtro de arquivo definido para arquivos de texto. Se o usurio escolher um nome de arquivo, o cdigo exibir esse nome de arquivo em uma caixa de mensagens.
fileToOpen = Application.GetOpenFilename("Text Files (*.txt), *.txt") If fileToOpen <> False Then MsgBox "Arquivo selecionado: " & fileToOpen End If
2.38.11
Mtodo SendKeys
expresso:
Keys: Variant obrigatria. A tecla ou combinao de teclas que voc deseja enviar para o aplicativo, na forma de texto.
Wait: Variant opcional. True para que o Microsoft Excel espere que as teclas sejam processadas antes de devolver o controle macro. False (ou omitido) para continuar a executar a macro sem esperar que as teclas sejam processadas. Este mtodo coloca os pressionamentos de teclas em uma memria intermediria de teclas. Em alguns casos, voc precisa chamar esse mtodo antes de chamar o mtodo que ir usar os pressionamentos de teclas. Por exemplo, para enviar uma senha para uma caixa de dilogo voc precisa chamar o mtodo SendKeys antes de exibir a caixa de dilogo. O argumento Keys pode especificar qualquer tecla nica ou qualquer tecla combinada com ALT, CTRL ou SHIFT (ou qualquer combinao dessas teclas). Cada tecla representada por um ou mais caracteres, tais como "a" para o caractere a, ou "{ENTER}" para a tecla ENTER. Para especificar caracteres que no so exibidos quando voc pressiona a tecla correspondente (por exemplo, ENTER ou TAB), use os cdigos listados na tabela seguinte. Cada cdigo da tabela representa uma tecla no teclado.
Tecla BACKSPACE BREAK CAPS LOCK CLEAR DELETE ou DEL SETA PARA BAIXO END ENTER (teclado numrico) ENTER ESC HELP HOME INS SETA PARA ESQUERDA Cdigo {BACKSPACE} ou {BS} {BREAK} {CAPSLOCK} {CLEAR} {DELETE} ou {DEL} {DOW N} {END} {ENTER} ~ (til) {ESCAPE} ou {ESC} {HELP} {HOME} {INSERT} {LEFT}
Voc tambm pode especificar teclas combinadas com SHIFT e/ou CTRL e/ou ALT. Para especificar uma tecla combinada com uma outra tecla ou teclas, use a tabela seguinte.
TELCA SHIFT CTRL ALT Smbolo cdigo da tecla com: + (sinal de mais) ^ (circunflexo) % (sinal de porcentagem)
Exemplo do mtodo SendKeys: Este exemplo usa o mtodo SendKeys para encerrar o Microsoft Excel.
Application.SendKeys("%ar") %a -> Alt+A -> Abre o menu arquivo. R -> Seleciona o comando Sair.
Com isso encerramos o estudo dos principais mtodos e propriedades do objeto Application.
2.39.1
A Ativao de uma pasta de trabalho pelo uso do mtodo Activate coloca a pasta de trabalho na janela ativa. O comando a seguir ativa a pasta de trabalho aberta chamada "Contabilidade.xls". Workbooks("Contabilidade.xls").Activate Criar uma nova pasta de trabalho: Para criar uma nova pasta de trabalho no VBA, voc usa o mtodo Add. O exemplo a seguir criar uma nova pasta de trabalho. O Microsoft Excel d
Pgina 201 de 219
automaticamente pasta de trabalho o nome PastaN, onde N o prximo nmero disponvel. A nova pasta de trabalho se torna a pasta de trabalho ativa.
Workbooks.Add
Uma maneira melhor de criar uma nova pasta de trabalho atribu-la a uma varivel de objeto. No exemplo seguinte, o objeto Workbook retornado pelo mtodo Add atribudo a uma varivel de objeto, newBook. Em seguida, vrias propriedades de newBook so definidas. Voc pode facilmente controlar a nova pasta de trabalho usando a varivel de objeto newBook.
Set newBook = Workbooks.Add Agora a varivel newBook do tipo Workbook Podemos utilizar todas as propriedades e mtodos do objeto Workbook para configurar a pasta de trabalho newBook newBook.Title = "1995 Sales" newBook.Subject = "Sales" newBook.SaveAs filename:="95Sales.xls"
2.39.2
Quando voc abre uma pasta de trabalho usando o mtodo Open, ela se torna um membro da coleo Workbooks. O procedimento seguinte abre uma pasta de trabalho chamada MyBook.xls localizada na pasta chamada "MyFolder" na unidade C. Workbooks.Open("C:\MyFolder\MyBook.xls") Referir-se a planilhas pelo nmero de ndice: Um nmero de ndice um nmero seqencial atribudo a uma planilha, com base na posio de sua guia de planilha (contando da esquerda para a direita) entre planilhas do mesmo tipo. O exemplo seguinte usa a propriedade Worksheets para ativar a planilha um da pasta de trabalho ativa.
Worksheets(1).Activate
Se voc desejar trabalhar com todos os tipos de planilha (planilhas, grficos, mdulos e folhas de caixa de dilogo), use a propriedade Sheets. O procedimento seguinte ativa a planilha quatro na pasta de trabalho.
Sheets(4).Activate
Observao A ordem dos ndices pode ser alterada se voc mover, adicionar ou excluir planilhas. Referir-se a planilhas por nome: Voc pode identificar planilhas pelo nome usando as propriedades Worksheets e Charts. As instrues seguintes ativam vrias planilhas na pasta de trabalho ativa.
Worksheets("Sheet1").Activate Charts("Chart1").Activate DialogSheets("Dialog1").Activate
Voc pode usar a propriedade Sheets para retornar uma planilha, grfico, mdulo ou folha de caixa de dilogo; a coleo Sheets contm todos estes. O exemplo seguinte ativa a planilha chamada "Ghart1" na pasta de trabalho ativa.
Sheets("Chart1").Activate
Observao: Os grficos incorporados em uma planilha so membros da coleo ChartObjects, enquanto que grficos existentes em suas prprias folhas pertencem coleo Charts.
2.39.3
No Microsoft Excel, voc pode salvar uma pasta de trabalho, planilha, grfico, intervalo, consulta de tabela, relatrio de grfico dinmico, rea de impresso ou intervalo AutoFilter como uma pgina da Web. Voc tambm pode editar arquivos HTML diretamente no Excel. Salvar um documento como uma pgina da Web o processo de criar e salvar um arquivo HTML e quaisquer arquivos de suporte. Para fazer isso, use o mtodo SaveAs, como mostrado no exemplo seguinte, que salva a pasta de trabalho ativa como C:\Reports\myfile.htm.
ActiveWorkbook.SaveAs Filename:="C:\Reports\myfile.htm", FileFormat:=xlHTML
2.39.4
Esse comando deve ser digitado todo em uma nica linha. Caso voc tenha que fazer quebra de linha, deve ser utilizado o caractere de sublinhado no final da linha. Voc pode personalizar a aparncia, contedo, suporte de navegador, suporte de edio, formatos grficos, resoluo de tela, organizao de arquivo e codificao do documento HTML definindo propriedades do objeto DefaultWebOptions e do
Pgina 203 de 219
objeto WebOptions. O objeto DefaultWebOptions contm propriedades que afetam todo o aplicativo. Essas configuraes so sobrescritas por quaisquer configuraes de propriedade de pasta de trabalho que tenham os mesmos nomes (contidas no objeto WebOptions).
Aps definir os atributos, voc pode usar o mtodo Publish para salvar a pasta de trabalho, planilha, grfico, intervalo, tabela de consulta, relatrio de grfico dinmico, rea de impresso ou intervalo AutoFilter de uma pgina da Web. O exemplo seguinte define vrias propriedades de aplicativo e define a propriedade AllowPNG da pasta de trabalho ativa, sobrescrevendo a configurao padro do aplicativo. Finalmente, o exemplo salva o intervalo como "C:\Reports\1998_Q1.htm."
Application.DefaultWebOptions.RelyonVML = True Application.DefaultWebOptions.AllowPNG = True Application.DefaultWebOptions.PixelsPerInch = 96 ActiveWorkbook.WebOptions.AllowPNG = False PublishObjects(1).FileName = "C:\Reports\1998_Q1.htm" PublishObjects(1).Publish
Voc tambm pode salvar os arquivos diretamente em um servidor Web. O exemplo seguinte salva um intervalo de clulas em um servidor Web, dando pgina da Web o endereo de URL http://example.homepage.com/annualreport.htm.
ActiveWorkbook.WebOptions WebOptions.RelyonVML = True WebOptions.PixelsPerInch = 96 ActiveWorkbook..PublishObjects(1) PublishObjects(1).FileName = "http://example.homepage.com/annualreport.htm" PublishObjects(1).Publish
2.39.5
Para editar um documento HTML no Excel, abra primeiro o documento usando o mtodoOpen. O exemplo seguinte abre o arquivo "C:\Reports\1997_Q4.htm" para edio.
Workbooks.Open Filename:="C:\Reports\1997_Q4.htm"
Depois de abrir o arquivo, voc pode personalizar a aparncia, contedo, suporte de navegador, suporte de edio, formatos grficos, resoluo de tela, organizao de arquivo e codificao do documento HTML definindo as propriedades dos objetos DefaultWebOptions e WebOptions.
Pgina 205 de 219
Propriedade Application:
Quando usada sem um qualificador de objeto, essa propriedade retorna um objeto Application representando o aplicativo Microsoft Excel. Quando usada com um qualificador de objeto, essa propriedade retorna um objeto Application representando o criador do objeto especificado (voc pode usar essa propriedade com um objeto de Automao OLE para retornar o aplicativo desse objeto). Somente leitura. Exemplo da propriedade Application: Este exemplo exibe uma mensagem sobre o aplicativo que criou a varivel myObject.
Set myObject = ActiveWorkbook If myObject.Application.Value = "Microsoft Excel" Then MsgBox " um objeto do Microsoft Excel!!!" Else MsgBox "No um objeto do Microsoft Excel!!!" End If
2.39.6
Propriedade Count
Retorna o nmero de objetos da coleo. Long somente leitura. Comentrios: Para fontes de dados OLAP, somente os campos visveis em um relatrio de tabela dinmica so contados. Exemplo da propriedade Count: Este exemplo exibe o nmero de colunas na faixa selecionada na planilhaSheet1. O cdigo tambm testa se a seleo de rea mltipla; se for o caso, o cdigo far um loop pelas reas da seleo de mltiplas reas. Worksheets("Sheet1").Activate areaCount = Selection.Areas.Count If areaCount <= 1 Then MsgBox "A seleo contm " & Selection.Columns.Count & " colunas." Else For i = 1 To areaCount MsgBox "Area " & i & " da selo contm Selection.Areas(i).Columns.Count & " colunas." Next i " & _
2.39.7
Retorna um nico objeto Workbook de uma coleo Workbooks. Sintaxe: expresso.Item(Index) expresso: Obrigatria. Uma expresso que retorne um objeto Workbooks. Index : Variant obrigatria. O nome ou nmero de ndice da pasta de trabalho. Exemplo da propriedade Item (coleo Workbooks): Este exemplo define a varivel pt com a pasta de trabalho de myaddin.xla.
Set wb = Workbooks.Item("myaddin.xla")
2.39.8
Propriedade Parent
Retorna o objeto pai do objeto especificado. Somente leitura. Exemplo da propriedade Parent: Este exemplo exibe o nome do grfico que contm myAxis.
Set myAxis = Charts(1).Axes(xlValue) MsgBox myAxis.Parent.Name
Mtodo Add (coleo Workbooks): Cria uma nova pasta de trabalho. A nova pasta de trabalho se torna a pasta de trabalho ativa. Retorna um objeto W orkbook. Sintaxe: expresso.Add(Template) expresso: Obrigatria. Uma expresso que retorne um objeto W orkbooks. Template: Variant opcional. Determina como a nova pasta de trabalho criada. Se esse argumento for uma cadeia de caracteres especificando o nome de um arquivo do Microsoft Excel existente, a nova pasta de trabalho ser criada com o arquivo especificado como um modelo. Se esse argumento for uma constante, a nova pasta de trabalho conter uma nica
expresso.Close Sintaxe 2: expresso.Close(SaveChanges, FileName, RouteW orkbook) expresso: Obrigatria. Uma expresso que retorne um objeto da lista Relativo a. SaveChanges: Variant opcional. Se no houver alteraes na pasta de trabalho, esse argumento ser ignorado. Se houver alteraes na pasta de trabalho e ela aparecer em outras janelas abertas, esse argumento ser ignorado. Se houver alteraes na pasta de trabalho, mas ela no aparecer em qualquer outra janela aberta, esse argumento especificar se as alteraes devem ser salvas, como mostrado na tabela seguinte. Valores True: Salva as alteraes na pasta de trabalho. Se ainda no houver um nome de arquivo associado pasta de trabalho, FileName ser usado. Se FileName for omitido, o usurio ser solicitado a fornecer um nome de arquivo. False: No salva as alteraes nesse arquivo. Omitido: Exibe uma caixa de dilogo perguntando ao usurio se as alteraes devem ser salvas. FileName: Variant opcional. As alteraes so salvas sob este nome de arquivo. RouteWorkbook: Variant opcional. Se a pasta de trabalho no precisar ser encaminhada para o prximo destinatrio (se no tiver lista de circulao ou se j tiver sido encaminhada), este argumento ser ignorado. Caso contrrio, o Microsoft Excel encaminhar a pasta de trabalho como mostrado na tabela seguinte. Valores: True: Envia a pasta de trabalho para o prximo destinatrio.
Se o Microsoft Excel estiver abrindo um arquivo em formato W KS, W K1 ou W K3 e o argumento UpdateLinks for 2, o Microsoft Excel ir gerar grficos a partir dos grficos anexados ao arquivo. Se o argumento for 0, nenhum grfico ser criado. ReadOnly: Variant opcional. True para abrir a pasta de trabalho em modo somente leitura. Format: Variant opcional. Se o Microsoft Excel estiver abrindo um arquivo de texto, este argumento especificar o caractere delimitador, conforme mostrado na tabela seguinte. Se este argumento for omitido, o delimitador atual ser usado. Valor 1 2 3 4 5 6 Delimitador Tabulaes Vrgulas Espaos Ponto-e-vrgulas Nada Caractere personalizado (consulte o argumento Delimiter)
Password: Variant opcional. Uma seqncia de caracteres que contenha a senha obrigatria para se abrir uma pasta de trabalho protegida. Se esse argumento for omitido e a pasta de trabalho exigir uma senha, o usurio ser solicitado a fornec-la.
Workbooks.Open
"ANALYSIS.XLS"
ActiveWorkbook.RunAutoMacros xlAutoOpen
Referir-se a clulas usando nmeros de ndice: Voc pode usar a propriedade Cells para referir-se a uma nica clula usando nmeros de ndice de linha e coluna. Essa propriedade retorna um objeto Range representando uma nica clula. No exemplo seguinte, Cells(6,1) retorna a clula A6 da planilha Sheet1. Em seguida, a propriedade Value definida como 10.
Worksheets("Sheet1").Cells(6, 1).Value = 10
A propriedade Cells funciona bem para loop atravs de um intervalo de clulas porque voc pode substituir os nmeros de ndice por variveis, conforme mostrado no exemplo seguinte.
Para trabalhar com vrias linhas ou colunas ao mesmo tempo, crie uma varivel de objeto e use o mtodo Union, combinando vrias chamadas propriedade Rows ou Columns. O exemplo seguinte altera para negrito o formato das linhas um, trs e cinco na planilha um da pasta de trabalho ativa.
Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5)) myUnion.Font.Bold = True
Referir-se a intervalos nomeados: Os intervalos so mais fceis de identificar por nome do que por notao A1. Para nomear um intervalo selecionado, clique na caixa de nome na extremidade esquerda da barra de frmulas, digite um nome e, em seguida, pressione ENTER. Referir-se a um intervalo nomeado: O exemplo seguinte refere-se ao intervalo chamado "MyRange" na pasta de trabalho chamada "MyBook.xls".
Range("MyBook.xls!MyRange").Font.Italic = True
O exemplo seguinte se refere ao intervalo especfico de planilha chamado "Sheet1!Sales" na pasta de trabalho chamada "Report.xls".
Range("[Report.xls]Sheet1!Sales").BorderAround weight:=xlthin
Application.Goto
Reference:="MyBook.xls!MyRange"
Selection.ClearContents
O exemplo seguinte mostra como o mesmo procedimento seria escrito para a pasta de trabalho ativa.
Application.Goto
Reference:="MyRange"
Selection.ClearContents
Realizar loop em clulas de um intervalo nomeado O exemplo seguinte faz um loop atravs de cada clula de um intervalo nomeado usando um loop For Each...Next. Se o valor de qualquer clula do intervalo exceder o valor de limit, a cor da clula ser alterada para amarelo.
Const limit As Integer = 25 For Each c In Range("MyRange") If c.Value > limit Then
Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = True
Referir-se a todas as clulas da planilha: Quando voc aplica a propried ade Cells a uma planilha sem especificar um nmero de ndice, o mtodo retorna um objeto Range representando todas as clulas da planilha. O exemplo seguinte limpa o contedo de todas as clulas de Sheet1 na planilha ativa.
Worksheets("Sheet1").Cells.ClearContents
Referir-se a vrios intervalos: Usando o mtodo apropriado, voc pode facilmente referir-se a vrios intervalos. Use os mtodos Range e Union para referir-se a qualquer grupo de intervalos; use a propriedade Areas para referir-se ao grupo de intervalos selecionado em uma planilha. Usar a propriedade Range: Voc pode referir-se a vrios intervalos com a propriedade Range colocando vrgulas entre duas ou mais referncias. O exemplo seguinte limpa o contedo dos trs intervalos de Sheet1.
Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18").ClearContents
Os intervalos nomeados tornam o uso da propriedade Range mais fcil ao trabalhar com vrios intervalos. O exemplo seguinte funciona quando todos os trs intervalos nomeados se encontram na mesma planilha.
myMultipleRange.Font.Bold = True
Usar a propriedade reas: Voc pode usar a propriedade Areas para referir-se ao intervalo selecionado ou coleo de intervalos em uma seleo de vrias reas. O exemplo seguinte conta as reas da seleo. Se houver mais de uma rea, uma mensagem de aviso ser exibida.
If Selection.Areas.Count > 1 Then MsgBox "A operao no permitida em uma selao mltipla." End If
Uma outra maneira mais fcil de se fazer um loop atravs de um intervalo usar um loop For Each...Next (descrito no Mdulo 5) com a coleo de clulas retornada pelo mtodo Range. O VBA define automaticamente uma varivel de objeto para a prxima clula cada vez que o loop executado. O seguinte exemplo faz um loop atravs do intervalo A1:D10, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01.
For Each c In Worksheets("Sheet1").Range("A1:D10").Cells Pgina 216 de 219
Se voc no souber os limites do intervalo pelo qual deseja fazer o loop, voc pode usar a propriedade CurrentRegion para retornar o intervalo que envolve a clula ativa. Por exemplo, o exemplo seguinte, quando executado de uma planilha, faz um loop atravs do intervalo que envolve a clula ativa, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01.
For Each c In ActiveCell.CurrentRegion.Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next
2.40.1
Quando voc trabalha com o Microsoft Excel, voc geralmente seleciona uma clula ou clulas e, em seguida, efetua uma ao, como formatar as clulas ou inserir valores nelas. No VBA, normalmente no necessrio selecionar clulas antes de modific-las. Por exemplo, se voc desejar inserir uma frmula na clula D6 usando o Visual Basic, voc no ter que selecionar o intervalo D6. Voc precisa apenas retornar o objeto Range e, em seguida, definir a propriedade Formula com a frmula desejada, conforme mostrado no exemplo seguinte.
Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"
Usar o mtodo Select e a propriedade Selection: O mtodo Select ativa planilhas e objetos em planilhas; a propriedade Selection retorna um objeto representando a seleo atual na planilha ativa da pasta de trabalho ativa. Antes de voc poder usar com xito a propriedade Selection, voc precisa ativar uma pasta de trabalho, ativar ou selecionar uma planilha e, em seguida, selecionar um intervalo (ou outro objeto) usando o mtodo Select. O gravador de macro costuma criar macros que usam o mtodo Select e a propriedade Selection. O exemplo seguinte foi criado pelo uso do gravador de macro, e ilustra como Select e Selection funcionam juntas.
Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name"
Pgina 217
O exemplo seguinte realiza a mesma tarefa sem ativar nem selecionar a planilha ou as clulas.
Worksheets("Sheet1").Range("A1") = "Name" Worksheets("Sheet1").Range("B1") = "Address" Worksheets("Sheet1").Range("A1:B1").Font.Bold = True
2.40.2
Se voc usa o mtodo Select para selecionar clulas, esteja ciente de que Select s funciona na planilha ativa. Se voc executar o seu procedimento Sub a partir do mdulo, o mtodo Select falhar a menos que o seu procedimento ative a planilha antes de usar o mtodo Select em um intervalo de clulas. Por exemplo, o exemplo seguinte copia uma linha de Sheet1 para Sheet2 na pasta de trabalho ativa.
Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste
2.40.3
Voc pode usar o mtodo Activate para ativar uma clula dentro de uma seleo. S pode haver uma clula ativa, mesmo quando um intervalo de clulas selecionado. O exemplo seguinte seleciona um intervalo e, em seguida, ativa uma clula dentro do intervalo sem alterar a seleo. Worksheets("Sheet1").Activate Range("A1:D4").Select Range("B2").Activate
2.40.4
A propriedade ActiveCell retorna um objeto Range representando a clula que est ativa. Voc pode aplicar qualquer das propriedades ou mtodos de um objeto Range clula ativa, como no exemplo seguinte.
Worksheets("Sheet1").Activate
Pgina 218
Observao: Voc s pode trabalhar com a clula ativa quando a planilha na qual ela se encontra a planilha ativa.
2.40.5
Voc pode usar o mtodo Activate para designar qual clula a clula ativa. Por exemplo, o exemplo seguinte torna B5 a clula ativa e, em seguida, a formata com negrito.
Worksheets("Sheet1").Activate Worksheets("Sheet1").Range("B5").Activate ActiveCell.Font.Bold = True
Observao: Para selecionar um intervalo de clulas, use o mtodo Select. Para tornar uma nica clula a clula ativa, use o mtodo Activate. Voc pode usar a propriedade Offset para mover a clula ativa. O exemplo seguinte insere texto na clula ativa do intervalo selecionado e, em seguida, move a clula ativa uma clula para a direita sem alterar a seleo.
Worksheets("Sheet1").Activate Range("A1:D10").Select ActiveCell.Value = "Monthly Totals" ActiveCell.Offset(0, 1).Activate
2.40.6
A propriedade CurrentRegion retorna um intervalo de clulas delimitado por linhas e colunas em branco. No exemplo seguinte, a seleo expandida para incluir as clulas adjacentes clula ativa, que contenham dados. Em seguida, esse intervalo formatado com o formato Currency.
Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.Select Selection.Style = "Currency"
Pgina 219