Anda di halaman 1dari 87

EXCEL AVANADO

Gilberto Cardoso Parreira

ndice analtico

INTRODUO UTILIZANDO TABELAS


Diretrizes para criar uma lista em uma planilha Tamanho e localizao da lista Rtulos de coluna Contedo das linhas e colunas Introduzindo dados atravs de formulrio Validando entrada de dados Restringir entradas de clulas a nmeros, datas ou horas dentro de limites especificados Tipos de restries de dados Operadores de validao de dados Inserindo subtotais em uma lista Funes de resumo para listas subtotalizadas Filtros Filtro avanado Usando o assistente de soma condicional Funes de banco de dados Consolidar dados Diretrizes para especificar reas de origem para uma consolidao Consolidar dados usando referncias 3-D Consolidar dados por posio Consolidar dados por categoria Criar uma Tabela dinmica Assistente de modelo com rastreamento de dados Criar um modelo de formulrio que copia dados da planilha para um banco de dados

1 2
2 2 3 3 3 4 4 6 7 8 9 11 11 12 14 16 16 17 17 17 18 18 19

MENUS DE APLICAO
A interface com o usurio O sistema de menu Criando um novo item de menu dentro do menu padro Criando um novo boto na barra de ferramentas

20
20 20 20 22

FERRAMENTAS ESTATSTICAS
Instalar e usar as Ferramentas de anlise Para instalar as Ferramentas de anlise Para usar as Ferramentas de anlise Ferramenta de anlise Estatstica Descritiva Caixa de dilogo Estatstica Descritiva

23
24 24 24 24 25

ii

Ferramenta de anlise Histograma Caixa de dilogo Histograma Ferramenta de anlise Gerao de Nmero Aleatrio Caixa de dilogo Gerao de Nmero Aleatrio Ferramenta de anlise Regresso Caixa de dilogo Regresso

26 26 28 28 30 30

MACROS
Gravar uma macro Editar uma macro Explorer do projeto A janela de cdigo Elementos da janela Digitando cdigo Executar uma macro Adicionar controles a uma planilha Tipos de botes, caixas de seleo e outros controles na barra de Formulrios Usando referncias relativas e referncias absolutas Referncias absolutas e relativas em cdigo VBA Compreendendo a sintaxe do Visual Basic Sintaxe do comando Activate Sintaxe da funo MsgBox Sintaxe da instruo Option Compare Sintaxe da instruo Dim A linguagem do VBA Objetos, propriedades, mtodos e eventos Objetos do VBA Objeto Application Como usar o objeto Application Objeto Worksheets Propriedade Worksheets Propriedade ActiveSheet Objeto Range Propriedade Range Propriedade Cells Range e Cells Propriedade Offset Mtodo Union A linguagem VBA Tipos de dados Programao estruturada If ... Then ... Else Select Case Do ... Loop

32
32 33 34 35 35 36 37 37 37 39 40 40 40 41 41 42 42 43 44 44 44 45 45 45 46 46 46 47 47 48 49 50 52 52 53 55

iii

For ... To ... Next For ... Each ... Next With...End With Regras de nomenclatura de objetos Trabalhando com dados da planilha Loop atravs de um intervalo de clulas Selecionar e ativar clulas Trabalhar com a clula ativa Criando uma interface com o usurio Erros e tratamentos de erros Direcionando a execuo quando ocorre um erro A instruo On Error A instruo Resume Saindo de um procedimento Tratando os erros em procedimento aninhados Obtendo informaes sobre um erro O objeto Err O objeto Error e a coleo Errors O mtodo AccessError O evento Error Procedimentos automticos

56 57 59 64 66 70 71 73 74 77 77 77 78 78 79 80 80 81 81 81 82

PARA SABER MAIS


Internet Livros

83
83 83

iv

Microsoft Excel Curso Avanado

Introduo
O presente trabalho procura apresentar, de uma maneira o mais prtica possvel, um aplicativo que presena constante em quase todos os computadores hoje em dia mas que, apesar disso, permanece com grande parte de suas reais capacidades ignoradas: o Microsoft Excel. O fato que muitas vezes gastamos um tempo precioso em tarefas repetitivas de manipulao de dados e clculos que poderiam ser realizados em uma frao aprecivel deste tempo, desde que nos debrucemos sobre algumas ferramentas de uso at simples, mas que permanecem escondidas atrs de opes de menus que no utilizamos freqentemente ou at mesmo do medo de enfrentar algumas linhas de programao, como se fosse isto tarefa para iniciados deste mundo de linguagens e cdigos. Durante o estudo deste trabalho, buscaremos desmistificar as ferramentas mais eficazes para introduo de dados em tabelas, busca, filtragem e resumo destes dados, visando extrair a informao oculta por trs de um emaranhado de valores e identificadores. Como ser visto, so ferramentas simples, mas no to simples que no requeiram uma experincia anterior na utilizao bsica do Microsoft Excel, em seus conceitos de utilizao de planilhas, formatao de dados, criao de frmulas para clculos e gerao de grficos. Todos estes assuntos sero considerados como alicerce inicial para este estudo.

"You never finish a spreadsheet. You just stop working on it."

Microsoft Excel Curso Avanado

Utilizando tabelas
No Microsoft Excel, pode-se resumir ou analisar valores em uma lista de vrias maneiras: Para calcular o valor de total geral de uma coluna ou linha de dados, pode-se usar o recurso AutoSoma para criar rapidamente uma frmula que some os valores na coluna ou linha. Pode-se calcular automaticamente subtotais de valores em uma lista. Por exemplo, se voc tiver uma lista que contm valores de vendas de vendedores de diferentes regies, pode-se calcular valores de subtotal para cada vendedor ou cada regio. Para calcular o valor total de linhas em uma lista que atendam a uma condio especfica, pode-se usar o comando AutoFiltro para exibir as linhas que atendem condio e usar, em seguida, o recurso AutoSoma para calcular o total para as linhas visveis apenas. Para resumir somente os valores que atendem a critrios complexos, como "fornecer uma conta das linhas ou registros em que as vendas foram superior a 1.000 mas inferiores a 2.500", use uma funo de banco de dados. Para usar uma funo de banco de dados, voc deve criar um intervalo de critrios para especificar a condio a ser atendida. Pode-se criar uma frmula que calcule totais para os valores de uma lista, com base em uma condio especfica, usando o Assistente de soma condicional. Pode-se resumir os valores de uma lista de um relatrio que use mtodos de clculo e formataes especificadas por voc atravs de uma Tabela dinmica.

Diretrizes para criar uma lista em uma planilha


O Microsoft Excel oferece uma srie de recursos que facilitam o gerenciamento e a anlise de dados em uma lista. Para utilizar estes recursos, insira dados em uma lista de acordo com as seguintes diretrizes.

Tamanho e localizao da lista


Evite ter mais de uma lista em cada planilha, pois alguns recursos de gerenciamento de lista, como filtro, s podem ser usados em uma lista de cada vez. Deixe pelo menos uma coluna em branco e uma linha em branco entre a lista e os outros dados da planilha. Este procedimento ajuda o Microsoft Excel a selecionar a lista quando voc classificar, filtrar ou inserir subtotais automticos. Evite colocar linhas e colunas em branco na lista para que o Microsoft Excel detecte e selecione a lista com mais facilidade. Evite colocar dados essenciais esquerda ou direita da lista; os dados podero ficar ocultos quando voc filtrar a lista.

Microsoft Excel Curso Avanado

Rtulos de coluna
Crie rtulos de coluna na primeira linha da lista. O Microsoft Excel usa estes rtulos para criar relatrios e para localizar e organizar dados. Use estilos de fonte, alinhamento, formato, padro, borda ou maisculas para os rtulos de coluna que sejam diferentes do formato atribudo aos dados da lista. Use bordas de clula, e no linhas em branco ou tracejadas, para inserir linhas abaixo dos rtulos quando desejar separar os rtulos dos dados.

Contedo das linhas e colunas


Elabore a sua lista de modo que todas as linhas contenham itens semelhantes na mesma coluna. No insira espaos extras no incio de uma clula; os espaos extras afetam os processos de classificao e localizao. No use uma linha em branco para separar rtulos de colunas da primeira linha de dados.

Introduzindo dados atravs de formulrio


Uma das ferramentas mais simples e talvez menos utilizadas para tratamento de dados do Microsoft Excel o formulrio, que utilizada normalmente para entrada de dados em uma planilha, mas que tambm pode ser utilizado em buscas simples. Para se utilizar o formulrio como entrada de dados basta selecionar os campos de uma lista onde se deseja introduzir dados e selecionar o comando Formulrio, presente no menu Dados. Caso

no exista ainda nenhum dado inserido, basta digitar os rtulos de identificao das colunas onde sero introduzidos dados e acionar o comando Formulrio para comear uma nova lista. Ser exibido ento um formulrio, como mostrado acima, contendo todos os campos selecionados da tabela. Clicando-se em Novo, criado um novo registro limpo que pode ser utilizado para a introduo de dados. A partir da, pode-se ir digitando os dados e teclando-se TAB aps cada 3

Microsoft Excel Curso Avanado

introduo. Ao final dos dados, o cursor voltar para a tecla Novo. Caso se queira continuar a introduzir dados, basta teclar ENTER neste momento e retornar a digitao. Pode-se tambm eliminar linhas da tabela atravs deste formulrio, utilizando-se a tecla Excluir. Cada excluso movimentar os dados remanescentes nas colunas para cima em uma linha. Assim, deve-se ter muito cuidado ao eliminar clulas quando nem todos as colunas de uma lista esto selecionadas, j que a excluso provocar a perda da associao entre os dados. Uma caracterstica menos conhecida desta ferramenta sua capacidade de funcionar como ferramenta de filtro. Esta funo pode ser acionada utilizando-se a tecla Critrios. Neste momento, ser exibido um registro em branco onde o usurio poder introduzir critrios de seleo de registros (exemplos: > 10, <=1000, <> Carlos, etc.) em determinados campos. Note que possvel especificar mais de um critrio ao mesmo tempo. Desta maneira, pode-se criar uma regra que procure aqueles registros que possuam Altura > 1,50 e Idade > 16, por exemplo. Aps definir os critrios, basta utilizar a tecla Formulrio para retornar ao formulrio de entrada de dados. Atravs das teclas Localizar anterior e Localizar prxima pode-se acessar todos os registros que atendam aos critrios especificados.

Validando entrada de dados


Complementando o conjunto de ferramentas de entradas de dados, possvel tambm validar as entradas de dados no Microsoft Excel, ou seja, indicar quais so os valores possveis para cada campo de uma lista. Existe a opo de se exibir mensagens de entrada de dados que orientem o usurio sobre os valores que foram especificados para o campo e at mesmo criar mensagens de erro que alertem sobre valores introduzidos erroneamente. Todos estes ajustes so feitos atravs do comando Validao, presente no menu Dados.

Restringir entradas de clulas a nmeros, datas ou horas dentro de limites especificados


1. Selecione as clulas que voc deseja restringir. 2. No menu Dados, clique em Validao e depois clique na guia Definies. 3. Na caixa Permitir, clique no tipo de dados. Para especificar somente nmeros, clique em Nmero inteiro ou Decimal.

Microsoft Excel Curso Avanado

Para especificar somente datas ou horas, clique em Data ou Hora. 4. Clique no operador que voc deseja na caixa Dados e especifique o limite superior ou inferior para os dados, ou ambos os limites, dependendo do operador selecionado. Pode-se inserir valores, referncias de clulas ou frmulas para os limites. Se voc desejar permitir que a clula que voc est restringindo fique em branco, ou se voc definir limites que usam uma referncia de clula ou frmula que depende de clulas que estejam inicialmente em branco, certifique-se de que Ignorar em branco esteja marcada. Para impor as restries que voc definiu para as clulas em branco, tratando essas clulas

como se contivessem zeros, desmarque a caixa de seleo Ignorar em branco. 5. Para exibir mensagens que solicitam entradas e para explicar ou evitar entradas incorretas,

Microsoft Excel Curso Avanado

especifique os tipos de mensagens que voc deseja nas guias Mensagem de entrada e Alerta de erro. 6. Para desativar a exibio de mensagens, desmarque a caixa de seleo Mostrar mensagem de entrada ao selecionar clula na guia Mensagem de entrada e desmarque a caixa de seleo Mostrar alerta de erro aps ser inserido dado invlido na guia Alerta de erro. Observaes Quando voc especificar o tipo de dados permissvel, a formatao da clula no ser afetada. Para formatar as clulas como nmeros, datas ou horas, clique em Clulas no menu Formatar e clique, em seguida, na guia Nmero. Selecione o formato desejado na caixa Categoria e depois selecione as opes desejadas. Uma frmula para um limite pode avaliar dados apenas na planilha em que voc configurou as restries. Para usar os dados contidos em outras planilhas ou pastas de trabalho em uma frmula, insira uma referncia para os dados externos em uma clula na planilha ativa, ou defina um nome para os dados externos na planilha ativa. A frmula poder, ento, referir-se clula ou ao nome na mesma planilha. Por exemplo, se os dados que voc deseja usar em uma frmula estiverem na clula A6 na primeira planilha em uma pasta de trabalho denominada Despesas.xls, voc poder definir o nome DadosVlidos na planilha ativa como =[Despesas.xls]Plan1!$A$6 e inserir uma referncia para DadosVlidos quando voc especificar os limites para os dados. Voc no poder usar constantes matriciais em frmulas de restrio de dados.

Tipos de restries de dados


As opes exibidas na caixa de dilogo Validao de dados se alteram em funo de suas selees nas caixas Permitir e Dados. Tipo Qualquer valor Descrio e opes No impe restries quanto s entradas vlidas. Use esta definio quando voc desejar exibir uma mensagem de entrada sem verificar as entradas vlidas. Permite que voc insira uma frmula, use uma expresso ou refira-se a um clculo em outra clula para determinar entradas vlidas. Frmula - Insira uma frmula, iniciando com um sinal de igual (=). A frmula dever retornar Verdadeiro ou Falso. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Data Especifica que as entradas devem ser datas. Dados - Clique em um operador e preencha as opes. Data - Insira a data para o operador. Data inicial - Insira a primeira data para o operador. Data final - Insira a ltima data para o operador. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Decimal Especifica que as entradas devem ser nmeros ou fraes. Dados - Clique em um operador e preencha as opes. 6

Personalizada

Microsoft Excel Curso Avanado

Valor - Insira o nmero para o operador. Mnimo - Insira o menor nmero para o operador. Mximo - Insira o maior nmero para o operador. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Lista Permite que voc especifique uma lista das entradas vlidas. Origem - Insira uma referncia para o intervalo na pasta de trabalho onde voc inseriu as entradas vlidas, insira uma referncia a um nome definido, ou digite as entradas vlidas, separadas por vrgulas (por exemplo, inferior, mdio, superior) Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Dropdown na clula - Marque para exibir uma seta drop-down que fornece a lista em que se deve selecionar, quando a pessoa inserindo os dados clicar na clula. Desmarque para omitir a lista drop-down. Comprimento texto do Especifica o nmero de caracteres para as entradas. Dados - Clique em um operador e preencha as opes. Comprimento - Insira o nmero para o operador. Mnimo - Insira o menor nmero para o operador. Mximo - Insira o maior nmero para o operador. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Hora Especifica que as entradas devem ser horas. Dados - Clique em um operador e preencha as opes. Hora - Insira a hora para o operador. Hora inicial - Insira a hora mais antiga para o operador. Hora final - Insira a hora mais recente para o operador. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas. Nmero inteiro Especifica que as entradas devem ser inteiros. Dados - Clique em um operador e preencha as opes. Valor - Insira o nmero para o operador. Mnimo - Insira o menor nmero para o operador. Mximo - Insira o maior nmero para o operador. Ignorar em branco - Marque para permitir entradas em branco na clula. Desmarque para especificar que as entradas em branco no so vlidas.

Operadores de validao de dados


Nas caixas de opes, pode-se inserir valores, referncias de clulas ou frmulas.

Microsoft Excel Curso Avanado

Operador entre

Opes As entradas vlidas so maiores ou iguais entrada atribuda opo Mnimo, Data inicial ou Hora inicial e menores ou iguais entrada atribuda opo Mximo, Data final ou Hora final. As entradas vlidas so menores do que a entrada atribuda opo Mnimo, Data inicial ou Hora inicial ou maiores do que a entrada atribuda opo Mximo, Data final ou Hora final. As entradas vlidas coincidem com a entrada atribuda opo Valor, Comprimento, Data ou Hora. As entradas vlidas no coincidem com a entrada atribuda opo Valor, Comprimento, Data ou Hora. As entradas vlidas ultrapassam a entrada atribuda opo Mnimo, Data inicial ou Hora inicial. As entradas vlidas esto abaixo da entrada atribuda opo Mximo, Data final ou Hora final. As entradas vlidas coincidem ou ultrapassam a entrada atribuda opo Mnimo, Data inicial ou Hora inicial. As entradas vlidas coincidem ou ficam abaixo da entrada atribuda opo Mximo, Data final ou Hora final.

no est entre

igual a diferente de maior do que menor do que maior ou igual a menor ou igual a

Inserindo subtotais em uma lista


Muitas vezes desejamos obter segmentaes de uma lista com os respectivos subtotais de cada segmento. Isto bastante utilizado em vendas, por exemplo, quando necessitamos identificar o volume de vendas para cada regio ou cidade. Uma aplicao industrial poderia ser descobrir o nmero de defeitos de cada categoria em uma amostragem da produo. Este tipo de tarefa bastante comum e o Microsoft Excel possui uma ferramenta para automatiza-la com bastante facilidade. Para utiliz-la, siga os seguintes passos: 1. Primeiramente, classifique a lista pela coluna para a qual voc deseja calcular subtotais. Por exemplo, para resumir as unidades vendidas por cada vendedor em uma lista de vendedores,

Microsoft Excel Curso Avanado

quantidades de venda e o nmero de unidades vendidas, classifique a lista pela coluna do vendedor. Pode-se reordenar as linhas ou colunas de uma lista com base nos valores de uma lista atravs da classificao. Quando voc classifica, o Microsoft Excel reordena as linhas, colunas ou clulas individuais usando a ordem de classificao especificada. Pode-se classificar listas em ordem crescente(1 a 9, A a Z) ou decrescente (9 a 1, Z a A), e classificar com base no contedo de uma ou mais colunas. O Microsoft Excel classifica listas alfabeticamente como padro. Se voc deseja classificar meses e dias da semana de acordo com a ordem do calendrio em vez da ordem alfabtica, use uma ordem de classificao personalizada. Voc tambm pode reordenar listas em uma ordem especfica criando ordens de classificao personalizadas. Por exemplo, se voc possui uma lista que contm a entrada Baixo, Mdio ou Alto em uma coluna, pode-se criar uma ordem de classificao que ordene linhas que contm Baixo primeiro, linhas que contm Mdio em seguida e linhas que contm Alto por ltimo. 2. Clique em uma clula da lista. 3. No menu Dados, clique em Subtotais.

4. Na caixa A cada alterao em, clique na coluna que contm os grupos para os quais voc deseja subtotais. Esta deve ser a mesma coluna pela qual voc classificou sua lista na etapa 1. 5. Na caixa Usar funo, clique na funo que voc deseja usar para calcular os subtotais (ver Funes de resumo para listas subtotalizadas, mais adiante). 6. Na caixa Adicionar subtotal a, marque a caixa de seleo das colunas que contm os valores para os quais voc deseja subtotais.

Funes de resumo para listas subtotalizadas


Pode-se usar qualquer uma das funes abaixo para resumir os dados em uma lista. Clique na funo desejada na caixa Usar funo na caixa de dilogo Subtotais (menu Dados, comando Subtotais). Use esta funo Soma Para resumir A soma dos valores em uma lista. Esta a funo padro para dados numricos. 9

Microsoft Excel Curso Avanado

Contar Mdia Mx Mn Produto Cont.Nms DesvPad DesvPadp Var Varp

O nmero de itens em uma lista. Esta a funo padro para dados no numricos. A mdia dos valores em uma lista. O maior valor em uma lista. O menor valor em uma lista. O resultado da multiplicao de todos os valores em uma lista. O nmero de registros ou linhas em uma lista que contm dados numricos. Uma estimativa do desvio padro de uma populao, onde a lista a amostra. O desvio padro de uma populao onde a lista a populao inteira. Uma estimativa da varincia de uma populao onde a lista a amostra. A varincia de uma populao onde a lista a populao inteira.

Famous Cells and Ranges


AH:H AM:FM BY:BY HO:HO GO2 FU2 F16 IC2 U2 R2:D2 I1:U1 The discovery range The radio range The farewell range The Santa Claus range The destination cell The same to you cell The fighter jet cell The double-vision cell The Irish rock group cell The android range The tied game cell

10

Microsoft Excel Curso Avanado

Filtros
O filtro uma maneira rpida de localizar subconjuntos de dados em uma lista. Para filtrar uma lista, clique em qualquer clula da lista, aponte para Filtrar no menu Dados e clique em AutoFiltro. O Microsoft Excel exibe setas direita dos rtulos das colunas na lista. Para selecionar o valor

que deseja exibir na lista, clique na seta e, em seguida, clique no valor. Ser exibida uma caixa contendo todos os valores contidos na lista, a partir do qual pode-se selecionar qual o valor a ser filtrado. A opo Personalizar... permite acrescentar alguma flexibilidade a filtragem, atravs de

um formulrio onde podem ser especificados todas as clusulas do filtro, como mostrado abaixo.

Filtro avanado
Para filtragens mais elaboradas pode-se fazer uso do Filtro Avanado. Este comando trabalho utilizando critrios que devem ser expressos na prpria planilha, normalmente em uma regio acima da lista que se deseja filtrar. Assim, o processo para se utilizar o filtro avanado o seguinte: 1. Insira algumas linhas acima da lista com a qual se est trabalhando. 2. Copie, na primeira linha desta rea, a primeira linha da lista (que contm os rtulos de cada coluna).

11

Microsoft Excel Curso Avanado

3. Insira, logo abaixo de cada rtulo, os critrios de pesquisa que devem ser utilizados. Critrios de vrios campos na mesma linha funcionam como se estivessem conectados utilizando o operador E, enquanto critrios de vrios campos em linhas diferentes funcionam como se estivessem conectados atravs do operador OR. Nos exemplos mostrados abaixo, a primeira situao pode ser expressa como: encontre todas as macieiras com idade > 12 e altura > 10 .

J no segundo caso, a expresso seria: encontre todas as rvores que ou so macieiras, ou possuem idade maior que 12 ou possuem altura > 10. 4. Ative o comando Filtro avanado, presente no submenu Filtrar do menu Dados. Ser exibida uma caixa de dilogo solicitando as reas onde esto localizadas a lista e os critrios. Uma

vez identificadas estas reas, pode-se clicar em Ok e o filtro ser ativado. Deve-se notar que possvel filtrar a lista no mesmo local onde ela se encontra ou copiar os dados filtrados para outro local, o que pode ser bastante til para a criao de planilhas contendo subconjuntos dos dados originais. 5. Quando o filtro avanado estiver em uso, ser habilitado tambm o comando Mostrar todos, presente no submenu Filtrar do menu Dados. Este comando permitir retornar a situao da planilha para o seu estado original, sem filtragem.

Usando o assistente de soma condicional


Se voc deseja resumir valores em uma lista com base em condies especficas, pode-se usar o Assistente de soma condicional. Por exemplo, se sua lista contiver valores de vendas de 12

Microsoft Excel Curso Avanado

diferentes vendedores, o Assistente de soma condicional poder ajud-lo a criar uma frmula que calcule o valor total das vendas de um vendedor. O Assistente de soma condicional um programa suplementar; se o comando Soma condicional no estiver no submenu Assistente do menu Ferramentas, ser necessrio instalar e carregar o programa suplementar.

1. 2. 3.

Clique em uma clula na lista. No menu Ferramentas, aponte para Assistente, e clique em Soma condicional. Siga as instrues apresentadas no assistente.

13

Microsoft Excel Curso Avanado

Funes de banco de dados


Quando voc precisar analisar se os valores contidos em uma lista atendem a uma condio especfica, ou critrios, poder usar uma funo de planilha de banco de dados. Por exemplo, em uma lista que contm informaes de vendas, pode-se contar todas as linhas ou registros em que as vendas sejam maiores que 1.000 mas menores que 2.500. Algumas funes de planilha de gerenciamento de banco de dados e de listas tm nomes que comeam com as letras "BD". Essas funes, conhecidas tambm como Bdfunes, tm trs argumentos - banco de dados, campo e critrios. argumento de banco de dados o intervalo que contm sua lista. Voc deve incluir a linha que contm os rtulos de coluna no intervalo. argumento de campo o rtulo para a coluna que voc deseja resumir. argumento de critrios o intervalo que contm uma condio especificada por voc.

As tabelas a seguir exemplificam um banco de dados para um pequeno pomar. Cada registro contm informaes sobre uma rvore. No Microsoft Excel podemos chamar o primeiro intervalo de Banco_dados e o segundo intervalo de Critrios. rvore Ma Pra Cereja Ma Pra Ma rvore Ma Pra Vejamos os resultados obtidos pelas diferentes funes de banco de dados atuando nos dados acima: BDCONTAR(Banco_dados;"Idade";A1:F2) igual a 1. Esta funo analisa os registros de macieiras com altura entre 10 e 16 e conta quantos campos Idade nestes registros contm nmeros. BDCONTARA(Banco_dados;"Lucro";A1:F2) igual a 1. Esta funo analisa os registros de macieiras com altura entre 10 e 16 e conta quantos campos Lucro nesses registros no esto em branco. BDMX(Banco_dados;"Lucro";A1:A3) igual a R$ 105,00, o lucro mximo de macieiras e pereiras. BDMN(Banco_dados;"Lucro";A1:B2) igual a R$ 75,00, o lucro mnimo de macieiras acima de 10. BDSOMA(Banco_dados;"Lucro";A1:A2) igual a R$ 225,00, o lucro total de macieiras. 14 Altura >10 Altura 18 12 13 14 9 8 Idade Idade 20 12 14 15 8 9 Produo Produo Lucro 14 R$105,00 10 R$ 96,00 9 R$105,00 10 R$ 75,00 8 R$ 76,80 6 R$ 45,00 Lucro Altura <16

Microsoft Excel Curso Avanado

BDSOMA(Banco_dados;"Lucro";A1:F2) igual a R$ 75,00, o lucro total de macieiras com uma altura entre 10 e 16. BDMULTIPL(Banco_dados;"Produo";A1:F2) igual a 140, o produto das produes das macieiras com altura entre 10 e 16. BDMDIA(Banco_dados;" Produo";A1:B2) igual a 12, a produo mdia das macieiras acima de 10 ps de altura. BDMDIA(Banco_dados;3;Banco_dados) igual a 13, a idade mdia de todas as rvores no banco de dados. BDEST(Banco_dados;"Produo";A1:A3) igual a 2,97, o desvio padro estimado na produo das macieiras e pereiras se os dados do banco de dados forem apenas uma amostra da populao total do pomar. BDDESVPA(Banco_dados;"Produo";A1:A3) igual a 2,65, o desvio padro verdadeiro na produo das macieiras e pereiras se os dados do banco de dados representarem toda a populao do pomar. BDVAREST(Banco_dados;"Produo";A1:A3) igual a 8,8, a varincia estimada na produo das macieiras e pereiras se os dados no banco de dados forem apenas uma amostra da populao total do pomar. BDVARP(Banco_dados;"Produo";A1:A3) igual a 7,04, a varincia verdadeira na produo das macieiras e pereiras se os dados no banco de dados representarem toda a populao do pomar. BDEXTRAIR(Banco_dados;"Produo";Critrios) retornar o valor de erro #NM! porque mais de um registro coincide com os critrios.

15

Microsoft Excel Curso Avanado

Consolidar dados
Pode-se consolidar dados de quatro maneiras: Usando referncias 3-D, o mtodo preferido. Ao usar referncias 3-D, no existem restries quanto ao layout dos dados nas reas de origem. Por posio, quando os dados em todas as reas de origem so dispostos em ordem e localizao idnticas; por exemplo, para combinar dados de uma seqncia de planilhas criadas a partir do mesmo modelo. Se voc estiver inserindo dados, usando uma seqncia de formulrios de planilha baseados no mesmo modelo, e desejar listar os dados inseridos em cada formulrio em uma nica planilha, experimente usar o Assistente de modelo com rastreamento de dados. Por categoria, quando voc deseja resumir um conjunto de planilhas que tm os mesmos rtulos mas organizam os dados de modo diferente. Este mtodo combina os dados que tm rtulos correspondentes em cada planilha. Criando uma tabela dinmica. Este mtodo semelhante consolidao por categoria, mas oferece maior flexibilidade para a reorganizao das categorias.

Diretrizes para especificar reas de origem para uma consolidao


Ao consolidar dados, voc especifica as reas de origem dos dados, quer em frmulas 3-D, quer na caixa Referncia da caixa de dilogo Consolidar. As reas de origem podem ser intervalos de clulas na mesma planilha que a tabela de consolidao, em diferentes planilhas na mesma pasta de trabalho ou em diferentes pastas de trabalho. Use as diretrizes a seguir para definir reas de origem. Para facilitar ainda mais o rastreamento das reas de origem, nomeie cada intervalo e use os nomes na caixa Referncia. Quando as reas de origem e a rea de destino estiverem na mesma planilha, use as referncias de clulas ou intervalos de clulas, ou seus nomes. Quando as origens e o destino estiverem em planilhas diferentes, use as referncias ou os nomes das planilhas e clulas ou intervalos de clulas. Por exemplo, para incluir um intervalo chamado Oramento, contido na planilha Marketing em sua pasta de trabalho, insira Marketing!Oramento. Quando as origens e o destino estiverem em pastas de trabalho diferentes, use as referncias ou os nomes de pastas, planilhas, e clulas ou intervalos. Por exemplo, para incluir um intervalo chamado Vendas, contido em uma planilha chamada Regio Leste existente em outra pasta de trabalho chamada 1996, na mesma pasta, digite o seguinte: '[1996.xls]RegioLeste'!Vendas Quando as origens e o destino estiverem em diferentes pastas de trabalho alocadas em diferentes localizaes, use as referncias ou nomes de caminho completo, de pastas, planilhas, clulas ou intervalos. Por exemplo, para incluir um intervalo chamado Receita, contido na planilha Fevereiro, existente na pasta de trabalho Departamento de Vendas, na pasta Planilhas de Oramentos, digite o seguinte: '[C:\Planilhas de Oramento:\Departamento de Vendas.xls]Fevereiro'!Receita

16

Microsoft Excel Curso Avanado

Observao: Pode-se omitir os nomes de planilhas nas referncias, se os intervalos tiverem nomes atribudos por voc, em vez de nomes criados pelo Microsoft Excel. Por exemplo, '[1996.xls]'!Vendas ou '[C:\Planilhas de Oramento\Departamento de Vendas.xls]'!Receita. Dica: Para inserir uma referncia de origem sem digitar, clique na caixa Referncia e, em seguida, selecione a rea de origem. Para selecionar uma rea de origem em outra pasta de trabalho, clique em Procurar. Para remover temporariamente a caixa de dilogo Consolidar enquanto voc seleciona a rea de origem, clique em Recolher caixa de dilogo.

Consolidar dados usando referncias 3-D


Na planilha de consolidao, copie ou insira os rtulos que voc deseja para os dados consolidados. Clique em uma clula que voc deseja que contenha dados consolidados. Digite uma frmula que inclua referncias s clulas de origem em cada planilha que contm os dados que voc deseja consolidar. Repita as etapas 2 e 3 para cada clula em que voc deseja consolidar dados.

Dica: Para inserir uma referncia em uma frmula sem digitar, insira a frmula at o ponto em que voc precisa da referncia e, em seguida, clique na clula na planilha. Se a clula estiver em outra planilha, primeiro clique na guia da planilha e, em seguida, na clula.

Consolidar dados por posio


1. Clique na clula superior esquerda da rea de destino para os dados consolidados. 2. No menu Dados, clique em Consolidar. 3. Na caixa Funo, clique na funo de resumo que voc deseja que o Microsoft Excel use para consolidar os dados. 4. Na caixa Referncia, insira uma rea de origem que voc deseja consolidar. 5. Clique em Adicionar. 6. Repita as etapas 4 e 5 para cada rea de origem a ser consolidada. 7. Para atualizar automaticamente a tabela de consolidao quando os dados fonte forem alterados, marque a caixa de seleo Criar vnculos com os dados de origem. Para criar vnculos, as reas de origem e de destino devem estar em planilhas diferentes. Assim que voc criar os vnculos, no poder adicionar novas reas de origem nem alterar as reas de origem includas na consolidao. Observao: Quando voc consolida por posio, o Microsoft Excel no copia os rtulos de categorias existentes nas reas de origem para a rea de destino. Se voc desejar rtulos na planilha de destino, copie ou insira-os manualmente.

Consolidar dados por categoria


1. 2. 3. 4. 5. Clique na clula superior esquerda da rea de destino para os dados consolidados. No menu Dados, clique em Consolidar. Na caixa Funo, clique na funo de resumo que voc deseja que o Microsoft Excel use para consolidar os dados. Na caixa Referncia, insira uma rea de origem que voc deseja consolidar. Certifique-se de incluir os rtulos de dados na seleo. Clique em Adicionar. 17

Microsoft Excel Curso Avanado

6. 7.

Repita as etapas 4 e 5 para cada rea de origem que voc deseja consolidar. Em Usar rtulos na, marque as caixas de seleo que indicam onde os rtulos esto posicionados na rea de origem: quer na linha superior, quer na coluna esquerda ou em ambas. Para atualizar automaticamente a tabela de consolidao quando os dados fonte forem alterados, marque a caixa de seleo Criar vnculos com os dados de origem.

8.

Para criar vnculos, as reas de origem e de destino devem estar em planilhas diferentes. Assim que voc criar vnculos, no poder adicionar novas reas de origem nem alterar as reas de origem includas na consolidao. Observao: Os rtulos existentes em uma rea de origem, que no coincidirem com os rtulos em outras reas de origem, resultaro em linhas ou colunas separadas quando voc consolidar dados.

Criar uma Tabela dinmica


Tabela dinmica uma tabela interativa que resume e analisa dados de listas e tabelas existentes. Use o Assistente da tabela dinmica para especificar a lista ou tabela que voc deseja usar e definir como voc quer organizar os dados na Tabela dinmica. Aps ter criado uma Tabela dinmica, pode-se reorganizar os dados arrastando os campos e itens. Quando voc baseia uma Tabela dinmica em dados externos, possvel que voc queira recuperar os dados externos antes de criar a Tabela dinmica. 1. Abra a pasta de trabalho onde voc deseja criar a Tabela dinmica. Se voc estiver baseando a Tabela dinmica em uma lista ou banco de dados do Microsoft Excel, clique em uma clula da lista ou do banco de dados. 2. 3. No menu Dados, clique em Relatrio da tabela dinmica. Siga as instrues do Assistente da tabela dinmica.

Assistente de modelo com rastreamento de dados


O suplemento Assistente de modelo com rastreamento de dados cria um modelo que vincula clulas selecionadas em uma pasta de trabalho a campos em um banco de dados. Quando voc baseia uma nova pasta de trabalho no modelo e insere dados nas clulas vinculadas, o Microsoft Excel cria um novo registro no banco de dados e copia os dados para os campos de dados correspondentes. Por exemplo, suponha que voc deseje rastrear acidentes de trabalho de vrias fbricas conectadas por uma rede. Primeiro, crie um formulrio em uma planilha que solicite as informaes necessrias para cada relatrio de acidente. Em seguida, use o Assistente de modelo para criar um modelo a partir do formulrio e vincular o modelo a um banco de dados central. Quando os trabalhadores preencherem um novo relatrio de acidente de trabalho baseado no modelo, criaro um relatrio impresso e um registro correspondente no banco de dados. Se as pastas de trabalho j existentes contiverem dados que voc deseja incluir no novo banco de dados, o Assistente de modelos poder adicionar os dados automaticamente. Entretanto, as posies dos dados nas pastas de trabalho existentes devero coincidir com as posies das clulas que voc selecionar para os campos de dados. Por exemplo, se na etapa 3 do Assistente de modelo voc indicar que o campo ID do Funcionrio est inserido na clula $D$4 da planilha chamada Dados_de_Pessoal, todas as pastas de trabalho existentes devero conter o nmero do funcionrio na clula Dados_de_Pessoal!$D$4. Se as posies dos dados no coincidirem, possvel que sejam adicionados registros incompletos ao banco de dados. 18

Microsoft Excel Curso Avanado

O banco de dados pode ser uma lista do Microsoft Excel ou um banco de dados do Microsoft Access, Microsoft FoxPro, dBase ou Paradox para o qual voc instalou o driver ODBC necessrio e outros componentes de acesso a dados. Armazene o banco de dados em um local da rede que todos os usurios do formulrio possam acessar. Pode-se criar relatrios a partir dos dados gravados ou us-los como voc usaria qualquer banco de dados. Para alterar os dados contidos em um registro, pode-se reabrir e editar a cpia gravada do formulrio associada a esse registro. Se voc excluir a cpia do formulrio, o registro correspondente ser mantido no banco de dados. Pode-se excluir o registro como o faria com qualquer registro nesse tipo de banco de dados. Para tornar o modelo disponvel para todos os usurios, armazene o modelo em uma posio acessvel da rede. Em seguida, crie um atalho para o modelo e instrua os usurios a copiar o atalho para a pasta Modelos existente na rea de trabalho de cada um. A pasta Modelos est na pasta em que o Office ou o Microsoft Excel foi instalado. Para obter maiores informaes sobre como usar o Assistente de modelo, clique em .

Criar um modelo de formulrio que copia dados da planilha para um banco de dados
Se o comando Assistente de modelo no estiver no menu Dados, voc precisar instalar o suplemento Assistente de modelo com rastreamento de dados antes de executar este procedimento. 1. Abra a pasta de trabalho em que voc inserir os dados que deseja copiar para um banco de dados. Se voc j salvou um formulrio como um modelo de pasta de trabalho, clique em Novo no menu Arquivo e crie uma nova pasta de trabalho a partir do modelo. Clique em Salvar, e salve a nova pasta de trabalho com outro nome. Em seguida, inicie o Assistente de modelo, o que salvar a pasta de trabalho como um modelo. 2. Insira rtulos para os dados que voc deseja que sejam inseridos na planilha. Insira cada rtulo em uma clula acima ou esquerda da clula que contm os dados. Os rtulos sero usados como nomes de campo no banco de dados. 3. No menu Dados, clique em Assistente de modelo. 4. Siga as etapas do assistente. Observao O banco de dados que voc vincula ao modelo de formulrio pode ser uma lista do Microsoft Excel ou um banco de dados do Microsoft Access, Microsoft FoxPro, dBase ou Paradox para o qual voc instalou o driver ODBC necessrio e outros componentes de acesso a dados.

A frmula favorita de Shakespeare


um fato bem pouco conhecido, mas Shakespeare estava trabalhando em uma planilha Excel quando criou uma frmula que lhe inspirou um de seus mais famosos trabalhos...

19

Microsoft Excel Curso Avanado

Menus de aplicao
Um fator essencial na criao de aplicativos personalizados oferecer uma forma simples e consistente para o usurio interagir com seu aplicativo menus personalizados e barra de ferramentas customizadas.

A interface com o usurio


Menus so listas suspensas, a partir das quais o usurio pode fazer suas escolhas de comandos. Estes comandos podem ser agrupados em um mesmo nvel de menu fornecendo um mtodo simples e consistente. Podemos tambm atribuir teclas de atalho aos comandos mais usuais, agilizando o manuseio da aplicao. Alm dos menus podemos customizar as barras de ferramentas atravs dos seus botes, mas este mtodo somente ser acessvel atravs do mouse. Como vantagem, as barras de ferramentas permanecem visveis todo o tempo dispensando a necessidade de treinamentos exaustivos. Devemos fornecer um conjunto de opes que se complementem permitindo ao usurio escolher a melhor forma de acesso aos comandos. Eventualmente podemos prescindir das duas opes acima e colocar comandos diretamente sobre a planilha de trabalho, como vimos anteriormente.

O sistema de menu
O sistema de menus do Microsoft Excel composto de um conjunto inteiro de menus disponveis de dos itens de cada menu. Por padro, o Excel exibia a barra de menus sensvel ao contexto do usurio, ou seja, opes que no podem ser ativadas ficam em tom cinza. Podemos abrir um novo comando na barra de menus existente no Excel ou podemos criar um novo boto de menu em uma barra de ferramentas. Antes de mais nada necessrio um planejamento sobre como ser o menu.

Criando um novo item de menu dentro do menu padro


Para adicionar um comando a um menu execute os seguintes passos: 1. Mostre a barra de menus que contm o menu ao qual voc deseja adicionar um comando. Normalmente este ser o menu padro da aplicao. 2. No menu Ferramentas, clique em Personalizar e depois clique na guia Comandos. 3. Na caixa Categorias, clique na categoria do comando Novo Menu

20

Microsoft Excel Curso Avanado

4. Arraste o comando Novo Menu da caixa Comandos para o menu na barra de menus soltando-a l. Observe que uma barra escura mostra a posio onde o novo comando ser

inserido. Assim que o mouse for liberado aparecer no local o novo menu. 5. Modifique a propriedade Nome e, em seguida, escolha uma macro a ser atribuda ao menu. Nem todas as propriedades se aplicam a este menu. 6. Outros comandos podem ser inseridos dentro deste menu, bastando que eles sejam arrastados para a caixa existente abaixo do menu. Na figura, o comando de menu Recortar est sendo movido para o primeiro nvel dentro do novo comando de menu.

21

Microsoft Excel Curso Avanado

Criando um novo boto na barra de ferramentas


Para adicionar um menu personalizado a uma barra de ferramentas o procedimento o mesmo adotado para criar menus. Mas o programador dever soltar o mouse com o comando desejado sobre uma das barras de ferramentas existentes e no sobre a barra de menus. 1. Mostre a barra de ferramentas qual voc deseja adicionar um menu personalizado. 2. No menu Ferramentas, clique em Personalizar e depois clique na guia Comandos 3. Na caixa Categorias, clique em Novo menu 4. Arraste Novo menu da caixa Comandos para a barra de ferramentas exibida. 5. Clique com o boto direito do mouse no novo menu na barra de ferramentas e, em seguida, digite um nome na caixa Nome no menu de atalho. Pressione a tecla Enter. 6. Para adicionar um comando ao menu personalizado, clique no menu personalizado na barra de ferramentas para exibir uma caixa vazia. Clique na categoria do comando na caixa Categorias e, em seguida, arraste o comando da caixa Comandos para a caixa vazia no menu personalizado.

22

Microsoft Excel Curso Avanado

Ferramentas estatsticas

O Microsoft Excel fornece um conjunto de ferramentas para anlise de dados, denominado Ferramentas de anlise, que pode ser usado para pular etapas no desenvolvimento de anlises estatsticas ou de engenharia complexas. Voc fornece os dados e os parmetros para cada anlise; a ferramenta utiliza as funes de macro de estatstica ou engenharia adequadas e exibe os resultados em uma tabela de sada. Algumas ferramentas geram grficos alm das tabelas de sada. Para exibir uma lista das ferramentas de anlise disponveis, clique em Anlise de dados no menu Ferramentas. Se o comando Anlise de dados no estiver no menu Ferramentas, execute o Programa de Instalao para instalar as Ferramentas de anlise. Depois de instalar as Ferramentas de anlise, voc deve selecion-la no Gerenciador de suplementos. Para utilizar estas ferramentas, voc precisa estar familiarizado com a rea de estatstica ou engenharia especfica para a qual deseja desenvolver anlises. Observao: O Microsoft Excel fornece muitas outras funes estatsticas, financeiras e de engenharia para as planilhas. Para visualizar uma lista das funes de planilha disponveis, clique em Editar frmula na barra de frmulas e, em seguida, clique na seta abaixo em insero de funo .

23

Microsoft Excel Curso Avanado

Instalar e usar as Ferramentas de anlise


Para usar uma ferramenta de anlise, voc precisa organizar os dados que deseja analisar em colunas ou linhas na sua planilha. Este o seu intervalo de entrada. Se o comando Anlise de dados no estiver no menu Ferramentas, voc precisa instalar as Ferramentas de anlise no Microsoft Excel.

Para instalar as Ferramentas de anlise


1. No menu Ferramentas, clique em Suplementos. Se Ferramentas de anlise no estiver includo na caixa de dilogo Suplementos, clique em Procurar e localize a unidade de disco, o nome da pasta e o nome do arquivo para o suplemento Ferramentas de anlise, Analys32.xll - geralmente localizado na pasta Biblioteca\Anlise - ou execute o Programa de Instalao se ele no estiver instalado. 2. Marque a caixa de seleo Ferramentas de anlise.

Para usar as Ferramentas de anlise


1. No menu Ferramentas, clique em Anlise de dados. 2. Na caixa Ferramentas de anlise, clique na ferramenta que voc deseja utilizar. 3. Insira o intervalo de entrada e o intervalo de sada e, em seguida, selecione as opes desejadas. Observao Os suplementos selecionados na caixa de dilogo Suplementos permanecem ativos at que voc os remova.

Ferramenta de anlise Estatstica Descritiva


Esta ferramenta de anlise gera um relatrio de estatstica monovarivel dos dados no intervalo de entrada, fornecendo informaes sobre a tendncia central e variabilidade dos seus dados.

24

Microsoft Excel Curso Avanado

Caixa de dilogo Estatstica Descritiva

Intervalo de entrada Insira a referncia de clula para os dados que voc deseja analisar. A referncia deve consistir em dois ou mais intervalos de dados adjacentes, ordenados em colunas ou linhas. Agrupado por Para indicar se os dados no intervalo de entrada esto ordenados em linhas ou em colunas, clique em Linhas ou Colunas. Rtulos na primeira linha/Rtulos na primeira coluna Se a primeira linha do seu intervalo de entrada contiver rtulos, marque a caixa de seleo Rtulos na primeira linha. Se os rtulos estiverem na primeira coluna do intervalo de entrada, marque a caixa de seleo Rtulos na primeira coluna. Desmarque a caixa se o intervalo de entrada no contiver rtulos; o Microsoft Excel gera os rtulos de dados adequados para a tabela de sada. Nvel de confiabilidade p/mdia Selecione esta opo se quiser incluir uma linha na tabela de sada para o nvel de confiana da mdia. Na caixa, insira o nvel de confiana a ser usado. Por exemplo, um valor de 95% calcula o nvel de confiana da mdia a uma significncia de 5%. Ensimo maior Selecione esta opo se quiser incluir uma linha na tabela de sada para o ensimo maior valor para cada intervalo de dados. Na caixa, insira o nmero a ser usado para N. Se voc inserir 1, esta linha conter o mximo do conjunto de dados.

25

Microsoft Excel Curso Avanado

Ensimo menor Selecione esta opo se quiser incluir uma linha na tabela de sada para o ensimo menor valor para cada intervalo de dados. Na caixa, insira o nmero a ser usado para N. Se voc inserir 1, esta linha conter o mnimo do conjunto de dados. Intervalo de sada Insira a referncia para a clula superior esquerda da tabela de sada. Esta ferramenta gera duas colunas de informaes para cada conjunto de dados. A coluna esquerda contm rtulos de estatsticas e a coluna direita contm as estatsticas. O Microsoft Excel cria uma tabela de duas colunas de estatsticas para cada coluna ou linha no intervalo de entrada, dependendo da opo Agrupado por selecionada. Nova planilha Clique nesta opo para inserir uma nova planilha na pasta de trabalho atual e colar os resultados na clula A1 da nova planilha. Para nomear a nova planilha, digite um nome na caixa. Nova pasta de trabalho Clique nesta opo para criar uma nova pasta de trabalho e colar os resultados em uma nova planilha na nova pasta de trabalho. Resumo estatstico Selecione esta opo se quiser que o Microsoft Excel gere um campo para cada uma das seguintes estatsticas na tabela de sada: Mdia, Erro padro (da mdia), Mediana, Modo, Desvio padro, Varincia, Curtose, Distoro, Intervalo, Mnimo, Mximo, Soma, Contagem, Maior (n), Menor (n) e Nvel de confiana.

Ferramenta de anlise Histograma


Esta ferramenta de anlise calcula as freqncias individuais e cumulativas para um intervalo de clulas de dados e dados binrios. Esta ferramenta gera dados para o nmero de ocorrncias de um valor em um conjunto de dados. Por exemplo, em uma turma de 20 alunos, voc poderia definir a distribuio dos resultados das notas nas categorias de graus por letras. Uma tabela do histograma apresenta os limites do grau em letras e o nmero de pontos entre o limite mais baixo e o limite atual. O resultado nico mais freqente a moda dos dados.

Caixa de dilogo Histograma


Intervalo de entrada Insira a referncia para o intervalo de dados que voc deseja analisar. Intervalo do bloco (opcional) Insira a referncia de clula a um intervalo com um conjunto opcional de valores limites que definem os intervalos binrios. Estes valores devem estar em ordem crescente. O Microsoft Excel conta o nmero de pontos de dados entre o nmero binrio atual e o binrio adjacente mais alto, se houver. Conta-se um nmero em um binrio especfico se este for igual ou menor do que o nmero binrio at o ltimo binrio. Todos os valores abaixo do valor binrio e acima do valor do ltimo binrio so contados. Se voc omitir o intervalo binrio, o Microsoft Excel criar um conjunto de nmeros binrios uniformemente distribudos entre os valores mnimo e mximo dos dados. 26

Microsoft Excel Curso Avanado

Rtulos Selecione esta opo se a primeira linha ou coluna do seu intervalo de entrada contiver rtulos. Desmarque esta opo se o intervalo de entrada no contiver rtulos; o Microsoft Excel gera os rtulos de dados adequados para a tabela de sada.

Intervalo de sada Insira a referncia da clula superior esquerda da tabela de sada. O Microsoft Excel determinar automaticamente o tamanho da rea de sada e exibir uma mensagem se a tabela de sada estiver prestes a substituir os dados existentes. Nova planilha Clique nesta opo para inserir uma nova planilha na pasta de trabalho atual e colar os resultados na clula A1 da nova planilha. Para nomear a nova planilha, digite um nome na caixa. Nova pasta de trabalho Clique nesta opo parar criar uma nova pasta de trabalho e colar os resultados em uma nova planilha na nova pasta de trabalho. Pareto (histograma classificado) Selecione esta opo para apresentar dados na tabela de sada em ordem de freqncia decrescente. Se esta opo no estiver selecionada, o Microsoft Excel apresentar os dados em ordem crescente e omitir as trs colunas da extrema direita que contm os dados classificados. Porcentagem cumulativa Selecione esta opo para gerar uma coluna na tabela de sada para porcentagens cumulativas e incluir uma linha de porcentagens cumulativas no grfico de histograma. Desmarque esta opo para omitir as porcentagens cumulativas. Resultado do grfico Selecione esta opo para gerar automaticamente um grfico de histograma interno na tabela de sada.

27

Microsoft Excel Curso Avanado

Ferramenta de anlise Gerao de Nmero Aleatrio


Esta ferramenta de anlise preenche um intervalo com nmeros randmicos independentes retirados de uma dentre vrias distribuies. Pode-se usar essa ferramenta para caracterizar indivduos em uma populao com uma distribuio de probabilidade. Por exemplo, pode-se usar uma distribuio normal para caracterizar a populao de alturas dos indivduos ou pode usar uma distribuio de Bernoulli de dois resultados possveis para caracterizar a populao de resultados de cara ou coroa. Observao: Para retornar um nmero randmico uniformemente distribudo maior ou igual a 0 e menor do que 1 sempre que a planilha for calculada, use a funo RANDMICO(). Para retornar um nmero randmico entre os nmeros especificados sempre que a planilha for calculada, use a funo RANDMICOENTRE ().

Caixa de dilogo Gerao de Nmero Aleatrio

Nmero de variveis Insira o nmero de colunas de valores que voc deseja na tabela de sada. Se no inserir um nmero, o Microsoft Excel preencher as colunas da tabela de sada especificada. Nmero de nmeros aleatrios Insira o nmero de pontos de dados que voc deseja visualizar. Cada ponto de dados aparece em uma linha da tabela de sada. Se voc no inserir um nmero, o Microsoft Excel preencher todas as linhas da tabela de sada especificada. Distribuio Selecione o mtodo de distribuio que voc deseja usar para criar valores randmicos.

28

Microsoft Excel Curso Avanado

Uniforme Caracterizada por limites inferiores e superiores. As variveis so tiradas com probabilidade igual de todos os valores no intervalo. Um aplicativo comum usa uma distribuio uniforme no intervalo de 0 a 1. Normal Caracterizada por uma mdia e um desvio padro. Um aplicativo comum usa uma mdia de 0 e um desvio padro de 1 para a distribuio normal padro. Bernoulli Caracterizada por uma probabilidade de xito (valor p) em uma determinada tentativa. As variveis randmicas Bernoulli tm o valor 0 ou 1. Por exemplo, pode-se formular uma varivel randmica uniforme no intervalo de 0 a 1. Se a varivel for menor ou igual probabilidade de xito, atribui-se o valor 1 varivel randmica Bernoulli; caso contrrio, ser atribudo o valor 0. Binomial Caracterizada por uma probabilidade de xito (valor p) para vrias tentativas. Por exemplo, podese gerar variveis randmicas Bernoulli do nmero de tentativas, cuja soma uma varivel randmica binomial. Poisson Caracterizada por um valor lambda equivalente a 1/mdia. A distribuio Poisson usada com freqncia para caracterizar o nmero de eventos que ocorre por unidade de tempo - por exemplo, uma taxa mdia na qual os carros chegam a um posto de pedgio. Padronizada Caracterizada por um limite inferior e superior, uma etapa, uma taxa de repetio para os valores e uma taxa de repetio para a seqncia. Discreta Caracterizada por um valor e pelo intervalo de probabilidade associado. O intervalo deve conter duas colunas: a coluna da esquerda contm valores e a da direita deve conter probabilidades associadas ao valor nesta linha. A soma das probabilidades deve ser 1. Parmetros Insira um valor ou valores para caracterizar a distribuio selecionada. Semente aleatria Insira um valor opcional a partir do qual nmeros randmicos possam ser gerados. Pode-se voltar a usar este valor para produzir os mesmos nmeros randmicos posteriormente. Intervalo de sada Insira a referncia da clula superior esquerda da tabela de sada. O Microsoft Excel determinar automaticamente o tamanho da rea de sada e exibir uma mensagem se a tabela de sada estiver prestes a substituir os dados existentes.

29

Microsoft Excel Curso Avanado

Nova planilha Clique nesta opo para inserir uma nova planilha na pasta de trabalho atual e colar os resultados na clula A1 da nova planilha. Para nomear a nova planilha, digite um nome na caixa. Nova pasta de trabalho Clique nesta opo parar criar uma nova pasta de trabalho e colar os resultados em uma nova planilha na nova pasta de trabalho.

Ferramenta de anlise Regresso


Esta ferramenta de anlise executa uma anlise de regresso linear, usando o mtodo dos mnimos quadrados para ajustar uma linha atravs de um conjunto de observaes. Pode-se usar esta ferramenta para analisar como uma varivel dependente nica afetada pelos valores de uma ou mais variveis independentes - por exemplo, como o desempenho de um atleta afetado por fatores como idade, altura e peso. Pode-se ratear pores na medida do desempenho para cada um desses trs fatores, com base em um conjunto de dados de desempenho e, em seguida, usar os resultados para prever o desempenho de um atleta novo ainda no testado.

Caixa de dilogo Regresso

Intervalo Y de entrada Insira a referncia para o intervalo de dados dependentes. O intervalo deve consistir em uma nica coluna de dados. Intervalo X de entrada Insira a referncia para o intervalo de dados independentes. O Microsoft Excel ordena variveis independentes deste intervalo em ordem crescente da esquerda para a direita. O nmero mximo de variveis independentes 16.

30

Microsoft Excel Curso Avanado

Rtulos Selecione esta opo se a primeira linha ou coluna do intervalo ou intervalos de entrada contiver rtulos. Desmarque esta opo se o intervalo de entrada no contiver rtulos; o Microsoft Excel gera os rtulos de dados adequados para a tabela de sada. Nvel de confiana Selecione esta opo para incluir um nvel adicional na tabela de resumo de sada. Nesta caixa, insira um nvel de confiana adicional que deseja aplicar ao nvel padro de 95%. Constante zero Selecione esta opo para forar a linha de regresso a passar pela origem. Intervalo de sada Insira a referncia para a clula superior esquerda da tabela de sada. Deixe pelo menos sete colunas para a tabela de resumo de sada, que inclui uma tabela anova, coeficientes, erro padro de estimativa dos y, valores r2, nmero de observaes e erro padro dos coeficientes. Nova planilha Clique nesta opo para inserir uma nova planilha na pasta de trabalho atual e colar os resultados na clula A1 da nova planilha. Para nomear a nova planilha, digite um nome na caixa. Nova pasta de trabalho Clique nesta opo parar criar uma nova pasta de trabalho e colar os resultados em uma nova planilha na nova pasta de trabalho. Resduos Selecione esta opo para incluir resduos na tabela de sada de resduos. Resduos padronizados Selecione esta opo para incluir resduos padronizados na tabela de sada de resduos. Plotar resduos Selecione esta opo para gerar um grfico para cada varivel independente por resduo. Plotar ajuste de linha Selecione esta opo para gerar um grfico para valores previstos por valores observados. Plotagem de probabilidade normal Selecione esta opo para gerar um grfico usando plotagens de probabilidade normal.

31

Microsoft Excel Curso Avanado

Macros
O gnio da lmpada
Um homem estava caminhando ao longo da praia quando encontrou uma lmpada. Aps esfrega-la apareceu um gnio que declarou: Eu sou o gnio mais poderoso do mundo. Como sou to poderoso, eu posso realizar qualquer desejo que voc queira, mas apenas um. O homem mostrou um mapa do Oriente Mdio e disse Eu gostaria que existisse paz entre os povos desta rea.. O gnio respondeu: Difcil... Estes povos tem estado em guerra desde o incio dos tempos. Eles sempre estaro lutando e no h nada que eu possa fazer a respeito disso. Esta alm de meus limites. Escolha outra coisa... O homem pensou um pouco e disse: Bom, meu pessoal est mudando para Excel. Acho que voc poderia ensinar-lhes um poucos deste tal de VBA... Gnio: Uhhh, vamos dar uma olhada naquele mapa novamente...

Caso voc execute uma tarefa vrias vezes no Microsoft Excel, possvel automatiz-la com uma macro. Uma macro uma seqncia de comandos e funes armazenadas em um mdulo do Visual Basic e pode ser executada sempre que voc precisar executar a tarefa. A macro gravada da mesma forma que uma msica em um toca-fitas. Em seguida, voc executa a macro para repetir, ou reproduzir, os comandos. 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 sero gravadas. Toda vez que voc grava uma macro, ela armazenada em um novo mdulo anexado a uma pasta de trabalho. Com o Editor do Visual Basic pode-se 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.

Gravar uma macro


1. No menu Ferramentas, aponte para Macro e, em seguida, clique em Gravar nova macro. 2. Na caixa Nome da macro, insira um nome para a macro. O primeiro caracter do nome da macro deve ser uma letra. Os demais caracteres podem ser letras, nmeros ou caracteres sublinhados. No so permitidos espaos no nome de uma macro; um caracter sublinhado funciona da mesma forma que um separador de palavras

32

Microsoft Excel Curso Avanado

3. Para executar a macro pressionando uma tecla de atalho do teclado, insira uma letra na caixa Tecla de atalho. Use CTRL + letra (para as letras minsculas) ou CTRL + SHIFT + letra (para as letras maisculas). A letra da tecla de atalho no pode ser um nmero ou caracter especial. A tecla de atalho substituir quaisquer teclas de atalho padro do Microsoft Excel enquanto a pasta de trabalho que contm a macro estiver aberta. 4. Na caixa Armazenar macro em, clique no local onde voc deseja gravar a macro. Se voc deseja que uma macro fique disponvel sempre que usar o Microsoft Excel, grave a macro na pasta de trabalho pessoal de macros da pasta XLIncio. Para incluir uma descrio da macro, digite a descrio na caixa Descrio. 5. Clique em OK. Se voc pressionar clulas durante a execuo de uma macro, a macro selecionar as mesmas clulas independentemente das clulas que foram selecionadas pela primeira vez, pois ela grava as referncias absolutas de clula. Se voc desejar que uma macro selecione clulas independentemente da posio da clula ativa quando a macro estiver sendo executada, defina o gravador de macro para gravar as referncias relativas de clula. Na barra de ferramentas Parar gravao, clique em Referncia relativa. O Microsoft Excel continuar a gravar macros com referncias relativas at que voc saia do Microsoft Excel ou at que voc clique em Referncia relativa novamente. 6. Execute as aes que voc deseja gravar. 7. Na barra de ferramentas Parar gravao, clique em Parar gravao.

Dica: Se desejar que uma macro selecione uma clula especfica, execute uma ao e, em seguida, selecione outra clula relativa clula ativa, pode-se combinar o uso de referncias absolutas e relativas quando for gravar a macro. Basta iniciar a gravao com Referncia relativa no pressionada e ativ-la to logo terminem os comandos que se deseja realizar em modo absoluto.

Editar uma macro


Antes de editar uma macro, familiarize-se com o Editor do Visual Basic. O Editor do Visual Basic pode ser usado para gravar e editar macros anexadas s pastas de trabalho do Microsoft Excel. 1. No menu Ferramentas, aponte para Macro e, em seguida, clique em Macros. 2. Na caixa Nome da macro, insira o nome da macro. 3. Clique em Editar. A janela a seguir mostra o Editor de Cdigos do VBA. Do lado esquerdo temos o Explorer do Projeto e do lado direito temos a Janela do Editor de Cdigo. 33

Microsoft Excel Curso Avanado

Se voc no estiver vendo a janela como abaixo, clique em Exibir e Explorer do projeto ou CTRL-R e, em seguida, clique em Exibir e Cdigo; ou F7.

Explorer do projeto
Exibe uma lista hierrquica dos projetos e todos os seus itens contidos e mencionados por cada um deles. Elementos da janela: os 3 botes na parte superior da janela do projeto so: Visualizar cdigo: exibe a janela Cdigo para que voc edite e grave o cdigo associado ao tem selecionado. Visualizar objeto: exibe a janela Objeto do item selecionado, um documento existente ou o UserForm. Alternar pastas: Oculta e mostra as pastas de objeto enquanto continua a mostrar os itens individuais contidos neles.

Podemos listar todos os projetos carregados e os itens includos em cada um deles.

34

Microsoft Excel Curso Avanado

A janela de cdigo
Utilize a janela Cdigo para gravar, exibir e editar cdigo do Visual Basic. Pode-se abrir o mesmo nmero de janelas Cdigo como de mdulos, de modo a poder visualizar facilmente o cdigo em diferentes formulrios ou mdulos e copiar e colar entre eles. Pode-se abrir uma janela Cdigo a partir da: Janela Projeto, selecionando um formulrio ou um mdulo, e escolhendo o boto Visualizar Cdigo. Janela UserForm, clicando duas vezes em um controle ou formulrio, escolhendo Cdigo no menu Exibir ou pressionando F7. Um local diferente na janela Cdigo atual. Outra janela cdigo As janelas Imediata e Inspeo A lixeira

Pode-se arrastar o texto selecionado para:

Elementos da janela
Caixa Objeto: exibe o nome do objeto selecionado. Clique na seta direita da caixa de listagem para exibir uma lista de todos os objetos associados ao formulrio. Caixa Procedimentos/Eventos: Lista todos os eventos reconhecidos pelo Visual Basic de um formulrio ou controle exibido na caixa Objeto. Quando voc seleciona um evento, o procedimento de evento associado a esse nome de evento exibido na janela Cdigo. Caso (Geral) seja exibido na caixa Objeto, a caixa Procedimento listar as declaraes e todos os procedimentos gerais que tenham sido criados para o formulrio. Caso voc esteja editando o cdigo do mdulo, a caixa Procedimento listar todos os procedimentos gerais no mdulo. Em ambos os casos, o procedimento selecionado na caixa Procedimento exibido na janela Cdigo.

Todos os procedimentos em um mdulo aparecem em uma lista de rolagem, classificada em ordem alfabtica pelo nome. A seleo de um procedimento nas caixas de listagem suspensas na parte superior da janela Cdigo move o cursos para a primeira linha de cdigo no procedimento selecionado. Barra de diviso Quando esta barra arrastada para baixo, divide a janela Cdigo em dois painis horizontais, que podem ser rolados de modo independente. Em seguida, voc poder visualizar diferentes partes do cdigo ao mesmo tempo. As informaes que aparecem na caixa Objeto e na caixa Procedimentos/Eventos se aplicam ao cdigo no painel que tem o foco. Para fechar um painel, arraste a barra para a parte superior ou inferior da janela ou clique duas vezes sobre ela. Barra do Indicador de margem Uma rea cinzenta no lado esquerdo da janela Cdigo, onde so exibidos os indicadores de margem. cone Visualizar procedimento: exibo e procedimento selecionado. A janela Cdigo s exibe um procedimento de cada vez. cone Visualizar mdulo completo: exibe todo o cdigo do mdulo.

35

Microsoft Excel Curso Avanado

Digitando cdigo
Para digitar cdigo na janela do editor de cdigos, pode-se usar as dicas automticas. Normalmente elas esto ativadas, mas verifique dentro do editor do VBA, menu Ferramentas Opes se o item Informao rpida est marcado.

Voltando janela do Editor, quando preencher uma instruo vlida, por exemplo:

Logo aps digitar o ponto do comando ActiveCell surge a lista das opes vlidas. Usando as setas pode-se selecionar o comando desejado e ao teclar Espao a opo selecionada ser apresentada. Por exemplo, selecione Address. Logo em seguida as opes do subcomando 36

Microsoft Excel Curso Avanado

sero exibidas. Aps a escolha certa, pressione novamente a barra de espaos e assim at terminar a linha de comando.

Executar uma macro


Para executar uma macro no Microsoft Excel: Abra a pasta de trabalho que contm a macro No menu Ferramentas, aponte para Macro e, em seguida, clique em Macros Na caixa Nome da Macro, insira o nome da macro que se deseja executar Clique em Executar

Observao: Para interromper uma macro antes que ela conclua suas aes, pressione ESC.

Adicionar controles a uma planilha


Pode-se adicionar controles a uma planilha, usando a barra de ferramentas Formulrios. Esta barra contm controles elaborados para trabalhar no Microsoft Excel e com macros preexistentes. Use um controle da barra de ferramentas Formulrios quando voc precisar de um controle para executar uma nica macro ou quando criar um site da Web. A caixa de ferramentas de controle contm os controles ActiveX e os controles personalizados, instalados por outros aplicativos. Os controles ActiveX usam macros que voc escreveu especificamente para o controle ActiveX. Use um controle ActiveX quando voc precisar controlar diferentes eventos que ocorrem quando voc usa o controle. Ao adicionar controles, pode-se alterar as propriedades dos controles. As propriedades de um controle definem a sua aparncia, a clula ou o intervalo de clulas ao qual o controle se refere, e ao estado do controle (por exemplo, se uma caixa de seleo estar marcada ou desmarcada por padro). A partir do menu Exibir clique em Barra de Ferramentas e ative a barra Formulrios. Se preferir usar o atalho, clique com a tecla direita do mouse sobre qualquer barra de ferramentas visvel e seleciona a barra Formulrios. Posicione a barra de formulrios em um local conveniente da tela, evitando ancora-la nos extremos da janela (isto no ser necessrio, j que esta uma barra de pouco uso).

Tipos de botes, caixas de seleo e outros controles na barra de Formulrios


Os botes, caixas de seleo e outros controles disponveis na barra de ferramentas Formulrios oferecem opes quando voc usa um formulrio. Por exemplo, se voc estiver criando um formulrio de pessoal, poder adicionar dois botes de opo para especificar se um empregado trabalha meio expediente ou em horrio integral. Como s possvel selecionar um boto de opo de cada vez, o empregado pode trabalhar meio expediente ou em horrio integral, mas no em ambos. A maioria dos controles tem propriedades que pode-se alterar; no entanto, voc s pode modificar as propriedades de formatao dos controles boto de comando e rtulo. A seguinte tabela lista os controles ActiveX que podem ser encontrados na Caixa de ferramentas de controle. Para obter maiores informaes sobre os controles ActiveX, consulte a Ajuda do Visual Basic. Representao Tipo de controle Caixa de seleo Descrio Uma opo que pode-se ativar ou desativar, marcando ou demarcando-a. Pode-se Ter mais de uma caixa de seleo 37

Microsoft Excel Curso Avanado

marcada em uma planilha por vez. Caixa de texto Boto comando Boto de opo Caixa de listagem Caixa combinao Boto Alternar Boto de rotao Uma caixa em que pode-se digitar texto de Um boto que inicia uma ao quando pressionado Um boto usado para selecionar apenas uma opo dentro de um grupo de alternativas. Uma caixa que contm uma lista de itens. de Uma caixa de texto com uma caixa de listagem drop-down. Pode-se digitar ou selecionar uma opo na caixa. Um boto que permanece pressionado quando clicado e depois liberado quando clicado novamente. Um boto que pode ser anexado a uma clula ou a uma caixa de texto. Par aumentar um valor, clique na seta para cima; para diminuir um valor, clique na seta para baixo Um controle que percorre uma lista de valores quando se clica nas setas de rolagem ou quando se arrasta a caixa de rolagem. Pode-se percorreu uma pgina de valores, clicando entre a caixa de rolagem e uma das setas de rolagem Um texto adicionado a uma planilha ou a um formulrio, que fornece informaes sobre um controle ou sobre a planilha ou o formulrio Um controle que incorpora uma figura em um formulrio Uma borda e um rtulo que agrupam controles relacionados, como botes de opo ou caixas de seleo.

Barra de rolagem

Rtulo

Imagem Moldura

Para nosso exemplo, deve-se inserir um boto de comando. Selecione-o na barra de ferramentas e em seguida, desenhe um retngulo dentro da planilha, no canto superior direito.

38

Microsoft Excel Curso Avanado

Imediatamente ao soltar o mouse temos a seguinte janela:

Nesta janela podemos selecionar da lista de macros existentes aquela que ser aplicada ao boto. Ou podemos criar ma nova macro a partir da tecla Novo ou ainda deixar esta atribuio para mais tarde clicando no boto Cancelar. Selecione uma das macros que voc tiver criado. Poderemos mais tarde alterar a opo.

Usando referncias relativas e referncias absolutas


Uma referncia identifica uma clula ou um intervalo de clulas em uma planilha e informa ao Microsoft Excel onde procurar valores ou dados que voc deseja usar em uma frmula. Com as referncias, pode-se usar os dados contidos em outras partes de uma planilha em uma frmula ou usar o valor de uma clula em diversas frmulas. Pode-se tambm fazer referncias a clulas em outras planilhas da mesma pasta de trabalho, a outras pastas de trabalho e a dados em outros programas. As referncias s clulas em outras pastas de trabalho so denominadas referncias externas. As referncias aos dados em outros programas so denominadas referncias remotas. Por padro, o Microsoft Excel usa o estilo de referncia A1, que rotula colunas com letras (A a IV, para um total de 256 colunas) e rotula linhas com nmeros (1 a 65536). Para fazer referncia a uma clula, insira a letra da coluna seguida do nmero da linha. Por exemplo, D50 refere-se clula na interseo da coluna D e linha 50. Para fazer referncia a um intervalo de clulas, insira a referncia da clula no canto superior esquerdo do intervalo, dois pontos (:) e depois a referncia da clula no canto inferior direito do intervalo. A seguir esto exemplos de referncias: Para fazer referncia clula na coluna A e linha 10 Ao intervalo de clulas na coluna A e linhas 10 a 20 Ao intervalo de clulas na linha 15 e colunas B a E Use A10 A10:A20 B15:E15 39

Microsoft Excel Curso Avanado

A todas as clulas na linha 5 A todas as clulas nas linhas 5 a 10 A todas as clulas na coluna H A todas as clulas nas colunas H a J

5:5 5:10 H:H H:J

Voc tambm pode usar um estilo de referncia onde tanto as linhas quanto as colunas da planilha so numeradas. O estilo L1C1 til para computar posies de linha e coluna em macros e pode ser til para mostrar as referncias relativas da clula. No estilo L1C1, o Microsoft Excel indica a posio de uma clula com um L seguido de um nmero de linha e um C seguido de um nmero de coluna. Observaes: Dependendo da tarefa que voc deseja executar no Microsoft Excel, use as referncias relativas da clula, que so referncias a clulas relativas posio da frmula, ou referncias absolutas, que so referncias de clula que sempre referem-se a clulas em uma localizao especfica. Use os rtulos de colunas e linhas em uma planilha para fazer referncias a clulas dentro destas colunas e linhas, ou crie nomes descritivos para representar clulas, intervalos de clulas, frmulas ou valores constantes. Se voc desejar analisar dados na mesma clula ou intervalo de clulas em diversas planilhas da pasta de trabalho, use uma referncia 3-D. Uma referncia 3-D inclui a referncia de clula ou intervalo, precedida de um intervalo de nomes de planilha. O Microsoft Excel usa quaisquer planilhas armazenadas entre o nome inicial e o nome final da referncia.

Referncias absolutas e relativas em cdigo VBA


Os dois cdigos a seguir mostram a diferena implementada pelo Excel quando optamos por uma ou outra opo: Sub ReferenciaRelativa() ActiveCell.Offset (-10, -5).Range(A1:B2).Select Selection.Cut Destination:=ActiveCell.Offset(3, 0).Range(A1:B2) ActiveCell.Offset(3, 0).Range(A1:B2).Select End Sub O prximo cdigo foi gravado com o boto de referncia relativa desativado: Sub ReferenciaAbsoluta() Range(A1:B2).Select Selection.Cut Destination:= Range(A4:B5) Range(A4:B5).Select End Sub

Compreendendo a sintaxe do Visual Basic


A sintaxe em um tpico da Ajuda do Visual Basic de um mtodo, instruo ou funo mostra todos os elementos necessrios para que o mtodo, instruo ou funo seja utilizada corretamente. Os exemplos deste tpico ensinam a interpretar os elementos de sintaxe mais comuns.

Sintaxe do comando Activate


objeto.Activate 40

Microsoft Excel Curso Avanado

Na sintaxe do mtodo Activate, a palavra destacada em itlico (objeto) um marcador das informaes que voc fornece; neste caso, um cdigo que retorna um objeto. As palavras destacadas em negrito devem ser digitadas tal e qual aparecem. Por exemplo, o procedimento a seguir ativa a segunda janela no documento ativo. Sub TornarAtiva() Sheets(2).Activate End Sub

Sintaxe da funo MsgBox


MsgBox (prompt[,buttons] [,title] [.helpfile, context]) Na sintaxe da funo MsgBox as palavras destacadas em negrito/itlico so os argumentos nomeados da funo. Os argumentos colocados entre colchetes so opcionais (no digite os colchetes no cdigo Visual Basic). O nico argumento que voc deve fornecer para a funo MsgBox o texto do aviso. Os argumentos das funes e mtodos podem ser especificados no cdigo pela posio ou pelo nome. Para especificar os argumentos por posio, siga a ordem apresentada na sintaxe, separando cada argumento com uma vrgula, como no exemplo apresentado a seguir: MsgBox A sua resposta est correta !,0,Caixa de resposta Para especicar um argumento pelo nome utilize o nome do argumento seguido por dois pontos (:) e um sinal de igualdade (=) e o valor do argumento. Pode-se especificar os argumentos nomeados em qualquer ordem, como no exemplo apresentado a seguir: MsgBox Title:=Caixa de Resposta, Prompt:=A sua resposta est correta ! A sintaxe das funes e de alguns mtodos mostra os argumentos colocados entre parnteses. Como essas funes e mtodos retornam valores, voc deve colocar os argumentos entre parnteses para atribuir o valor a uma varivel. Caso voc ignore o valor de retorno ou no passe nenhum tipo de argumento, no inclua os parnteses. Os mtodos que no retornam valores no precisam que os seus argumentos sejam colocados entre parnteses. Essas orientaes se aplicam quer voc esteja utilizando argumentos posicionais ou nomeados. No exemplo a seguir, o valor de retorno da funo MsgBox um nmero que indica que o boto selecionado est armazenado na varivel minhaVar. Como o valor de retorno utilizado, os parnteses so obrigatrios. Em seguida, outra caixa de mensagem exibir o valor da varivel. Sub Pergunta() minhaVar = MsgBox(Prompt:=Gosto do meu emprego., _ Title:=Caixa de Resposta , Botes:=4) MsgBox minhaVar End Sub

Sintaxe da instruo Option Compare


Option Compare {Binary | Text | Database } Na sintaxe da intruo Option Compare, as chaves e a barra vertical indicam uma escolha obrigatria entre trs itens (no digite as chaves na instruo do Visual Basic). Por exemplo, a 41

Microsoft Excel Curso Avanado

instruo apresentada a seguir especifica que, dentro do mdulo, as seqncias de caracteres so comparadas em uma ordem de classificao que no faz distino entre letras maisculas ou minsculas. Option Compare Texto

Sintaxe da instruo Dim


Dim nomedavarivel [([subscritos])] [As tipo] [,nomedavarivel [([subscritos])] [As tipo]] ... Na sintaxe da instruo Dim, a palavra Dim uma palavra-chave obrigatria. O nico elemento obrigatrio nomedavarivel (o nome da varivel). Por exemplo, a instruo apresentada a seguir cria trs variveis: minhaVar, proximaVar e terceiraVar. Elas so automaticamente declaradas como variveis do tipo Variant. Dim minhaVar, proximaVar, terceiraVar O exemplo apresentado a seguir declara uma varivel como uma String. A incluso de um tipo de dados poupa a memria e pode ajud-lo a encontrar erros no seu cdigo. Dim minhaResposta as String Para declarar diversas variveis em uma instruo, insira o tipo de dados para cada varivel. As variveis declaradas sem um tipo de dados so automaticamente declaradas como Variant. Dim x as Integer, y as Integer, z as Integer Na instruo apresentada a seguir, x e y so atribudos ao tipo de dados Variant. Somente z atribuido ao tipo de dados Integer. Dim x, y, z as Integer Caso voc esteja declarando uma varivel de matriz, voc deve colocar parnteses. Os subscritos so opcionais. A instruo apresentada a seguir dimensiona uma matriz dinmica, minhaMatriz. Dim minhaMatriz ()

A linguagem do VBA
O gravador de macros uma excelente ferramenta para criar macros. Mas existem algumas limitaes de comandos que no podemos gravar automaticamente, tais como: Ramificaes condicionais usando IF..THEN Estruturas de loop tais como FOR..NEXT Referncias e clculos complexos Funes e caixas de dilogo, etc.

Para realizar tais operaes precisamos inserir cdigo manualmente. E para tal, devemos aprender alguns conceitos fundamentais sobre objetos, propriedades e mtodos. 42

Microsoft Excel Curso Avanado

Objetos, propriedades, mtodos e eventos


Um objeto representa um elemento de um aplicativo, como uma planilha, uma clula, um grfico, um formulrio ou um relatrio. No cdigo do Visual Basic voc deve identificar um objeto antes de poder aplicar um dos mtodos do objeto ou alterar o valor de uma das suas propriedades. Uma coleo um objeto que contm uma srie de outros objetos, geralmente (mas no sempre) do mesmo tipo. No Microsoft Excel, por exemplo, o objeto Workbooks contm todos os objetos Workbook que estiverem abertos. No Visual Basic a coleo Forms contm todos os objetos Form de um aplicativo. Os itens de uma coleo podem ser identificados por nmeros ou por nome. Por exemplo, no procedimento apresentado a seguir, Workbooks(1) identifica o primeiro objeto Workbook aberto. Sub FecharPrimeiro() Workbooks(1).Close End Sub O procedimento apresentado a seguir utiliza um nome especificado como uma seqncia de caracteres para identificar um objeto Form Sub FecharFormulario() Forms(MeuFormulario.frm).Close End Sub Pode-se manipular toda uma coleo de objetos caso os objetos compartilhem mtodos. Por exemplo, o procedimento apresentado a seguir fechar todos os formulrios abertos. Sub FecharTodos() Forms.Close End Sub Um mtodo uma ao que um objeto pode executar. Por exemplo, Add um mtodo do objeto ComboBox, pois posiciona uma nova entrada a um quadro de combinao. O procedimento apresentado a seguir utiliza o mtodo Add para adicionar um novo item a ComboBox. Sub AdicionarEntrada(newEntrada as String) Combo1.Add newEntrada End Sub Uma propriedade um atributo de um objeto que define uma de suas caractersticas (assim como tamanho, cor ou localizao na tela) ou um aspecto de seu comportamento (assim como se ele est ativo ou visvel). Para alterar as caractersticas de um objeto, pode-se alterar os valores de suas propriedades. Para definir o valor de uma propriedade, coloque, aps a referncia a um objeto, um ponto (.), o nome da propriedade que deseja definir, um sinal de igualdade (=) e o novo valor da propriedade. Por exemplo, o procedimento a seguir altera o texto de ttulo de um formulrio do Visual Basic atravs da definio da propriedade Caption:

43

Microsoft Excel Curso Avanado

Sub AlterarNome (newTitulo) Meuformulario.Caption = newTitulo End Sub Algumas das propriedades no podem ser definidas. O tpico da Ajuda de cada propriedade indica se ela pode ser definida (leitura e gravao), se pode somente ser lida (somente leitura) ou se pode somente ser gravada (somente gravao). Para recuperar informaes sobre um objeto, bastar retornar o valor de uma de suas propriedades. O procedimento apresentado a seguir utiliza uma caixa de mensagem para exibir o ttulo na parte superior do formulrio ativo no momento. Sub ObterNomedoFormulario () NomedoFormulario = Screen.ActiveForm.Caption MsgBox NomedoFormulario End Sub Um evento uma ao reconhecida por um objeto, como clicar o mouse ou pressionar uma tecla, para o qual pode-se gravar cdigo para responder. Podem ocorrer eventos em resposta a uma ao do usurio ou a um cdigo do programa. Eles tambm podem ser disparados pelo sistema.

Objetos do VBA
Entre os principais objetos do Excel VBA temos:

Objeto Application
Representa o aplicativo que est sendo executado no momento (no nosso caso ele representa o prprio EXCEL). O objeto Application contm: 1. Definioes e opes para o aplicativo como um todo (muitas das opes da caixa de dilogo Opes, do menu Ferramentas, por exemplo) 2. Mtodos que retornem objetos do nvel mais alto, como ActiveCell, ActiveShhet e assim por diante.

Como usar o objeto Application


Use a propriedade Application para retornar o objeto Application. O exemplo seguinte aplica a propriedade Windows ao objeto Application: Application.Windows(Pasta1.xls).Activate O exemplo seguinte cria um objeto de planilha do Microsoft Excel em um outro aplicativo e, em seguida, abre a pasta de trabalho do Microsoft Excel Set xl = CreateObject (Excel.Sheet) xl.Application.Workbooks.Open NovaPasta.xls Comentrios: Muitas das propriedades e mtodos que retornam os objetos mais comuns da interface do usurio, como a clula ativa (propriedade ActiveCell), podem ser usados sem o qualificador de objeto Application. Por exemplo, em vez de escrever

44

Microsoft Excel Curso Avanado

Application.ActiveCell.Font.Bold = True, pode-se escrever simplesmente ActiveCell.Font.Bold = True.

Objeto Worksheets
o segundo maior objeto dentro do objeto Application. Uma coleo de todos os objetos Worksheet na pasta de trabalho ativa ou especificada. Cada objeto Worksheet representa uma planilha. Use a propriedade Worksheets para retornar a coleo Worksheets. O exemplo seguinte move todas as planilhas para o final da pasta de trabalho. Worksheets.Move after:=Sheets(Sheet.Count) Use o mtodo Add para criar uma nova planilha e adicion-la a coleo. O exemplo seguinte adiciona duas novas planilhas antes da planilha um da pasta de trabalho ativa. Worksheets.Add count:=2, before:=Sheets(1) Use Worksheets(ndice) para retornar um nico objeto Worksheet. O exemplo seguinte oculta a planilha um na pasta de trabalho ativa: Worksheets(1).Visible = False 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). As seguintes propriedades para retornar um objeto Worksheet so descritas nesta seo: Propriedade Worksheets Propriedade ActiveSheet

Propriedade Worksheets
Use Worksheets(ndice) para retornar um nico objeto Worksheet. O exemplo seguinte oculta a planilha um na pasta de trabalho ativa: 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 a esquerda) e Worksheets(Worksheets.Count) a ltima. Todas as planilhas so includas na contagem do ndice, mesmo quando esto ocultas. O nome da planilha mostrado na guia da planilha. Use a propriedade Name para definir ou retornar o nome da planilha. 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).

Propriedade ActiveSheet
Quando uma planilha a planilha ativa, pode-se usar a propriedade ActiveSheet para referir-se a ela. O exemplo seguinte usa o mtodo Activate para ativar Plan1, define a orientao da pgina como modo paisagem e, em seguida, imprime a planilha.

45

Microsoft Excel Curso Avanado

Worksheets(Plan1).Activate ActiveSheet.PageSetup.Orientation = xlLandscape ActiveSheet.PrintOut

Objeto Range
Representa uma clula, uma linha, uma coluna, uma seleo de clulas contendo um ou mais blocos contguos de clulas ou um intervalo 3-D. As seguintes propriedades e mtodos para retornar um objeto Range so descritas nesta seo: Propriedade Range Propriedade Cells Range e Cells Propriedade Offset Mtodo Union

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 coloca o valor da clula A1 na clula A5. Worksheets(Plan1).Range(A5).Value = Worksheets(Plan1).Range(A1).Value O exemplo seguinte preenche o intervalo A1:H8 com nmeros randmicos definindo a frmula para cada clula do intervalo. Quando usada sem um qualificador de objeto (um objeto a 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() O intervalo esta na planilha ativa O seguinte exemplo limpa o contedo do intervalo chamado Criterios Worksheets(1).Range(Criterios).ClearContents Se voc usar um argumento de 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.

Propriedade Cells
Use Cells(linha,coluna) para retornar uma nica clula. O exemplo a seguir define o valor da clula A1 como 32: Worksheets(1).Cells(1,1).Value = 32 46

Microsoft Excel Curso Avanado

O exemplo seguinte define uma frmula para a clula A2: Worksheets(1).Cells(2,1).Formula = sum(b1:b5) Embora voc tambm possa usar Range (A1) para retornar a clula A1, pode haver ocasies em que a propriedade Cells seja mais conveniente porque pode-se usar uma varivel para a linha ou coluna. O exemplo seguinte cria cabealhos de coluna e linha na Plan1. Observe que aps a planilha ser ativada, a propriedade Cells pode ser usada sem uma declarao explcita de planilha (ela retorna uma clula na planilha ativa) Sub ConfigTabela() Worksheets(Plan1).Activate For oAno = 1 to 5 Cells(1, oAno + 1).Value = 1990 + oAno Next oAno For oTrimestre = 1 to 4 Cells(oTrimestre+1, 1).Value = T & oTrimestre Next oTrimestre End Sub Apesar de voc poder usar funes de cadeia de caracteres do Visual Basic 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, 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()

Range e Cells
Use Range(clula1, clula2) onde clula1 e clula2 so objetos Range que especificam as clulas inicial e final para retornar um objeto Range. O exemplo seguinte define o estilo da linha da borda das clulas A1:J10: With Worksheets(1) .Range(.Cells(1,1), .Cells(10,10)).Borders.LineStyle = xlThick End With Observe o ponto na frente de cada ocorrncia da propriedade Cells. O ponto ser obrigatrio se o resultado da instruo With anterior for aplicado propriedade Cells nesse caso, para indicar que as clulas esto na planilha um (sem o ponto, a propriedade Cells retornaria as clulas da planilha ativa).

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 em um outro intervalo. O exemplo seguinte seleciona a clula trs linhas abaixo e uma coluna a 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. 47

Microsoft Excel Curso Avanado

Worksheets(Plan1).Activate Selecion.Offset(3,1).Range(A1),Select

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 i1 as Range, i2 as Range, meuIntervalo as Range Worksheets(Plan1).Activate Set i1 = Range(A1:B2) Set i1 = Range(C3:D4) Set meuIntervalo = Union(i1, i2) MeuIntervalo.Select Se voc trabalha com selees que contm mais do que uma rea, a propriedade Areas muito til. Ela divide uma seleo de vrias reas em objetos Range individuais e, em seguida, retorna os objetos como uma coleo. Pode-se usar a propriedade Count na coleo retornada para verificar uma seleo que contenha mais do que uma rea, como mostrado no exemplo seguinte: Sub NenhumaSelDeVariasAreas() numeroDeAreasSelecionadas = Selection.Areas.Count If numeroDeAreasSelecionadas > 1 Then MsgBox Voc no pode executar este comando & _ em selees de vrias reas End If End Sub

Os cientistas nos dizem que...


Uma pessoa gasta, em mdia: 9.5 anos dormindo 4.2 anos comendo 3.8 anos no banheiro 2.8 anos viajando e... 1.9 anos esperando o Excel recalcular!

48

Microsoft Excel Curso Avanado

A linguagem VBA
A linguagem do VBA corresponde a linguagem do Visual Basic e do Access Basic. Desta forma, um programa escrito em qualquer um destes sistemas no ter nenhuma barreira ao ser executado ou mesmo importado para dentro o Excel e a executado. Toda linguagem possui um tratamento de dados armazenados em memria. Estes dados so as variveis do sistema. Estas variveis devem ser declaradas previamente, para que possam ser usadas dentro do programa VBA. Ao declarar variveis, voc geralmente ir utilizar uma instruo Dim. Estas restries de declarao podem ser colocadas em um procedimento para criar uma varivel em nvel de procedimento, ou na parte superior de um mdulo, na seo Declaraes, para criar uma varivel a nvel de mdulo. O exemplo apresentado a seguir cria a varivel strNome e especifica o tipo de dados String Dim strNome as String Caso esta instruo esteja dentro de um procedimento, a varivel strNome poder ser utilizada somente nesse procedimento. Se a instruo for colocada na seo Declaraes do mdulo, a varivel strNome estar disponvel para todos os procedimentos dentro do mdulo, mas no para outros mdulos no projeto. Para tornar essa varivel disponvel para todos os procedimentos no projeto, preceda-o com a instruo Public, como no exemplo apresentado a seguir: Public strNome as String Para obter maiores informaes sobre a nomeao das suas variveis, consulte regras de nomeao do Visual Basic, na ajuda do Visual Basic. As variveis podem ser declaradas como um dos seguintes tipos de dados: Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String (para seqncias de caracteres de comprimento varivel, String * comprimento (para seqncias de caracteres de comprimento fixo, Object ou Variant. Caso voc no especifique um tipo de dados, o tipo Variant ser atribudo como padro. Voc tambm poder criar um tipo definido pelo usurio atravs da instruo Type. Para obter maiores informaes sobre tipos de dados, consulte Resumo de tipos de dados na Ajuda do Visual Basic. possvel declarar diversas variveis em uma instruo. Para especificar um tipo de dados, voc precisa incluir o tipo de dados para cada varivel. Na instruo apresentada a seguir, as variveis intX, intY e intZ so declaradas como Integer: Dim intX as Integer, intY as Integer, intZ as Integer Na instruo apresentada a seguir, intX e intY so declaradas como tipo Variant; apenas intZ declarada como tipo Integer. Dim intX, intY, intZ as Integer Voc no precisa fornecer o tipo de dados da varivel na instruo de declarao. Caso voc omita o tipo de dados, a varivel ser do tipo Variant.

49

Microsoft Excel Curso Avanado

Utilizando a instruo Public Voc no pode utilizar a instruo Public para declarar as variveis pblicas em um nvel de mdulo. Public strName as String As variveis pblicas podem ser utilizadas em todos os procedimentos do projeto. Caso uma varivel pblica seja declarada em um mdulo padro ou um mdulo de classe, ela tambm poder ser utilizada nos projetos que faam referncia ao projeto onde a varivel pblica declarada. Utilizando a instruo Private Pode-se utilizar a instruo Private para declarar as variveis privadas em nvel de mdulo. Private MeuNome as String As variveis privadas podem ser utilizadas somente por procedimentos do mesmo mdulo. Observao: Ao ser utilizada em nvel de mdulo, a instruo Dim equivalente instruo Private. Pode ser que voc precise utilizar a instruo Private para facilitar a leitura e a interpretao do seu cdigo. Utilizando a instruo Static Quando voc utiliza a instruo Static no lugar de uma instruo Dim, a varivel declarada reter os seus valores entre as chamadas. Utilizando a instruo Option Explicit Para declarar implicitamente uma varivel no Visual Basic, basta utiliz-la em uma instruo de atribuio. Todas as variveis declaradas implicitamente so do tipo Variant. As variveis do tipo Variant exigem mais recursos de memria que a maioria das outras variveis. O seu aplicativo ser mais eficiente se voc declarar as variveis explicitamente e com um tipo de dados especifico. A declarao explcita de todas as variveis reduz a incidncia de erros de nomeao conflitante e de digitao. Para impedir que o Visual Basic faa declaraes implcitas, voc poder inserir a instruo Option Explicit em um mdulo antes de todos os procedimentos. Essa instruo obriga-o a declarar explicitamente todas as variveis dentro do mdulo. Caso um mdulo contenha a instruo Option Explicit, ocorrer um erro de tempo de compilao quando o Visual Basic se deparar com um nome de varivel que ainda no tenha sido declarada ou que apresente algum erro de digitao. Pode-se definir uma opo no ambiente de programao do Visual Basic para inserir automaticamente a instruo Option Explicit em todos os mdulos novos. Para obter ajuda sobre as mudanas nas opes do ambiente Visual Basic, consulte a documentao do aplicativo. Observe que esta opo no altera o cdigo existente que voc j tenha escrito.

Tipos de dados
A tabela a seguir mostra os tipos de dados suportados, incluindo tamanhos e intervalos de armazenamento. Byte 1 byte 0 a 255

50

Microsoft Excel Curso Avanado

Boolean Integer Long longo) Single Double Currency Decimal

2 bytes 2 bytes (inteiro 4 bytes 4 bytes 8 bytes 8 bytes 14 bytes

True ou False -32768 a 32767 -2147483648 a 2147483647 -3,402823E38 a 1,401298E-45 para valores negativos 1,401298E-45 a 3,402823E38 para valores positivos -1,797E308 a 4,9406E-324 para valores negativos 4,9406E-324 a 1,797E308 para valores positivos -922337203685477,5808 a 922337203685477,5807 +/- 79.228.162.514.264.337.593.543.950.335 decimal +/- 7,9228162514264337593543950335 decimais a direita com sem 28 ponto casas

Date Object String

8 bytes 4 bytes

De 01/01/100 a 31/12/9999 Qualquer referncia a object

10 bytes + De 0 at aproximadamente 2 bilhes comprimento da seqncia de caracteres pelo

Definido usurio

Observao: Matrizes de qualquer tipo de dados requerem 20 bytes de memria, mais 4 bytes para cada dimenso da matriz, mais o nmero de bytes ocupados pelos prprios dados. A memria ocupada pelos dados pode ser calculada multiplicando-se o nmero de elementos de dados pelo tamanho de cada elemento. Por exemplo, os dados em uma matriz de dimenso nica consistindo de 4 elementos de dados Integer de 2 bytes cada ocupa 8 bytes. Os 8 bytes exigidos para os dados mais os 24 bytes fixos fazem com que o requisito de memria para a matriz seja de 32 bytes. A menos que seja especificado de forma diferente as variveis no declaradas so atribudas ao tipo de dados Variant. Este tipo de dados facilita a gravao de programas, mas nem sempre o tipo de dados de utilizao mais eficiente. Voc deve levar em considerao a utilizao de outros tipos de dados se: O seu programa for muito grande e utilizar muitas variveis. O seu programa tiver que ser executado com o mximo de velocidade possvel. Voc gravar dados diretamente em arquivos de acesso aleatrio. Alm de Variant, so estes os tipos de dados suportados: Byte, Boolean, Integer, Long, Single, Double, Currency, Decimal, Date, Object e String. Utilize a instruo Dim para declarar uma varivel de um tipo especfico, como no exemplo apresentado a seguir: Dim X as Integer

51

Microsoft Excel Curso Avanado

Essa instruo declara que uma varivel X um inteiro um nmero inteiro entre 32768 e 32767. Caso voc tente definir X como um nmero fora desse intervalo, ocorrer um erro. Caso voc tente definir X como uma frao, o nmero ser arredondado. Por exemplo: X = 32768 X = 5,9 Provoca erro Define X como 6

Programao estruturada
A linguagem do VBA permite a construo de subprocedimentos contendo toda a estrutura de uma linguagem eficiente e malevel ao mesmo tempo. Para tal ela possui os comandos padro das demais linguagens como Pascal, Basic, Clipper, Delphi, etc. As estruturas so: IF ... THEN ... ELSE SELECT CASE ... CASE ... ENDCASE DO ... LOOP FOR ... TO ... NEXT FOR ... EACH ... NEXT WITH ... END WITH

Vamos detalhar cada um deles a seguir:

If ... Then ... Else


Executa condicionalmente um grupo de instrues, dependendo do valor de uma expresso Sintaxe If condio Then [Instrues] [Else Instrueselse] Ou pode-se utilizar a sintaxe de formato de bloco: If condio Then [Instrues] [ElseIf condio-n Then [InstruesElseIf] ... [Else [InstruesElse]] End If A instruo If ... Then ... Else possui as partes a seguir: Parte Condio Descrio Obrigatria. Um ou mais dos tipos de expresso seguintes: Uma expresso numrica ou expresso de sequncia de caracteres que avaliada como True ou False. Se condio for Null, ser tratada como False. Uma expresso do formato TypeOf NomedoObjeto Is TipodoObjeto. O NomedoObjeto qualquer referncia a objeto e TipodoObjeto qualquer tipo de objeto vlido. A expresso ser True se NomedoObjeto for o tipo de objeto especificado por TipodoObjeto; 52

Microsoft Excel Curso Avanado

caso contrrio, ser False Instrues Opcional em formato de bloco; requerida em formato de uma s linha que no possui clusula Else. Uma ou mais instrues separadas por dois-pontos; executada se condio for True. Opcional. Igual a condio Opcional. Uma ou mais instrues executadas se a condio-n associada for True. Opcional. Uma ou mais instrues executadas se nenhuma expresso condio ou condio-n anterior for True.

Condio-n InstruoElseIf InstruoElse

Comentrios: Pode-se utilizar o formato de uma s linha (primeira sintaxe) para testes simples e curtos. Entretanto, o formato de bloco (segunda sintaxe) proporciona mais estrutura e flexibilidade do que o formato de uma s linha e normalmente mais fcil de ler, manter e depurar. Com o formato de uma s linha possvel ter mltiplas instrues executadas como resultado de uma deciso If...Then. Todas as instrues devem estar na mesma linha e separadas por doispontos, como na seguinte instruo: If A > 10 Then A = A + 1 : B = B + A : C = C + B Uma instruo If em formato de bloco deve ser a primeira em uma linha. As partes Else, ElseIf e End If da instruo podem ter somente um nmero de linha ou rtulo de linha precedendo-as. O If em bloco deve terminar com uma instruo End If. Para determinar se uma instruo ou no If em bloco, examine o que vem em seguida palavra-chave Then. Se qualquer coisa exceto um comentrio aparecer depois de Then na mesma linha, a instruo ser tratada como instruo If de uma s linha. As clusulas Else e ElseIf so opcionais. Pode-se Ter tantas clusulas ElseIf em um bloco If quantas desejar, mas nenhuma pode aparecer depois de uma clusula Else. Instrues If em bloco podem ser embutidas, isto , contidas uma dentro da outra. Executando um If em bloco (segunda sintaxe), condio testada. Se condio for True, as instrues seguintes a Then so executadas. Se condio for False, cada condio ElseIf (se houver) ser por sua vez avaliada. Quando uma condio True for encontrada, as instrues imediatamente subseqentes Then associada so executadas. Se nenhuma das condies ElseIf for True (ou se no houver clusulas ElseIf) as instrues subseqentes a Else so executadas. Depois da execuo das instrues subsequentes a Then ou Else, a execuo continua com a instruo subsequente a End If.

Select Case
Executa um dos diversos grupos de instrues, dependendo do valor de uma expresso. Sintaxe Select Case ExpressodeTeste [Case ListadeExpresses-n [instrues-n]] ... [Case Else [instrueselse]] End Select

53

Microsoft Excel Curso Avanado

A sintaxe da instruo Select Case possui as partes a seguir: Parte ExpressodeTeste ListadeExpresses-n Descrio Obrigatria. Qualquer expresso numrica ou expresso de seqncia. Obrigatria se aparecer uma Case. Lista delimitada de uma ou mais das seguintes formas: expresso, expresso To expresso, Is operadordeComparao expresso. A palavrachave To especifica um intervalo de valores. Se voc utilizar essa palavra-chave, o valor menor dever aparecer antes de To. Utilize a palavrachave Is com operadores de comparao (exceto Is e Like) para especificar um intervalo de valores. Se no for fornecida, a palavrachave Is ser inserida automaticamente. Opcional. Uma ou mais instrues so executadas se expressodeTeste coincidir com qualquer parte de listadeExpresses-n. Opcional. Uma ou mais instrues so executadas se expressodeTeste no coincidir com qualquer das clusulas Case.

Instrues-n

InstruesElse

Comentrios Se expressodeTeste coincidir com qualquer expresso Case listadeExpresses, as instrues subseqentes quela clusula Case sero executadas at a prxima clusula Case ou, para a ltima clusula, at End Select. Ento o controle passa para a instruo seguinte a End Select. Se expressodeTeste coincidir com uma expresso listadeExpresses em mais de uma clusula Case, somente as instrues subseqentes primeira coincidncia sero executadas. A clusula Case Else utilizada para indicar a instruesElse a ser executada se no for encontrada coincidncia entre expressodeTeste e uma listadeExpresses em qualquer das outras selees de Case. Embora no seja necessrio, uma boa idia Ter uma instruo CaseElse no seu bloco Select Case para manipular valores no previstos de expressodeTeste. Se nenhuma Case listadeExpresses coincidir com expressodeTeste e no houver instruo Case Else, a execuo continua na instruo subseqente a End Select. Pode-se utilizar mltiplas expresses ou intervalos em cada clusula Case. Por exemplo, a linha a seguir vlida. Case 1 to 4, 7 to 9, 11, 13, Is > MaxNumber Observao: O operador de comparao Is no igual palavra-chave Is utilizada na instruo Select Case. Pode-se tambm especificar intervalos e vrias expresses para seqncias de caracteres. No exemplo a seguir, Case coincide com seqncias que so exatamente iguais a tudo, seqncias que ficam entre nozes e sopa em ordem alfabtica e o valor atual de TesteItem: Case tudo, nozes to sopa, TestItem

54

Microsoft Excel Curso Avanado

Instrues Select Case podem ser embutidas. Cada instruo Select Case embutida deve Ter uma declarao End Select correspondente. Utilize a instruo Select Case como uma alternativa a ElseIf nas instrues If...Then...Else ao comparar uma expresso a diversos valores diferentes. Embora as instrues If...Then...Else possam avaliar uma expresso diferente em cada instruo ElseIf, a instruo Select Case avalia somente uma expresso de cada vez, na parte superior da estrutura de controle. No exemplo apresentado a seguir, a instruo Select Case avalia o argumento desempenho, que passado para o procedimento. Observe que cada instruo Case pode conter mais de um valor, um intervalo de valores ou uma combinao de valores e operadores de comparao. A instruo Case Else opcional ser executada caso a instruo Select Case no combine com um valor em umas das instrues Case. Function Gratificao (desempenho, salrio) Select Case Desempenho Case 1 Gratificao = salrio * 0.1 Case 2, 3 Gratificao = salrio * 0,09 Case 4 to 6 Gratificao = salrio * 0,07 Case Is > 8 Gratificao = 100 Case Else Gratificao = 0 End Select End Function

Do ... Loop
Repete um bloco de instrues enquanto uma condio True ou at que ela se torne True. Sintaxe Do [{While | Until } condio ] Instrues Exit Do Instrues Loop Ou pode-se utilizar esta sintaxe: Do [instrues] [Exit Do] [Instrues] Loop [{ While | Until } condio } A sintaxe da instruo Do Loop possui as partes a seguir: Parte Condio Descrio Opcional. Expresso numrica ou expresso de seqncia que seja True ou False. Se condio 55

Microsoft Excel Curso Avanado

for Null, condio tratada como False. Instrues Uma ou mais instrues que so repetidas enquanto, ou at que, condio seja True.

Comentrios: Qualquer nmero de instrues Exit Do pode ser colocado em qualquer lugar em Do ... Loop como meio alternativo para sair de um Do ... Loop. Exit Do freqentemente usado depois que alguma condio avaliada, por exemplo, If...Then, caso em que a instruo Exit Do transfere o controle para a instruo imediatamente seguinte a Loop. Quando utilizada com instrues Do...Loop embutidas, Exit Do transfere o comando para o loop que est embutido em um nvel acima do loop em que ocorre Exit Do. Este exemplo mostra como as instrues Do...Loop podem ser utilizadas. A instruo Do...Loop interna faz o loop 10 vezes, define o valor do sinalizador como False e sai prematuramente utilizando a instruo Exit Do. O loop externo sai imediatamente aps a verificao do valor do sinalizador. Dim Controle, Contador Controle = True Inicializa variveis Contador = 0 Do Loop externo Do While contador < 20 Incrementa o contador Contador = Contador + 1 Se a condio for True If Contador = 10 Then Define o valor do sinalizador como False. Controle = False Sai do loop interno Exit Do End If Loop Loop Until Controle = False Sai do loop externo imediatamente

For ... To ... Next


Pode-se utilizar instrues For...Next para repetir um bloco de instrues um determinado nmero de vezes. Os loops For utilizam uma varivel de contador cujo valor aumentado ou diminudo a cada repetio do loop. O procedimento apresentado a seguir faz com que o computador emita 50 avisos sonoros. A instruo For especifica a varivel de contador X e seus valores inicial e final. A instruo Next incrementa a varivel de contador em uma unidade. Sub Aviso Sonoro () For X = 1 to 50 Beep Next X End Sub A palavra-chave Step permite aumentar ou diminuir a varivel de contador pelo valore especificado. No exemplo apresentado a seguir, a varivel de contador J incrementada por 2 todas as vezes que um loop se repete. Quando termina o loop, Total a soma de 2, 4, 6, 8 e 10.

56

Microsoft Excel Curso Avanado

Sub TotaldeDois () Total = 0 For J = 2 to 10 step 2 Total = Total + J Next J

MsgBox O total & Total End Sub Para diminuir a varivel de contador, utilize um valor Step negativo e um valor final que seja inferior ao valore inicial. No exemplo apresentado a seguir, a varivel de contador meuNum reduzida em duas unidades a cada vez que o loop se repete. Quando o loop terminar, total ser a soma de 16, 14, 12, 10, 8, 6, 4 e 2. Sub NovoTotal () Total = 0 For meuNum = 16 to 2 step 2 Total = Total + meuNum Next meuNum MsgBox O total & total End Sub Observao: no preciso incluir o nome da varivel de contador depois da instruo Next. Nos exemplos apresentados acima o nome da varivel foi includo para deix-los mais legveis. Pode-se sair de uma instruo For...Next antes que o comando atinja seu valor final utilizando a instruo Exit For. Por exemplo, quando ocorrer um erro, utilize a instruo Exit For no bloco de instrues True de uma instruo If...Then...Else ou uma instruo Select case que verifica especificamente o erro. Caso no ocorra o erro, ento a instruo If...Then...Else ser False e o loop prosseguir normalmente.

For ... Each ... Next


Repete um grupo de instrues para cada elemento de uma matriz ou coleo Sintaxe For each elemento in Grupo [Instrues] [Exit For] [Instrues] Next [elemento] A sintaxe da instruo For...Each...Next possui as partes a seguir: Parte Elemento Descrio Obrigatria. Varivel utilizada para iterar atravs dos elementos da coleo ou matriz. Para as colees, elemento pode ser somente uma varivel Variant, uma varivel de objeto genrica ou qualquer varivel de objeto especfica. Para as matrizes, elemento somente pode ser uma varivel Variant. 57

Microsoft Excel Curso Avanado

Grupo

Obrigatria. Nome de uma coleo ou matriz de objetos (exceto matriz de tipos definidos pelo usurio) Opcional. Uma ou mais instrues que so executadas em cada item de um grupo.

Instrues

Comentrios O bloco For...Each inserido se houver pelo menos um elemento em grupo. Uma vez que o loop tenha sido inserido, todas as instrues do loop so executadas para o primeiro elemento do grupo. Se houver mais elementos em grupo, as instrues do loop continuam a ser executadas para cada elemento. Quando no houver mais elementos em grupo, o loop sai e execuo continua com a instruo seguinte instruo Next. Qualquer nmero de instrues Exit For pode ser colocado em qualquer lugar do loop como um meio alternativo para sair. Muitas vezes, Exit For utilizada depois de se avaliar alguma condio, por exemplo, If... Then, e transfere o controle para a instruo imediatamente seguinte a Next. Pode-se embutir loops For...Each....Next colocando um dentro do outro. Entretanto, cada elemento do loop deve ser exclusivo. Observao: se voc emitir elementos em uma instruo Next a execuo continua como se o elemento estivesse includo. Se uma instruo Next for encontrada antes de sua instruo For correspondente, ocorrer um erro. Voc no pode utilizar a instruo For...Each...Next com uma matriz de tipos definidos pelo usurio porque um Variant no pode conter um tipo de definido pelo usurio. As instrues For...Each...Next repetem um bloco de instrues em cada objeto de uma coleo ou em cada elemento de uma matriz. O Visual Basic define automaticamente uma varivel todas as vezes que o loop for executado. Por exemplo, o procedimento apresentado a seguir fecha todos os formulrios, exceto o formulrio que contm o procedimento que est sendo executado. Sub FecharFormularios() For Each frm in Applications.Forms If frm.Caption <> Screen.ActiveForm.Caption Then frm.Close Next End Sub O cdigo apresentado a seguir executa um loop atravs de todos os elementos de uma matriz e define o valor de cada um deles como o valor da varivel de ndice I. Dim TestarMatriz(10) As Integer, I as Variant For Each I in TestarMatriz TestarMatriz(I) = I Next I Executando um loop em um intervalo de clulas Utilize um loop For Each Next para efetuar um loop nas clulas de um intervalo. O procedimento apresentado a seguir executa um loop no intervalo A1:D10 da Plan1 e define qualquer nmero cujo valor absoluto seja inferior a 0,01 como 0 (zero).

58

Microsoft Excel Curso Avanado

Sub ArredondarParaZero () For Each meuObjeto in minhaColeo If Abs(meuObjeto.Value) < 0.01 Then meuObjeto.Value = 0 Next End Sub Saindo de um loop For...Each...Next antes que ele tenha terminado Pode-se sair de um loop For...Each...Next utilizando a instruo Exit For. Por exemplo, quando ocorre um erro, utilize a instruo Exit For no bloco de instrues True de uma instruo If...Then...Else ou uma instruo Select Case que verifica de forma especfica o erro. Caso no ocorra o erro, a instruo If...Then...Else ser False e o erro prosseguir normalmente. O exemplo apresentado a seguir testa a primeira clula no intervalo A1:B5 que no contenha um nmero. Se existir uma clula desse tipo, ser exibida uma mensagem e Exit For sair do loop. Sub TestarNmero() For Each meuObjeto in MinhaColeo If IsNumeric (meuObjeto.Value) = False then MsgBox Objeto contm um valor no-numrico Exit For End If Next End Sub

With...End With
Executa uma srie de instrues em um nico objeto ou um tipo definido pelo usurio. Sintaxe With Objeto [Instrues] End With A instruo With possui as partes a seguir: Parte Objeto Instrues Descrio Obrigatria. Nome de um objeto ou de um tipo definido pelo usurio Opcional. Uma ou mais instrues a serem executadas com Objeto

Comentrios A instruo With permite executar uma srie de instrues com um objeto especfico sem requalificar o nome do objeto. Por exemplo, para alterar diversas propriedades diferentes de um nico objeto, coloque as instrues de atribuio de propriedades dentro da estrutura de controle With, referindo-se ao objeto uma s vez em lugar de faz-lo em todas as atribuies de propriedade. O exemplo a seguir ilustra a utilizao da instruo With para atribuir valores a diversas propriedades do mesmo objeto.

59

Microsoft Excel Curso Avanado

With MyLabel .Height = 2000 .With = 2000 .Caption = Este MyLabel End With Observao: uma vez que um bloco With seja inserido, objeto no pode ser modificado. Como resultado, voc no pode utilizar uma s instruo With para afetar objetos diferentes. Pode-se embutir instrues With colocando blocos With um dentro do outro. Entretanto, em razo de os membros dos blocos externos de With ficarem mascarados dentro dos blocos internos, voc deve proporcionar uma referncia a objeto totalmente qualificada em um bloco With interno para qualquer membro de um objeto existente em um bloco externo. Importante: No salte para dentro e para fora de blocos With. Se as instruo em um bloco With forem executadas mas a instruo With ou End With no for, voc poder provocar erros ou comportamento imprevisvel. Este exemplo utiliza a instruo With para executar uma srie de instrues em um nico objeto. O objeto meuObjeto e as suas propriedades so nomes genricos utilizados somente com finalidades ilustrativas. With meuObjeto .Height = 100 .Caption = Al mundo !! With .Font .Color = Red .Bold = True End With End With Funo MsgBox Exibe uma mensagem em uma caixa de dilogo, aguarda que o usurio clique em um boto e retorna um integer que indica qual boto o usurio clicou. Sintaxe MsgBox (prompt[, buttons] [, title] [, helpfile, context]) A sintaxe da funo MsgBox possui os argumentos nomeados a seguir: Parte Prompt Descrio Obrigatrio. Expresso de sequncia de caracteres exibida como mensagem na caixa de dilogo. O comprimento mximo de aproximadamente 1024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, voc poder separar as linhas utilizando um caracter de retorno de carro (Chr(13)), um caractere de alimentao de linha (Chr(10)) ou uma combinao de caracteres de retorno de carro e alimentao de linha (Chr(13)&Chr(10)) entre cada linha. Opcional. Expresso numrica que a soma de valores que especifica o nmero e o tipo de botes a exibir, o estilo de cone a utilizar, a identidade do boto padro e a modalidade da caixa de mensagem. Se omitido, o valor padro 0. 60

Buttons

Microsoft Excel Curso Avanado

Title

Opcional. Expresso de seqncia de caracteres exibida na barra de ttulo da caixa de dilogo. Se voc omitir title, o nome do aplicativo ser inserido na barra de ttulo. Opcional. Expresso de seqncia de caracteres que identifica o arquivo de Ajuda a ser utilizado para fornecer a ajuda sensvel ao contexto relativa a caixa de dilogo. Se helpfile for fornecido, context tambm dever ser fornecido. Opcional. Expresso nmrica que o nmero de contexto da Ajuda atribudo ao tpico de Ajuda apropriado pelo autor da Ajuda.

Helpfile

Context

Definies: As definies do argumento button so: Constante VbOkOnly VbOkCancel VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel VbCritical VbQuestion VbExclamation VbInformation VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 VbApplicationModal Valor 0 1 2 3 4 5 16 32 48 64 0 256 512 768 0 Descrio Exibe somente o boto Ok. Exibe os botes Ok e Cancelar. Exibe os botes Abortar, Repetir e Ignorar Exibe os botes Sim, No e Cancelar Exibe os botes Sim e No Exibe os botes Repetir e Cancelar Exibe o cone Mensagem Crtica Exibe o cone Consulta de Aviso Exibe o cone Mensagem de Aviso Exibe o cone Mensagem de Informao O primeiro boto o padro. O segundo boto o padro. O terceiro boto o padro O quarto boto o padro. Janela restrita do aplicativo; o usurio deve responder a caixa de mensagem antes de continuar o trabalho no aplicativo atual. Janela restrita do sistema; todos os aplicativos so suspensos at que o usurio responda a caixa de mensagem.

VbSystemModal

4096

O primeiro grupo de valores (0-5) descreve o nmero e o tipo de botes exibidos na caixa de dilogo; o segundo grupo (16, 32, 48, 64) descreve o estilo do cone; o terceiro grupo (0, 256, 512) determina qual boto o padro e o quarto grupo (0, 4096) determina a modalidade da caixa de mensagem. Quando estiver somando nmeros para criar um valor final para o argumento buttons, utilize somente um nmero de cada grupo. Observao: Estas constantes so especificadas pelo Visual Basic para Aplicativos. Como resultado, os nomes podem ser utilizados em qualquer lugar do seu cdigo em vez dos valores reais. 61

Microsoft Excel Curso Avanado

Valores de retorno Constante VbOk VbCancel VbAbort VbRetry VbIgnore VbYes VbNo Valor 1 2 3 4 5 6 7 Descrio Ok Cancelar Abortar Repetir Ignorar Sim No

Comentrios: Quando helpfile e context so fornecidos, o usurio pode pressionar F1 para exibir o tpico da Ajuda correspondente ao context. Alguns aplicativos host, por exemplo, o Microsoft Excel, tambm adicionam automaticamente um boto Ajuda caixa de dilogo. Se a caixa de dilogo exibir um boto Cancelar, pressionar a tecla ESC ter o mesmo efeito que clicar em Cancelar. Se a caixa de dilogo contiver um boto Ajuda, ser fornecida a ajuda sensvel ao contexto relativa a caixa de dilogo. Entretanto nenhum valor ser retornado at que um dos outros botes seja clicado. Observao: Para especificar mais do que o primeiro argumento nomeado, pode-se utilizar MsgBox em uma expresso. Para omitir algum argumento posicional, voc deve incluir o delimitador de vrgula correspondente. Este exemplo utiliza a funo MsgBox para exibir uma mensagem de erro crtico em uma caixa de dilogo com os botes Sim e No. O boto No especificado como a resposta padro. O valor retornado pela funo MsgBox depende do boto escolhido pelo usurio. Este exemplo supe que DEMO.HLP um arquivo de ajuda que contm um tpico com um nmero de contexto da Ajuda igual a 1000. Dim Msg, Estilo, Titulo, Ajuda, Ctxt, Resposta, MinhaSequencia Msg = Deseja continuar ? Estilo = vbYesNo + VbCritical + VbDefaultButton2 Titulo = Demonstrao do MsgBox Ajuda = Demo.Hlp Ctxt = 1000 Resposta = MsgBox, (Msg, Estilo, Titulo, Ajuda, Ctxt) If Resposta = VbYes then MinhaSequencia = Sim Else MinhaSequencia = No End If Funo InputBox Funo InputBox Exibe um aviso em uma caixa de dilogo, aguarda at que o usurio insira texto ou clique em um boto e retorna um String com o contedo da caixa de texto. Sintaxe

62

Microsoft Excel Curso Avanado

InputBox (prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context]) A sintaxe da funo InputBox possui os argumentos nomeados a seguir: Parte Prompt Descrio Obrigatrio. Expresso de sequncia de caracteres exibida como mensagem na caixa de dilogo. O comprimento mximo de prompt de aproximadamente 1024 caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, voc poder separar as linhas utilizando um caracter de retorno de carro (Chr(13)), um caractere de alimentao de linha (Chr(10)) ou uma combinao de caracteres de retorno de carro e alimentao de linha (Chr(13)&Chr(10)) entre cada linha. Opcional. Expresso de seqncia de caracteres exibida na barra de ttulo da caixa de dilogo. Se voc omitir title, o nome do aplicativo ser inserido na barra de ttulo Opcional. Expresso de seqncia de caracteres exibida na caixa de texto como resposta padro se nenhuma entrada for fornecida. Se voc omitir default, a caixa de texto ser exibida vazia. Opcional. Expresso nmerica que especifica, em twips, a distncia horizontal da extremidade esquerda da caixa de dilogo em relao a extremidade esquerda da tela. Se xpos for omitido, a caixa de dilogo ser centralizada horizontalmente. Opcional. Expresso numrica que especifica, em twips, a distncia vertical da extremidade superior da caixa de dilogo em relao ao topo da tela. Se ypos for omitido, a caixa de dilogo ser posicionada na vertical a aproximadamente um tero da extremidade inferior da tela. Opcional. Expresso de seqncia de caracteres que identifica o arquivo de Ajuda a ser utilizado para fornecer a ajuda sensvel ao contexto relativa a caixa de dilogo. Se helpfile for fornecido, context tambm dever ser fornecido. Opcional. Expresso nmrica que o nmero de contexto da Ajuda atribudo ao tpico de Ajuda apropriado pelo autor da Ajuda.

Title

Default

Xpos

Ypos

Helpfile

Context

Comentrios: Quando helpfile e context so fornecidos, o usurio pode pressionar F1 para exibir o tpico de ajuda que corresponde ao context. Alguns aplicativos host, por exemplo, o Microsoft Excel, tambm adicionam automaticamente um boto Ajuda caixa de dilogo. Se o usurio clicar em Ok ou pressionar Enter, a funo InputBox retornar o que houver na caixa de texto. Se o usurio clicar em Cancelar, a funo retornar uma seqncia de caracteres de comprimento zero () Observao: Para especificar mais que o primeiro argumento nomeado, voc deve utilizar InputBox em uma expresso. Para omitir alguns argumentos posicionais, voc deve incluir o delimitador de vrgula correspondente. Este exemplo mostra vrias maneiras de utilizar a funo InputBox para solicitar ao usurio que insira um valor. Se as posies x e y forem omitidas, a caixa de dilogo ser automaticamente centralizada em relao aos respectivos eixos. A varivel meuValor contm o valor inserido pelo usurio se o usurio clicar em Ok ou pressionar a tecla Enter. Se o usurio clicar em Cancelar, ser retornada uma seqncia de comprimento zero.

63

Microsoft Excel Curso Avanado

Dim Mensagem, Titulo, Padro, MeuValor Mensagem = Insira um valor entre 1 e 3 Ttulo = Demonstrao da caixa de entrada Padro = 1 Exibe a mensagem, o ttulo e o valor padro MeuValor = InputBox (Mensagem, Ttulo, Padro) Utiliza o arquivo de Ajuda e o contexto. O boto Ajuda adicionado automaticamente MeuValor = InputBox (Mensagem, Ttulo, , , , DEMO.HLP, 10) Exibe a caixa de dilogo na posio 100, 100 MeuValor = InputBox (Mensagem, Titulo, Padro, 100, 100)

Regras de nomenclatura de objetos


Utilize as seguintes regras quando nomear procedimentos, constantes, variveis e argumentos em um mdulo do Visual Basic: Voc deve utilizar uma letra como primeiro caractere. Voc no pode utilizar um espao, ponto, ponto de exclamao ou os caracteres @, &, $, # no nome. O nome pode ter no mximo 255 caracteres de comprimento Geralmente voc no deve utilizar nomes iguais s funes, instrues e mtodos do Visual Basic. Pode-se sombrear as mesmas palavras chave na linguagem. Para utilizar uma funo, instruo ou mtodo intrnseco que entre em conflito com um nome atribudo, voc deve identificalo explicitamente. Proceda o nome da funo, instruo ou mtodo intrnseco com o nome da biblioteca de tipos a que est associado. Por exemplo, se voc tiver uma varivel chamada Left, s poder invocar a funo Left utilizando VBA.Left. Voc no pode repetir nomes dentro do mesmo nvel de escopo. Por exemplo, voc no pode declarar duas variveis com o nome idade dentro do mesmo procedimento. No entanto, possvel declarar uma varivel privada com o nome idade e uma varivel em nvel de procedimento com o nome idade dentro do mesmo mdulo. Observao: O Visual Basic no faz distino entre maisculas e minsculas, mas preserva a capitalizao na instruo em que o nome for declarado. Resumo dos operadores Operadores Operadores aritmticos ^, *, /, \, Mod, +, Operadores de comparao Operadores utilizados para efetuar comparaes >, <, <>, >=, <=, IS, LIKE Operadores concatenao Operadores lgicos de Operadores utilizados para combinar seqncias de caracteres. &, + And, Eqv, Imp, Not, Or, Xor

Descrio Operadores utilizados para efetuar clculos matemticos:

Resumo das palavras-chave de datas e horas Ao

Palavras-chave 64

Microsoft Excel Curso Avanado

Obter a data ou a hora atual Date, Now, Time Executar datas clculos com DateAdd, DateDiff, DatePart DateSerial, DateValue TimeSerial, TimeValue Date, Time um Timer de

Retornar uma data Retornar uma hora Definir a data ou a hora Medir o processo tempo

Resumo das palavras-chave de fluxo de controle Ao Ramificar Sair ou fazer pausa no DoEvents, End, Exit, Stop programa Executar loop Tomar decises Usar procedimentos

Palavras-chave

GoSub...Return, GoTo, On Error, On...GoSub, On...GoTo

Do...Loop, For...Next, For Each... Next, While...Wend, With Choose, If...Then...Else, Select Case, Switch Call, Function, Property Get, Property Let, Property Set, Sub

Resumo das palavras-chave de manipulao de seqncias de caracteres Ao Palavras-chave Comparar duas seqncias de caracteres Converter seqncias de caracteres Converter em minsculas ou maisculas Criar seqncia de caracter repetido StrComp StrConv Format, LCase, UCase Space, String

Encontrar o tamanho de uma seqncia de Len caracteres Formatar uma seqncia de caracteres Justificar uma seqncia de caracteres Manipular seqncias de caracteres Format LSet, RSet InStr, Left, LTrim, Mid, Right, RTrim, Trim

Definir regra de comparao de seqncias de Option Compare caracteres Trabalhar com valores ASCII e ANSI Asc, Chr

Resumo das palavras-chave de tipo de dados Ao Converter entre tipos de dados

Palavras-chave CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar, CVErr, Fix, Int 65

Microsoft Excel Curso Avanado

Definir tipos de dados intrnsecos Verificar tipos de dados

Boolean, Byte, Currency, Date, Double, Integer, Long, Object, Single, String, Variant (default) IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject

Resumo das palavras-chave financeiras Ao Calcular depreciao Calcular valor futuro Calcular taxa de juros Calcular taxa de retorno interna Calcular nmero de perodos Calcular pagamentos Calcular valor presente FV Rate IRR, MIRR Nper

Palavras-chave DDB, SLN, SYD

IPmt, Pmt, PPmt NPV, PV

Resumo das palavras chave de variveis e constantes Ao Atribuir valor Declarar variveis ou constantes Declarar mdulo como privado Obter informaes sobre uma variante Referir-se ao objeto atual Requerer declaraes de varivel explicita Definir tipo de dados padro Let

Palavras-chave

Const, Dim, Private, Public, New, Static Option Private Module IsArray, IsDate, IsEmpty, IsError, IsMissing, IsNull, IsNumeric, IsObject, TypeName, VarType Me Option Explicit Deftipo

Trabalhando com dados da planilha


Uma tarefa comum ao usar o Visual Basic especificar uma clula ou intervalo de clulas e, em seguida, fazer algo com elas, como inserir uma frmula ou alterar o formato. Geralmente, pode-se fazer isso em uma instruo que identifique o intervalo e tambm altere uma propriedade ou aplique um mtodo. Um objeto Range no Visual Basic pode ser uma nica clula ou um intervalo de clulas. Os tpicos seguintes mostram as maneiras mais comuns de identificar e trabalhar com objetos Range. Referindo-se a clula usando notao A1 Pode-se referir-se a uma clula ou intervalo de clulas no estilo de referncia A1 usando o mtodo Range. O procedimento Sub seguinte altera o formato das clulas A1:D5 para negrito: 66

Microsoft Excel Curso Avanado

Sub FormatarIntervalo() Workbooks(Pasta1).Sheets(Plan1).Range(A1:D5) _ .Font.Bold = True End Sub A tabela seguinte ilustra algumas referncias em estilo A1 usando o mtodo Range: Referncia Range(A1) Range(A1:B5) Range(C5:D9,G9:H16) Range(A:A) Range(1:1) Range(A:C) Range(1:5) Range(1:1,3:3,8:8) Range(A:A,C:C,F:F) Significado Clula A1 Clulas de A1 at B5 Seleo de vrias reas Coluna A Linha 1 Colunas de A at C Linhas de 1 at 5 Linhas 1, 3 e 8 Colunas A, C e F

Referindo-se a clulas usando nmeros de ndice Pode-se usar a propriedade Cells para referir-se a uma nica clula usando nmeros de ndices de linhas e coluna, Essa propriedade retorna um objeto Range representando uma nica clula. No exemplo seguinte, Cells(6,1) retorna a clula A6 de Plan1. Em seguida a propriedade Value definida como 10. Sub InserirValor() Worksheets(Plan1).Cells(6,1).Value = 10 End Sub A propriedade Cells funciona bem para loop atravs de um intervalo de clulas porque pode-se substituir os nmeros de ndice por variveis, conforme mostrado no exemplo seguinte: Sub Circular() Dim Contador as Integer For Contador = 1 to 20 Worksheets(Plan1).Cells(Contador,3).Value = Contador Next Contador End Sub Observao: Se voc desejar alterar as propriedades ou aplicar um mtodo a todo um intervalo de clulas de uma s vez, use a propriedade Range. Para obter maiores informaes, consulte Referir-se a clulas usando notao A1. Referindo-se a linhas e colunas Use a propriedade Rows ou a propriedade Columns para trabalhar com linhas ou colunas inteiras. Essas propriedades retornam um objeto Range representado um intervalo de clulas. No exemplo seguinte, Rows(1) retorna a linha 1 em Plan1. Em seguida, a propriedade Bold do objeto Font do intervalo definida como True. 67

Microsoft Excel Curso Avanado

Sub LinhaComNegrito() Worksheets(Plan1).Rows(1).Font.Bold = True End Sub A tabela seguinte ilustra algumas referncias de linha e coluna usando as propriedades Rows e Colums. Referncia Rows(1) Rows Columns(1) Columns(A) Columns Significado Linha 1 Todas as linhas da planilha Coluna 1 Coluna 1 Todas as colunas da planilha

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 1, 3 e 5 na planilha 1 da pasta de trabalho ativa. Sub VariasLinhas() Dim MinhaUniao as Range Worksheets(Plan1).Activate Set MinhaUniao = Union(Rows(1), Rows(3), Rows(5)) MinhaUniao.Font.Bold = True End Sub Referindo-se a clulas usando notao de atalho Pode-se usar o estilo de referncia A1 ou um intervalo nomeado entre colchetes com um atalho para a propriedade Range. Voc no precisa digitar a palavra Range nem usar aspas, conforme mostrado nos exemplos seguintes. Sub LimparIntervalo() Worksheets(Plan1).[A1:B5].ClearContents End Sub Sub DefinirValor() [MeuIntervalo].Value = 30 End Sub Referindo-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. O exemplo seguinte refere-se ao intervalo chamado MeuIntervalo na pasta de trabalho chamada MinhaPasta.xls.

68

Microsoft Excel Curso Avanado

Sub FormatarIntervalo() Range(MinhaPasta.xls!MeuIntervalo).Font.Italic = True End Sub O exemplo seguinte refere-se ao intervalo especfico de planilha chamado Plan1!Vendas na pasta de trabalho chamada Relatrio.xls. Sub Formatar Vendas() Range([Relatrio.xls]Plan1!Vendas).BorderAround weight:=xlthin End Sub Para selecionar um intervalo nomeado, use o mtodo GoTo, o qual ativa a pasta de trabalho e a planilha e, em seguida, seleciona o intervalo. Sub LimparIntervalo() Application.GoTo Reference:=Range(MinhaPasta.xls!MeuIntervalo) Selection.ClearContents End Sub O exemplo seguinte mostra como o mesmo procedimento seria escrito para a pasta de trabalho ativa: Sub LimparIntervalo() Application.GoTo Reference:=Range(MeuIntervalo) Selection.ClearContents End Sub Loop atravs de clulas em 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 limite, a cor da clula ser alterada para amarelo. Sub AplicarCor() Const Limite as Integer = 25 For Each C in Range (Meu Intervalo) IF C.Value > Limite then C. Interior.ColorIndex = 27 End If Next C End Sub Referindo-se a clulas em relao a outras clulas Uma maneira comum de trabalhar com uma clula em relao a uma outra clula usar a propriedade Offset. No exemplo seguinte, o contedo da clula que se encontra uma linha abaixo e a trs coluna da clula ativa na planilha ativa formatado com sublinhado duplo. Sub Sublinhar() ActiveCell.Offset(1,3).Font.Underline = xlDouble End Sub

69

Microsoft Excel Curso Avanado

Observao: Pode-se gravar macros que usem a propriedade Offset em vez de referncias absolutas. No menu Ferramentas, aponte para Gravar macro e, em seguida, clique em Usar referncias relativas. Para fazer um loop atravs de um intervalo de clulas, use uma varivel com a propriedade Cells em um loop. O exemplo seguinte preenche as 20 primeiras clulas da terceira coluna com valores entre 5 e 100, incrementados por 5. A varivel contador usada como ndice de linha para a propriedade Cells. Sub Circular() Dim Contador as Integer For Contador = 1 to 20 Worksheets(Plan1).Cells(Contador, 3).Value = Contador*5 Next Contador End Sub Referindo-se a clulas usando um objeto Range Quando voc define uma varivel de objeto para um objeto Range, pode-se facilmente manipular o intervalo usando o nome da varivel. O procedimento seguinte cria a varivel de objeto MeuIntervalo e, em seguida, atribui a varivel ao intervalo A1:D5 de Plan1 na pasta de trabalho ativa. Instrues subsequentes modificam propriedades do intervalo substituindo o objeto de intervalo pelo nome da varivel. Sub Aleatorizar() Dim MeuIntervalo as Range Set MeuIntervalo = Worksheets(Plan1).Range(A1:D5) MeuIntervalo.Formula = =RAND() MeuIntervalo.Font.Bold = True End Sub Referindo-se a todas as clulas da planilha Quando voc aplica a propriedade Cells a uma planilha sem especificar um nmero de ndice, o mtodo retorna um objeto Range representando todas as clulas da planilha. O procedimento Sub seguinte limpa o contedo de todas as clulas de Plan1 na pasta de trabalho ativa. Sub LimparPlanilha() Worksheets(Plan1).Cells.ClearContents. End Sub

Loop atravs de um intervalo de clulas


Ao usar o Visual Basic, voc freqentemente precisa executar o mesmo bloco de instrues em cada clula de um intervalo de clulas. Para fazer isso, voc combina uma instruo de loop com um ou mais mtodos para identificar cada clula, uma de cada vez, e executa a operao. Uma maneira de fazer loop atravs de um intervalo usar o loop For...Next com a propriedade Cells. Usando a propriedade Cells, pode-se substituir o contador do loop (ou outras variveis ou expresses) pelos nmeros de ndice das clulas. No exemplo seguinte, a varivel Contador substituda pelo ndice de linha. O procedimento faz um loop atravs de um intervalo C1:C20, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01. 70

Microsoft Excel Curso Avanado

Sub ArredondarParaZero() For Contador = 1 to 20 Set CelulaAtual = Worksheets(Plan1).Cells(contador,3) If Abs(CelulaAtual.Value) < 0,01 Then CelulaAtual.Value = 0 Next Contador End Sub Uma outra maneira mais fcil de se fazer um loop atravs de um intervalo usar um loop For Each...Next com a coleo de clulas retornada pelo mtodo Range. O Visual Basic define automaticamente uma varivel de objeto para a prxima clula cada vez que o loop executado. O procedimento seguinte faz um loop atravs do intervalo A1:D10, definindo como 0 (zero) qualquer nmero cujo valor absoluto seja menor que 0,01. Sub ArredondarParaZero() For Each C in Worksheets(Plan1).Range(A1:D10).Cells If Abs(C.Value) < 0,01 Then C.Value = 0 Next End Sub Se voc no souber os limites do intervalo pelo qual deseja fazer o loop pode-se usar a propriedade CurrentRegion para retornar o intervalo que envolve a clula ativa. Por exemplo, o procedimento 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 seja menor que 0,01. Sub ArredondarParaZero() For Each C in ActiveCell.CurrentRegion.Cells If Abs(C.Value) < 0,01 Then C.Value = 0 Next End Sub

Selecionar e ativar clulas


Quando voc trabalho 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 Visual Basic, 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 mostrada no exemplo seguinte. Sub InserirFormula() Worksheets(Plan1).Range(D6).Formula = =SUM(D2:D5) End Sub Para exemplos de uso de outros mtodos para controlar clulas sem selecion-las, consulte Como referir-se a clulas e intervalos. 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

71

Microsoft Excel Curso Avanado

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 procedimento Sub seguinte foi criado pelo uso do gravador de macro e ilustra como Select e Selection funcionam juntas. Sub Macro1() Sheets(Plan1).Select Range(A1).Select ActiveCell.FormulaR1C1 = Nome Range(B1).Select ActiveCell.FormulaR1C1 = Endereo Range(A1:B1).Select Selection.Font.Bold = True End Sub O exemplo seguinte realiza a mesma tarefa sem ativar nem selecionar a planilha ou as clulas. Sub Legendas() With Worksheets(Plan1) .Range(A1) = Nome .Range(B1) = Endereo .Range(A1:B1).Font.Bold = True End With End Sub Selecionar clulas na planilha ativa 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 procedimento seguinte copia uma linha de Plan1 para Plan2 na pasta de trabalho ativa. Sub CopiarLinha() Worksheets(Plan1).Rows(1).Copy Worksheets(Plan2).Select Worksheets(Plan2).Rows(1).Select Worksheets(Plan2).Paste End Sub Ativar uma clula dentro de uma seleo Pode-se 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 procedimento seguinte seleciona um intervalo e, em seguida, ativa uma clula dentro do intervalo sem alterar a seleo. Sub TornarAtiva() Worksheets(Plan1).Activate Range(A1:D4).Select Range(B2).Activate End Sub 72

Microsoft Excel Curso Avanado

Trabalhar com a clula ativa


A propriedade ActiveCell retorna um objeto Range representando a clula que est ativa. Pode-se aplicar qualquer das propriedades ou mtodos de um objeto Range clula ativa, como no exemplo seguinte. Sub DefinirValor() Worksheets(Plan1).Activate ActiveCell.Value = 35 End Sub Observao: Voc s pode trabalhar com a clula ativa quando a planilha na qual ela se encontra a planilha ativa. Mover a clula ativa Pode-se usar o mtodo Activate para designar qual clula a clula ativa. Por exemplo, o procedimento seguinte torna B5 a clula ativa e, em seguida, a formata com negrito. Sub DefinirAtiva() Worksheets(Plan1).Activate Worksheets(Plan1).Range(B5).Activate ActiveCell.Font.Bold = True End Sub Observao: Para selecionar um intervalo de clulas use o mtodo Select. Para tornar uma nica clula a clula ativa, use o mtodo Activate. Pode-se usar a propriedade Offset para mover a clula ativa. O procedimento 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. Sub MoverAtiva() Worksheets(Plan1).Activate Range(A1:D10).Select ActiveCell.Value = Totais Mensais ActiveCell.Offset(0,1).Activate End Sub Selecionar as clulas ao redor da clula ativa 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 Moeda. Sub Regiao() Worksheets(Plan1).Activate ActiveCell.CurrentRegion.Select Selection.Style = Currency End Sub

73

Microsoft Excel Curso Avanado

Criando uma interface com o usurio


Tal como pode-se adicionar controles ActiveX a caixas de dilogo personalizadas, pode-se adicionar controles diretamente a um documento quando desejar fornecer uma maneira sofisticada do usurio interagir diretamente com sua macro sem a distrao das caixas de dilogo. Use o procedimento seguinte para adicionar controles ActiveX a seu documento. Para obter informaes mais especficas sobre uso de controles ActiveX no Microsoft Excel, consulte Usar controles ActiveX em planilhas. 1. Adicionar controles ao documento Para adicionar controles a um documento, exiba a Caixa de Ferramentas de Controle, clique no controle que voc deseja adicionar e, em seguida, clique no documento. Arraste uma ala de ajuste do controle at o contorno do controle Ter o tamanho e a forma desejados. Arrastar um controle (ou vrios controles agrupados) do formulrio de volta para a Caixa de Ferramentas de Controle cria um modelo desse controle, o qual pode ser reutilizado. Isso um recurso til para implementao de uma aparncia e um modo de operao padronizados em seus aplicativos. 2. Definir propriedades de controle Pode-se definir algumas propriedades de controle quando da criao (antes de qualquer macro ser executada). Em modo de criao, clique com o boto direito do mouse em um controle e clique em Propriedades. Os nomes das propriedades so mostrados na coluna esquerda da janela e os valores das propriedades na coluna direita. Voc define o valor de uma propriedade inserindo o novo valor direita do nome da propriedade. 3. Inicializar os controles Pode-se inicializar controles em tempo de execuo usando cdigo do Visual Basic em uma macro. Por exemplo, pode-se preencher uma caixa de listagem, definir valores de texto ou definir botes de opo. O exemplo seguinte usa o mtodo AddItem para adicionar dados a uma caixa de listagem. Em seguida, ele define o valor de uma caixa de texto e exibe o formulrio. Private Sub ObterNomeDoUsuario() With FormDoUsuario .lstRegioes.AddItem Norte .lstRegioes.AddItem Sul .lstRegioes.AddItem Leste .lstRegioes.AddItem Oeste .txtCdigodoVendedor.Text = 00000 .Show End With End Sub Voc tambm pode usar cdigo no evento Initialize de um formulrio para definir valores iniciais para controles no formulrio. Uma vantagem da definio de valores iniciais para controles no evento Initialize que o cdigo de inicializao permanece com o formulrio. Pode-se copiar o formulrio para um outro projeto com todas as inicializaes. Private Sub UserForm_Initialize) FormDoUsuario.lstNomes.AddItem Teste Um FormDoUsuario.lstNomes.AddItem Teste Dois 74

Microsoft Excel Curso Avanado

FormDoUsuario.txtNomeDoUsuario.Text = Nome Padro End Sub 5. Escrever procedimentos de evento Os UserForms e os controles tm um conjunto predefinido de eventos. Por exemplo, um boto de comando tem um evento Click que ocorre quando o usurio clica no boto de comando, e os UserForms tm um evento Initialize que executado quando o formulrio carregado. Pode-se escrever procedimentos de evento que sejam executados quando os eventos ocorrem. Aps adicionar controles a sua caixa de dilogo ou documento, voc adiciona procedimentos de evento para determinar como os controles respondero a aes do usurio. Para escrever um controle ou procedimento de evento de formulrio, abra um mdulo clicando duas vezes no formulrio ou controle e selecione o evento a partir da caixa de listagem dropdown Procedimento. Os procedimentos de evento incluem o nome do controle. Por exemplo, o nome do procedimento de evento Click de um boto de comando chamado Comando1 Comando1_Click. Se voc adicionar cdigo a um procedimento de evento e, em seguida, alterar o nome do controle, o seu cdigo permanecer nos procedimentos com o nome anterior. Por exemplo, suponha que voc adicione cdigo ao evento Click de Comando1 e, em seguida, renomeie o controle para Comando2. Quando voc clicar duas vezes em Comando2, voc no ver cdigo algum no procedimento de evento Click. Voc ter que mover o cdigo de Comando1_Click para Comando2_Click. Para simplificar o desenvolvimento, uma boa prtica nomear corretamente seus controles antes de escrever cdigo. 6. Usar valores de controle quando o cdigo est sendo executado Algumas propriedades podem ser definidas em tempo de execuo. O exemplo seguinte define a propriedade Text de uma caixa de texto como Ol CaixaDeTexto1.Text = Ol Os dados inseridos em um formulrio por um usurio so perdidos quando o formulrio fechado. Quando voc retorna os valores dos controles de um formulrio aps o formulrio ter sido descarregado, voc obtm os valores iniciais dos controles em vez dos valores inseridos pelo usurio. Se voc deseja salvar os dados inseridos em um formulrio, pode-se salvar as informaes em variveis a nvel de mdulo enquanto o formulrio ainda est sendo executado. O exemplo seguinte exibe um formulrio e salva os dados do formulrio. Cdigo no mdulo para declarar variveis pblicas Public strRegiao As String Public intCodigoDoVendedor as Integer Public blnCancelado as Boolean Cdigo no formulrio 75

Microsoft Excel Curso Avanado

Private Sub cmdCancelar_Click() Modulo1.blnCancelado = True Unload Me End Sub Private Sub cmdOk_Click() Salvar dados intCodigoDoVendedor = txtCodigoDoVendedor.Text strRegiao = lstRegioes.List (lstRegioes.ListIndex) Modulo1.blnCancelado = False Unload Me End Sub Private Sub UserForm_Initialize () Modulo1.blnCancelado = True End Sub Cdigo em mdulo para exibir formulrio Sub IniciarFormulrioVendedores() frmVendedores.Show if blnCancelado = True Then MsgBox Operao Cancelada !, vbExclamation Else MsgBox O cdigo do Vendedor : & _ IntCodigoDoVendedor & Chr$(13) & _ A regio : & strRegiao End If End Sub

76

Microsoft Excel Curso Avanado

Erros e tratamentos de erros


Quando voc est programando um aplicativo, voc precisa levar em considerao o que acontece quando ocorre um erro. Um erro pode ocorrer no seu aplicativo por duas razes. Primeiro, quando alguma condio durante a execuo do aplicativo faz com que o cdigo, que na ausncia dessa situao seria vlido, apresenta uma falha. Por exemplo, se o seu cdigo tentar abrir uma tabela que o usurio excluiu, ocorrer um erro. Segundo, quando o cdigo contm lgica incorreta que o impede de fazer o que voc pretendia. Por exemplo, ocorre um erro se o seu cdigo tentar dividir um valor por zero. Se voc no implementou nenhum tratamento de erros, o Visual Basic interromper a execuo e exibir uma mensagem de erro, quando ocorrer um erro no seu cdigo. O usurio do seu aplicativo provavelmente se sentir confuso e frustado quando isso acontecer. Voc poder prevenir muitos problemas incluindo rotinas minuciosas de tratamento de erros no seu cdigo, para manipular qualquer erro que possa ocorrer. Ao adicionar tratamento de erros em um procedimento, voc dever levar em considerao como o procedimento ir direcionar a execuo quando ocorrer um erro. O primeiro passo no direcionamento da execuo para uma rotina de tratamento de erros ativar a rotina por meio da incluso de alguma forma da instruo On Error no procedimento. A instruo On Error direciona a execuo na eventualidade de um erro. Se no houver uma instruo On Error, o Visual Basic simplesmente interromper a execuo e exibir uma mensagem de erro. Quando ocorre um erro em um procedimento que tem uma rotina de tratamento de erros ativada, o Visual Basic no exibe a mensagem normal de erro. Em vez disso, ele direciona a execuo para uma rotina de tratamento de erros, caso exista. Quando a execuo passada para uma rotina de tratamento de erros habilitada, esta rotina torna-se ativa. Dentro da rotina de tratamento de erros, pode-se verificar o tipo de erro ocorrido e trat-lo da maneira que escolher. O Microsoft Excel oferece dois objetos que contm informaes sobre erros ocorridos: o objeto Err do Visual Basic e o objeto Err do DAO.

Direcionando a execuo quando ocorre um erro


Uma rotina de tratamento de erros especifica o que acontece dentro de um procedimento quando ocorre um erro. Por exemplo, pode-se desejar que o procedimento seja finalizado se ocorrer um certo erro, ou que seja corrigida a condio que causou o erro e a execuo continue. As instrues On Error e Resume determinam como prosseguir a execuo na eventualidade de um erro.

A instruo On Error
Esta instruo ativa ou desativa uma rotina de tratamento de erros. Se uma rotina de tratamento de erros estiver ativada, a execuo passar para esta rotina quando ocorrer um erro. Existem trs formas da instruo On Error: On Error GoTo rtulo, On error GoTo 0 e On Error Resume Next. A instruo OnError GoTo rtulo ativa uma rotina de tratamento de erros a comear da linha na qual se encontra a instruo. Voc deve ativar a rotina de tratamento de erros antes da primeira linha em que um erro possa ocorrer. Quando o rotina de tratamento de erros est ativa e ocorre um erro, a execuo passa para a linha especificada pelo argumento rtulo. A linha especificada pelo argumento rtulo deve ser o incio da rotina de tratamento de erros. Por exemplo. O procedimento a seguir especifica que, se ocorrer um erro, a execuo passar a linha intitulada Error_PodeCausarUmErro.

77

Microsoft Excel Curso Avanado

Function PodeCausarUmErro() Ativa rotina de tratamento de erros On Error GoTo Error_PodeCausarUmErro Inclua aqui cdigo que possa gerar um erro ... Erro_PodeCausarUmErro: Inclua aqui cdigo para tratamento de erros. ... End Function A instruo On Error GoTo 0 desativa o tratamento de erros dentro de um procedimento. Ela no especifica a linha 0 como o incio do cdigo de tratamento de erros, mesmo que o procedimento contenha uma linha numerada como 0. Se no houver nenhuma instruo On Error GoTo 0 no seu cdigo, a rotina de tratamento de erros desativada automaticamente quando o procedimento for executado at o fim. A instruo On Error GoTo 0 redefine as propriedades do objeto Err, tendo o mesmo efeito do mtodo Clear o objeto Err. A instruo On Error Resume Next ignora a linha que causa um erro e direciona a execuo para a linha seguinte quela que causou o erro. A execuo no interrompida. Pode-se utilizar a instruo On Error Resume Next se quiser verificar as propriedades do objeto Err imediatamente aps uma linha na qual voc prev que ocorrer um erro, e tratar o erro dentro do procedimento, ao invs de faz-lo dentro de uma rotina de tratamento de erros.

A instruo Resume
A instruo Resume devolve a execuo ao corpo do procedimento, a partir de uma rotina de tratamento de erros. Pode-se incluir uma instruo Resume dentro de uma rotina de tratamento de erros se desejar que a execuo continue em um determinado ponto de um procedimento. Entretanto, a instruo Resume no necessria; pode-se tambm finalizar o procedimento depois da rotina de tratamento de erros. Existem trs formas da instruo Resume. A instruo Resume ou Resume 0 retorna a execuo para a linha na qual ocorreu o erro. A instruo Resume Next retorna a execuo para a linha imediatamente seguinte aquela na qual ocorreu o erro. A instruo Resume rtulo retorna a execuo para a linha especificada pelo argumento rtulo. O argumento rtulo deve indicar um rtulo ou nmero de linha. Em geral, voc utilizar a instruo Resume ou Resume 0 quando o usurio precisa fazer uma correo. Por exemplo, se voc solicita ao usurio o nome de uma tabela a ser aberta e o usurio insere o nome de uma tabela que no existe, pode-se fazer nova solicitao e continuar a execuo na instruo que causou o erro. Voc utiliza a instruo Resume Next quando o seu cdigo corrige o erro dentro de uma rotina de tratamento de erros e voc deseja continuar a execuo sem executar novamente a linha que causou o erro. Voc utiliza a instruo Resume rtulo quando deseja continuar a execuo em outro ponto do procedimento, especificado pelo argumento rtulo. Por exemplo, pode ser conveniente continuar a execuo em uma rotina de sada, conforme descrito na prxima seo.

Saindo de um procedimento
Quando voc inclui uma rotina de tratamento de erros em um procedimento, voc deve tambm incluir uma rotina de sada, para que a rotina de tratamento de erros s seja executada se ocorrer um erro. Pode-se especificar uma rotina de sada com um rtulo de linha, da mesma maneira que especifica uma rotina de tratamento de erros.

78

Microsoft Excel Curso Avanado

Por exemplo, pode-se adicionar uma rotina de sada ao exemplo da seo anterior. Se no ocorrer um erro, a rotina de sada ser executada depois do corpo do procedimento. Se ocorrer um erro, a execuo passar para a rotina de sada aps execuo da rotina de tratamento de erros. A rotina de sada contm uma instruo Exit. Function PodeCausarUmErro() Ativa rotina de tratamento de erros On Error GoTo Error_PodeCausarUmErro Inclua aqui cdigo que possa gerar um erro ... Exit_PodeCausarUmErro: Exit Function Erro_PodeCausarUmErro: Inclua aqui cdigo para tratamento de erros. ... Continua execuo na rotina de sada para sair da funo Resume Exit_PodeCausarUmErro End Function

Tratando os erros em procedimento aninhados


Quando ocorre um erro em um procedimento aninhado que no tem uma rotina de tratamento de erros ativada, o Visual Basic procura retroativamente na lista de chamadas at encontrar uma rotina de tratamento de erros em um outro procedimento, em lugar de simplesmente parar a execuo. Isso d ao seu cdigo a oportunidade de corrigir o erro dentro de um outro procedimento. Por exemplo, suponha que o procedimento A chame o procedimento B e que o procedimento B chame o procedimento C. Se ocorrer um erro no procedimento C e no houver uma rotina de tratamento de erros ativada, o Visual Basic verifica se existe no procedimento B e depois no procedimento A, uma rotina de tratamento de erros ativada. Se existir, a execuo passa para essa rotina de tratamento de erros. Se no existir, a execuo para e exibida uma mensagem de erro. O Visual Basic tambm procura retroativamente na lista de chamadas por uma rotina de tratamento de erros ativada, quando ocorre um erro dentro de uma rotina de tratamento de erros ativa. Pode-se forar o Visual Basic a fazer essa procura, gerando um erro dentro de uma rotina de tratamento de erros ativa com o mtodo Raise do objeto Err.. Se ocorrer um erro no previsto e voc gerar novamente esse erro dentro da rotina de tratamento de erros, a execuo passar retroativamente pela lista de chamadas para localizar uma outra rotina de tratamento de erros, que pode estar configurada para manipular o erro. Por exemplo, suponha que o procedimento C tem uma rotina de tratamento de erros ativada, mas essa rotina no corrige o erro que ocorreu. Aps verificar todos os erros que voc previu, a rotina de tratamento de erros poder gerar novamente o erro original. A execuo ento volta pela lista de chamadas para a rotina de tratamento de erros do procedimento B, caso exista, dando oportunidade para que essa rotina de tratamento de erros corrija o erro. Se no existir uma rotina de tratamento de erros no procedimento B, ou se ela no corrigir o erro e o gerar novamente, a execuo passar rotina de tratamento de erros do Procedimento A, supondo que exista uma. Para ilustrar esse conceito de uma outra maneira, suponha que voc tem um procedimento aninhado que inclui tratamento de erro para um erro de incompatibilidade de tipo, que voc previu. Em algum ponto, ocorre um erro de diviso por zero, que voc no previu, dentro do procedimento C. Se voc tiver includo uma instruo para gerar novamente o erro original, a execuo voltar pela lista de chamadas para uma outra rotina de tratamento de erros ativada, caso exista. Se voc corrigiu um erro de diviso por zero em outro procedimento da lista de chamadas, o erro ser corrigido. Se o seu cdigo no repetir o erro, ento o procedimento continuar a ser executado, 79

Microsoft Excel Curso Avanado

sem corrigir o erro de diviso por zero. Isso, por sua vez, poder causar outros erros dentro do conjunto de procedimentos aninhados. Em resumo, o Visual Basic procura na lista de chamadas por uma rotina de tratamento de erros ativada se: Ocorrer um erro em um procedimento que no inclui uma rotina de tratamento de erros ativada. Ocorrer um erro dentro de uma rotina de tratamento de erros ativa. Se voc utilizar o mtodo Raise do objeto Err para gerar um erro, voc poder forar o Visual Basic a procurar retroativamente na lista de chamadas por uma rotina de tratamento de erros ativada.

Obtendo informaes sobre um erro


Quando a execuo passa para a rotina de tratamento de erros, o seu cdigo precisa determinar o erro ocorrido e trat-lo. O Visual Basic e o Microsoft Excel oferecem vrios elementos de linguagem que pode-se utilizar para obter informaes sobre um erro especfico. Cada um serve para diferentes tipos de erros. Como os erros podem ocorrer em diferentes partes do seu aplicativo, voc precisar determinar qual utilizar no seu cdigo, com base nos erros que voc espera. Os elementos de linguagem disponveis para tratamento de erros incluem: objeto Err objeto Error e a coleo Errors mtodo AccessError evento Error

O objeto Err
Este objeto oferecido pelo Visual Basic. Quando ocorre um erro do Visual Basic, as informaes sobre esse erro so armazenadas no objeto Err. Este objeto mantm informaes sobre um nico erro de cada vez. Quando ocorre um novo erro, o objeto Err atualizado de forma a conter informaes sobre ele. Para obter informaes sobre um determinado erro, voc ode utilizar as propriedades e mtodos do objeto Err. A propriedade Number a propriedade padro; ela retorna o nmero de identificao do erro que ocorreu. A propriedade Description do objeto Err retorna a seqncia descritiva associada a um erro. O mtodo Clear limpa as atuais informaes de erro de objeto Err, enquanto o mtodo Raise gera um erro especfico e preenche as propriedades do objeto r com as informaes sobre esse erro. O exemplo a seguir mostra como utilizar o objeto Err em um procedimento que pode causar um erro de incompatibilidade de tipo: Function PodeCausarUmErro() Declara constante que representa o erro provvel Const conTipoIncompativel as Integer = 13 Ativa rotina de tratamento de erros On Error GoTo Error_PodeCausarUmErro Inclua aqui cdigo que possa gerar um erro ... Exit_PodeCausarUmErro: 80

Microsoft Excel Curso Avanado

Exit Function Erro_PodeCausarUmErro: If Err = comTipoIncompativel Then Inclua aqui cdigo para tratamento de erros. ... Else Gera novamente o erro original Dim intErrNum as Integer IntErrNum = Err Err.Clear Err.Raise intErrNum End If Continua execuo na rotina de sada para sair da funo Resume Exit_PodeCausarUmErro End Function Observe que no exemplo precedente o mtodo Raise utilizado para repetir o erro original. Se ocorrer um erro que no o de incompatibilidade de tipo a execuo passar pela lista de chamadas para uma outra rotina de tratamento de erros ativa, caso exista. O objeto Err lhe fornece todas as informaes necessrias a respeito de erros do Visual Basic. Entretanto ele no d informaes completas sobre erros do Microsoft Excel ou do mecanismo de banco de dados Microsoft Jet. O Microsoft Excel e os objetos de acesso a dados (DAO) fornecem elementos de linguagem adicionais para ajud-lo com estes erros.

O objeto Error e a coleo Errors


O objeto Error e a coleo Erros so fornecidos pelo DAO. O objeto Error representa um erro DAO. Uma nica operao DAO pode causar vrios erros, especialmente se voc estiver efetuando operaes ODBC. Cada erro que ocorre durante uma determinada operao de acesso a dados tem um objeto Error associado. Todos os objetos Erros associados a uma determinada operao DAO so armazenados na coleo Errors, sendo o erro de nvel inferior o primeiro objeto na coleo e o erro de nvel superior o ltimo objeto na coleo. Quando ocorre um erro DAO, o objeto Err do Visual Basic contm o nmero de erro do primeiro objeto da coleo Errors. Para determinar se ocorreram outros erros DAO, verifique a coleo Errors. Os valores das propriedades Number e Description do primeiro objeto Error da coleo Errors devem coincidir com os valores das propriedades Number e Description do objeto Err do Visual Basic.

O mtodo AccessError
Pode-se utilizar o mtodo do objeto Err para gerar um erro do Visual Basic que de fato no ocorreu e determinar a seqncia descritiva associada aquele erro. Entretanto, voc no pode utilizar o mtodo Raise para gerar um erro do Microsoft Excel ou um erro DAO. Para determinar a seqncia descritiva associada a um erro do Microsoft Excel ou a um erro DAO que de fato no ocorreu, utilize o mtodo AccessError.

O evento Error
Pode-se utilizar o evento Error para interceptar erros que ocorrem em um formulrio ou relatrio do Microsoft Excel. Por exemplo, se um usurio tentar digitar texto em um campo cujo tipo de dados Data/Hora, ocorrer o evento Error. Se voc adicionar um procedimento de evento Error a um formulrio Funcionrios, por exemplo, e tentar inserir um valor de texto no campo DataDeContratao, o procedimento de evento Error ser executado. 81

Microsoft Excel Curso Avanado

O procedimento de evento Error ocupa um argumento inteiro, o DataErr. Quando um procedimento de evento Error executado, o argumento DataErr contm o nmero do erro do Microsoft Excel que ocorreu. Verificar o valor do argumento DataErr dentro do procedimento de evento a nica maneira de se determinar o nmero que ocorreu. O objeto Err no preenchido com informaes quando o evento Error ocorre. Pode-se utilizar o valor do argumento DataErr juntamente com o mtodo AccessError para determinar o nmero do erro e sua seqncia descritiva. Observao: a instruo Error e a funo Error so oferecidos somente para fins de compatibilidade retroativa. Ao escrever um novo cdigo, utilize os objetos Err e Error, a funo AccessError e o evento Error para obter informaes sobre um erro.

Procedimentos automticos
Um procedimento automtico entra em execuo automaticamente sempre que ocorrer um evento de um conjunto especfico de eventos. Podemos associar procedimentos automticos com eventos em nvel de pasta de trabalho ou em nvel de planilha. No primeiro caso, os eventos automticos para pasta de trabalho so: Auto_Open: ocorre assim que o usurio abre a pasta Auto_Close: ocorre assim que a pasta fechar (logo antes da ao se completar) Para usar estes eventos automticos voc dever criar um procedimento e nome-lo com estes nomes, como no exemplo abaixo: Sub Auto_Open() Worksheets(1).Activate Range(A1).Select End Sub No segundo caso, quando desejamos trabalhar com eventos automticos em nvel de planilha, usamos os eventos: Auto_Activate: quando desejamos executar algum cdigo no instante em que uma planilha for ativada. Auto_Deactivate: idem quando ela for desativada.

82

Microsoft Excel Curso Avanado

Para saber mais


Internet
OfficeVBA (www.officevba.com): timo site sobre desenvolvimento em VBA, incluindo uma srie de arquivos tcnicos e tutoriais, alm de forum de discusso com outros desenvolvedores.

The Spreadsheet Page (www.j-walk.com/ss/index.html): Tudo sobre as mais diversas planilhas e com seo especial sobre o Microsoft Excel. Possui uma boa seo de links para diversos outros sites sobre o assunto.

Office Power (www.office-power.com/index.htm): Bom site sobre os aplicativos do Microsoft Office, contendo arquivos tcnicos sobre o Excel e VBA Microsoft Office Developer Web Forum (http://www.microsoft.com/exceldev/e-a&sa.htm): Site oficial da Microsoft para desenvolvedores na plataforma Office.

Microsoft Support Knowledge Base (http://search.support.microsoft.com/kb/c.asp): O tira-dvidas da Microsoft. Um grande banco de dados de informaes sobre todos os produtos da empresa. ASAP utilities (www.asap-utilities.com): Oferece um conjunto de utilitrios que agrega uma srie de novos comandos ao Excel

Livros
Microsoft Office 97 Visual Basic Programmers Guide: referncia sobre programao e customizao dos aplicativos do Microsoft Office. Existe uma verso disponvel online em http://www.microsoft.com/officedev/articles/Opg/toc/pgtoc.htm

83