Anda di halaman 1dari 89

INTRODUO AOS

CONCEITOS BSICOS E INTERMEDIRIOS


DE CRIAO DE FUNES
PERSONALIZADAS NO EXCEL

Robert Friedrick Martim

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel

Conhea outros trabalhos do autor no site

EXCEL Srie Como Fazer


Criando menus, barras de comando e botes personalizados no
Excel usando VBA

O autor descreve, de forma detalhada, como criar os diversos tipos de menus e barras de comandos
disponveis no Excel. Crie atalhos no teclado para acessar menu personalizado, FaceIDs personalizadas
para os aplicativos, menus de atalho com o boto direito do mouse e muito mais. Uma referncia que
no pode faltar aos usurios que desejam criar aplicaes profissionais com o Excel, definindo seus
prprios menus e barras de comandos, personalizadas. O mdulo acompanhado por 10 pastas de
trabalho desenvolvidas com vrios exemplos prticos, os quais ajudaro voc a entender e a
acompanhar os exemplos propostos no curso.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/excelvbamenus/default.asp

Formulrios no Excel Utilizando VBA:


Listbox e Combobox

O autor descreve, de forma detalhada, como manipular caixas de manipulao e caixas de listagem.
Neste curso o amigo leitor aprender, em detalhes, como:

1. Utilizar nomes dinmicos para preencher caixas de listagem e caixas de combinao.


2. Fazer referncia entre os dois controles e outros controles em um formulrio, a partir de
selees em uma caixa de combinao ou caixa de listagem.
3. Classificar itens em ordem crescente/decrescente. O leitor aprender a lgica por trs da
classificao utilizada no Excel. O leitor tambm aprender a criar funes para ordenar listas.
4. Adicionar itens nicos a partir de uma lista onde vrios itens se repetem.
5. Referenciar itens que pertencem a uma lista.
6. O leitor aprender a lgica por trs de listas de itens nicos e como criar funes para retornar
tais listas.
7. Passar itens entre caixas de listagem.
8. Mover itens dentro de uma caixa de listagem.
9. Conectar uma caixa de listagem ao Outlook e filtrar a lista de contatos.
10. Utilizar a lista de contatos filtrada para enviar e-mail utilizando um servidor SMTP virtual.
11. Conectar caixas de combinao a dados de uma tabela ou consulta do Access.
12. Filtrar, ler, escrever e apagar registros no Access, usando programao VBA no Excel.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/excelvbaforms/default.asp

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Frmulas no Excel:
Manipulando Datas e Horas

Dvidas sobre como fazer clculos com valores de horas no Excel?


Dvidas sobre como fazer clculos com valores de datas no Excel?
Procurando solues prticas, fceis de entender e adaptar para o seu uso?

Este mdulo aborda a manipulao de datas e horas no Excel. Voc ir entender exatamente como o
Excel armazena valores de datas e horas, aprender a criar frmulas e usar funes para clculos com
datas e horas. Alm do arquivo .PDF, voc tambm receber 13 planilhas, com os exemplos
utilizados no curso.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/exceldatashoras/default.asp

BRINDE: Na compra do CD-04 voc ganha um vdeo curso com 22 minutos de durao, o qual mostra,
passo a passo, como criar um controle do tipo calendrio(Calendar Control) no VBA.

Frmulas no Excel:
Fazendo Milagres com Frmulas Matriciais

Veja se voc se encaixa em um dos itens a seguir:

Dificuldades para fazer clculos complexos no Excel??


Chegou a um ponto em que acha que no tem soluo para alguns clculos no Excel??
Procurando solues prticas, fceis de entender e adaptar para o seu uso??

O autor descreve, de forma detalhada, como funcionam e como manipular frmulas matriciais no Excel.
Este mdulo trata sobre a manipulao e construo de frmulas matriciais, do ponto de vista prtico.
Os exemplos visam desenvolver a compreenso do leitor sobre como tais funes funcionam como elas
podem ser aplicadas na resoluo de problemas prticos. Uma referncia que no pode faltar ao leitor
que deseja entender como funcionam os clculos e manipulaes complexas de dados no Excel. O
mdulo acompanhado por 9 pastas de trabalho (em um total de 22 planilhas), as quais
apresentam inmeros exemplos prticos.

Alm disso, o leitor poder adquirir um curso em vdeo, com mais de 2 horas de durao, o qual
fornece uma srie de outros exemplos.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/excelmatric/default.asp

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel

Frmulas no Excel:
Fazendo Milagres com Frmulas Matriciais (Vdeo Curso)

Este novo curso introduz a interatividade do vdeo para ensinar sobre frmulas e funes matriciais no
Excel e VBA. Voc aprender atravs das explicaes e visualizao como as frmulas so entradas e
manipuladas. Aprenda atravs de aulas em vdeo, interativas, de fcil acompanhamento.

Este vdeo a companhia perfeita para quem j comprou o curso "Frmulas e Funes Matriciais no
Excel", no formato .PDF. Embora ambos abranjam o mesmo assunto, aspectos diferentes, assim como
exemplos diferentes, so tratados e mostrados no vdeo. Ou seja, no vdeo voc ter diversos exemplos
novos, no presentes no curso em .PDF.

Combinando o material escrito no curso .PDF com o vdeo o aluno ter uma referncia completa sobre
frmulas matriciais no Excel... Alm disso, o leitor descobrir que nem sempre o Ajuda do Excel de
"grande ajuda". Principalmente, quando ele informa a maneira incorreta para se manipular matrizes
constantes.

IMPORTANTE: Este curso est disponvel somente para envio em CD, pelos Correios. Devido ao
tamanho dos arquivos de vdeo - quase 400 MB, fica invivel disponibiliz-los via download ou via e-
mail.

Para voc que gosta de cursos interativos, com vdeo e som, esta sem dvidas uma excelente opo.
Este apenas o primeiro de uma srie de cursos que sero disponibilizados no formato de vdeo-aulas.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/videocursos/excelmatric/default.asp

Frmulas no Excel:
Funes de Procura e Referncia

Veja se voc se encaixa em um dos itens a seguir:

Dificuldades para usar as funes PROCV e PROCH??


Dificuldades para utilizar as funes de pesquisa do Excel??
Procurando solues prticas, fceis de entender e adaptar para o seu uso??

Uma referncia completa que no pode faltar a todos os usurios que tm a necessidade de trabalhar
com frmulas e funes de pesquisa no Excel.

Neste novo curso o autor descreve, de forma detalhada, como funcionam e como utilizar as funes e
frmulas para pesquisa e validao de dados no Excel. Este mdulo trata sobre a manipulao e criao
de frmulas de procura e referncia do ponto de vista prtico. CHEGA DE DVIDAS SOBRE COMO
USAR AS FUNES PROCV E PROCH, DENTRE OUTRAS.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/excelproc/default.asp

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Guia avanado do Registro do Excel

O autor descreve de forma detalhada, como manipular o registro do Excel. Este mdulo mostra como
modificar a Registry do Excel (Windows) de forma a personalizar dezenas de aspectos do Excel, tais
como: nmero de aes que podem ser desfeitas, modelos de grfico padro, gerenciamento de
abertura de arquivos, segurana de macros, segurana de Internet, etc.

O autor utiliza uma linguagem extremamente didtica, de fcil compreenso. O curso todo
baseado em exemplos prticos, detalhadamente explicados.

DEZENAS DE EXEMPLOS PRTICOS E TEIS DE CONFIGURAES DO EXCEL, USANDO A


REGISTRY:

ENTENDA COMO FUNCIONA A REGISTRY


SAIBA COMO CONFIGURAR O EXCEL USANDO A REGISTRY
APRENDA A MODIFICAR DEZENAS DE OPES DO EXCEL
CONFIGURAES NO-DOCUMENTADAS NA AJUDA DO EXCEL
APRENDA A ALTERAR O TIPO DE GRFICO PADRO
ALTERE AS OPES PADRO DE FONTE
APRENDA A REMOVER LINHAS DE GRADE
APRENDA A MODIFICAR AS CONFIGURAES DE AUTO-RECUPERAO
DEZENAS DE OUTRAS CONFIGURAES

Voc no vai acreditar nas configuraes que podem ser feitas no Excel usando a Registry do
Windows.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/excelregistry/default.asp

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel

WORD Srie Como Fazer


Criando menus, barras de comando e botes personalizados
no MS Word usando VBA

Veja se voc se encaixa em um dos itens a seguir:

Dificuldades em entender como funcionam os menus e barras de ferramentas no Word??


No sabe como personalizar os menus e barras de ferramentas do Word??
No sabe como criar novos menus e novas barras de ferramentas no Word?

Ento, sem dvidas, este curso foi feito sob encomenda para voc. Chega de dvidas, hora
de dominar os MENUS e BARRAS DE FERRAMENTAS no Word.

O autor descreve, de forma detalhada, como manipular barras de comandos, menus e botes de
comandos no Word. Este curso trata sobre a manipulao destas ferramentas no Word e como elas
podem ser utilizadas para personalizar o desenvolvimento de aplicativos no Word. Este curso segue a
linha do curso equivalente no Excel: Criando Menus Personalizados no Excel, porm, a abordagem,
contedo e exemplos so totalmente diferentes, tornando o curso no Word e no Excel complementares,
quando o assunto desenvolvimento no Office. Se voc j possui o curso sobre menus no Excel, este
curso de menus no Word o complemento ideal para uma referncia ainda mais completa sobre como
manipular estes objetos entre os aplicativos Office.

APENAS: R$ 10,00
Para compr-lo, visite http://www.juliobattisti.com.br/cursos/wordmenus/default.asp

ACCESS Srie Como Fazer


Criando menus, barras de comando e botes personalizados
no MS Access usando VBA

O autor descreve, de forma detalhada, como criar os diversos tipos de menus e barras de comandos
disponveis no Microsoft Access. Este mdulo, visa a criao de atalhos no teclado para acessar menu
personalizado, FaceIDs personalizadas para os aplicativos, menus de atalho com o boto direito do
mouse e muito mais. Uma referncia que no pode faltar s pessoas que esto srias quando o assunto
menu personalizado no MS Access. O mdulo acompanhado por 14 bancos de dados e uma
pasta de trabalho do Excel como recurso externo.

O que um menu
O que uma barra de comando
Como menus e barras de comando so criadas no Access
Como remover os menus personalizados
Removendo menus manualmente
Removendo menus via cdigo
Posicionando os objetos
Executando aes e atalhos de teclado
Utilizando os FaceIDs do Office no Access
Faces personalizadas
Criando popups de atalho
Adicionando um controle a um menu de atalho popup j existente
Menus Combobox
Automatizando a criao de menus
Substituindo menu principal do Access pelo seu menu personalizado
Listando os menus e sub-menus do Access
Listando somente as barras de comando/ferramentas em um arquivo texto
Listando as barras de comando/ferramentas e sub-menus no Access

APENAS: R$ 10,00
Para compr-lo, visite http://www.juliobattisti.com.br/cursos/accessmenus/default.asp
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
MATEMTICA E ESTATSTICA Srie Como Fazer
Introduo a Matemtica Financeira

Este curso um curso terico sobre Matemtica Financeira. O curso apresenta desde uma reviso dos
elementos bsicos da Matemtica, passando pelos elementos bsicos da Matemtica Financeira, tais
como: juros simples, juros compostos, valor presente, valor futuro, fluxo de caixa, capitalizao, etc.

O autor utiliza uma linguagem extremamente didtica, de fcil compreenso. O curso todo
baseado em exemplos prticos, detalhadamente explicados.

MAIS DE 250 EXERCCIOS RESOLVIDOS, OS QUAIS COBREM DIVERSAS SITUAES


PRTICAS ENCONTRADAS NO SEU DIA-A-DIA, TAIS COMO:

CLCULOS DE EMPRSTIMOS
CLCULOS DE FINANCIAMENTOS
CLCULOS DE PRESTAES DO AUTOMVEL
CLCULOS DE PRESTAES DA CASA PRPRIA
CLCULOS PARA FUNDOS DE APOSENTADORIA
CLCULOS PARA FINANCIAMENTO DE CARTO DE CRDITO
DEZENAS DE OUTROS EXEMPLOS PRTICOS

Para cada captulo, h uma breve introduo aos conceitos tericos da Matemtica Financeira, e logo a
seguir so apresentados exemplos prticos, detalhadamente explicados, resolvidos passo-a-passo. No
so apresentadas longas discusses tericas, pois este no o foco do curso. O foco apresentar o
conceito e coloc-lo em prtica logo em seguida, para que o leitor possa ver como o funcionamento
dos clculos.

MESMO QUE VOC NO SEJA "MUITO AMIGO DA MATEMTICA", COM ESTE CURSO VOC
VER COMO FCIL APRENDER MATEMTICA FINANCEIRA.

APENAS: R$ 10,00

Para compr-lo, visite http://www.juliobattisti.com.br/cursos/intmatfin/default.asp

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel i

Nota sobre direitos autorais


Este eBook de autoria de Robert F Martim, sendo comercializado atravs do site
www.juliobattisti.com.br ou atravs do site de leiles Mercado Livre:
www.mercadolivre.com.br.

Ao adquirir este eBook voc tem o direito de l-lo na tela do seu computador e de imprimir
quantas cpias desejar, desde que sejam para uso pessoal. vetada a distribuio deste eBook,
mediante cpia ou qualquer outro meio de reproduo, para outras pessoas. Se voc recebeu
este eBook atravs de e-mail ou via FTP de algum site da Internet, ou atravs de CD de Revista,
saiba que voc est com uma cpia pirata, no autorizada. Se for este o seu caso entre em
contato com o autor atravs do e-mail rm@earnconsultoria.com.br ou comunique
diretamente ao nosso site atravs do e-mail webmaster@juliobattisti.com.br.

Ao regularizar a sua cpia, voc estar remunerando, mediante uma pequena quantia, o trabalho
do autor e incentivando que novos trabalhos sejam disponibilizados.

Visite periodicamente o site www.juliobattisti.com.br para ficar por dentro das novidades!

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
ii Introduo aos conceitos de criao de funes no Excel

Pr-requisitos
Para completar este curso necessrio um conhecimento prvio do ambiente de trabalho do VBE.

Este mdulo visa a introduo aos conceitos bsicos e intermedirios da criao de funes no
Excel. No decorrer do curso introduzirei conceitos de loops, depurao, descrio de macros, etc.
Exemplos prticos so apresentados e exerccios sugeridos no final do curso para preparar o
leitor para o desenvolvimento de funes personalizadas.

Se voc no possui nenhum conhecimento de do ambiente do Visual Basic Editor (VBE) e de


Visual Basic for Application (VBA) recomendvel que voc inicie pelo curso bsico de Excel que
pode ser encontrado em http://www.juliobattisti.com.br/cursos/excelbasico/default.asp.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel iii

Objetivos deste eBook


Este eBook foi dividido em mdulos que vo da abordagem dos assuntos bsicos e intermedirios
at o avanado de criao de funes utilizando o VBA.

O trabalho foi desenvolvido a partir da demanda dos usurios do site www.juliobattisti.com.br. O


material procura analisar questes pertinentes ao seu dia-a-dia.

Este curso assume que voc tem conhecimento e domnio dos assuntos bsicos e intermedirios
no que diz respeito ao ambiente de trabalho VBE e de VBA. Se este no o seu caso, voc pode
adquirir o curso de introduo em http://www.juliobattisti.com.br/cursos/excelbasico/default.asp.

Os cursos so divididos em partes para que o leitor possa adquirir somente as partes onde h
uma deficincia de conhecimento. Desta forma o contedo se torna mais relevante e o leitor no
precisa obter material sobre o qual ele j tem domnio.

A linguagem utilizada descontrada e com o mnimo de jargo possvel. O objetivo ter um


eBook com contedo relevante e de fcil compreenso.

Qualquer dvida referente a este mdulo podem ser enviadas para o autor.

Todo esforo foi feito para assegurar que este eBook est livre de erros. Porm, no improvvel
caso do leitor encontrar qualquer erro, por favor, envie seus comentrios e/ou sugestes
diretamente para o autor no endereo rm@earnconsultoria.com.br.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
iv Introduo aos conceitos de criao de funes no Excel

NDICE ANALTICO

INTRODUO...................................................................................................................................1
Bem-vindo .............................................................................................................................1
Antes de continuar....................................................................................................................1

1. COMPREENDENDO O BSICO..............................................................................................2
1.1. Se sub-rotinas retornam valores, por que criar uma funo para retornar
valores? ......................................................................................................................2
1.2. Quais os tipos de funes que posso escrever? ........................................................3
1.2.1. Private Function..........................................................................................................3
1.2.2. Public Function ...........................................................................................................5
1.2.3. Static Function ............................................................................................................6
1.3. Onde devo colocar minhas funes? .........................................................................8
1.4. Quais os tipos de valores retornados por uma funo? .............................................9
1.5. Decimais ...................................................................................................................10

2. COMPREENDENDO OS LOOPS .......................................................................................12


2.1. For Next ...............................................................................................................12
2.2. For Each ... In ... Next...............................................................................................13
2.3. Do Until ... Loop ........................................................................................................14
2.4. Do While ... Loop ......................................................................................................15
2.5. Aninhando Loops (Loops em multiplas camadas) ....................................................16
2.6. Loops em degrau (Stepped Loops) ..........................................................................18
2.7. Saindo do loop instruo Exit ................................................................................20

3. DEBUG DE FUNES...........................................................................................................22
3.1. Debug.Print...............................................................................................................22
3.2. MsgBox.....................................................................................................................23
3.3. Pontos de interrrupo .............................................................................................24

4. DEFININDO AS OPES DAS FUNES ...........................................................................26


4.1. Definindo as informaes da funo ........................................................................26
4.2. Adicionando a funo a uma categoria ....................................................................31

5. DEFININDO OS ARGUMENTOS DE SUAS FUNES........................................................34


5.1. Funes sem argumentos ........................................................................................34
5.2. Funes com um ou mais argumentos.....................................................................36
5.3. Funes com argumento opcional............................................................................38
5.4. Funes nmero indefinido de argumentos .............................................................41

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel v

6. CHECANDO A VALIDADE DOS ARGUMENTOS.................................................................47


6.1. Separando valores numricos ..................................................................................47
6.2. Separando valores vazios ........................................................................................48
6.3. Separando valores numricos e vazios simultaneamente .......................................50

7. CRIANDO MINHA PRIMEIRA FUNO................................................................................52


7.1. Funes do tipo Boolean ..........................................................................................52
7.1.1. Comparando valores ................................................................................................52
7.1.2. Definindo se um dado est presente em um conjunto de dados..............................53
7.1.3. Determinando se um texto est acima do limite de caracteres permitidos...............53
7.2. Funes do tipo Double, long, single e Integer ........................................................54
7.2.1. Calculando o movimento percentual ........................................................................54
7.2.2. Calcular o nmero de clulas com determinado nmero de cores de fundo............55
7.2.3. Determinando a cor de fundo ...................................................................................55
7.3. Funes do tipo string ..............................................................................................56
7.3.1. Retornando o nome da cor de fundo da clula selecionada ....................................56
7.3.2. Determinado o nome do objeto pai...........................................................................57
7.4. Outros tipos ..............................................................................................................58
7.4.1. Adicionando dias teis a uma data qualquer............................................................58
7.4.2. Determinando o nmero da semana dentro de um ms ..........................................60

8. DESENVOLVENDO FUNES MAIS AVANADAS ...........................................................61


8.1. Funes do tipo Boolean ..........................................................................................61
8.1.1. Verificando se uma data vlida..............................................................................61
8.1.2. Determinando se uma barra de comando est travada ...........................................62
8.1.3. Determinando se o nmero de um carto de crdito vlido ..................................62
8.2. Funes do tipo Double............................................................................................64
8.2.1. Calculando a rea, permetro e diagonal de um quadrado. .....................................64
8.2.2. Calculando a rea de um quadrado com uma funo de seu lado, permetro
ou diagonal. ..............................................................................................................65
8.3. Funes do tipo string ..............................................................................................66
8.3.1. Extraindo um elemento dentro de um texto qualquer...............................................66
8.3.2. Extraindo um elemento dentro de um texto qualquer atravs de uma matriz ..........67
8.4. Outros tipos ..............................................................................................................69
8.4.1. Adicionando dias teis a uma data qualquer contabilizando os feriados .................69

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
vi Introduo aos conceitos de criao de funes no Excel

9. EXERCCIOS PARA DESENVOLVIMENTO DE FUNES .................................................72


9.1. Funes do tipo Boolean ..........................................................................................72
9.2. Funes do tipo Double............................................................................................73
9.3. Funes do tipo string ..............................................................................................73
9.4. Outros tipos ..............................................................................................................73

10. SOBRE O AUTOR..................................................................................................................75

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 1

Introduo aos conceitos de criao de funes no Excel


por Robert Friedrick Martim

INTRODUO

BEM-VINDO

Nas sries que sero escritas, cobrirei aspectos distintos do processo de criao de funes
personalizadas no Excel. A inteno principal fornecer ao internauta uma ferramenta que
concentre a ateno na soluo de um problema especfico.

Neste mdulo veremos como utilizar o VBA e suas ferramentas para personalizar funes.

ANTES DE CONTINUAR

O trabalho foi desenvolvido com um objetivo prtico em mente e assume que voc tem domnio dos
pontos bsicos do ambiente VBE. O objetivo no martelar o leitor com conceitos que ele j tenha
domnio. O objetivo mostrar como criar funes que possam ser utilizadas no seu dia-a-dia para
facilitar o seu trabalho.

No existe um pr-requisito per se para completar este curso; porm, o leitor deve estar ciente de
que com o conhecimento bsico em dia, o aproveitamento do material ser muito melhor. Sem o
devido conhecimento de algumas partes bsicas, este mdulo se tornar mais laborioso e difcil do
que realmente .

Sugestes sero sempre bem-vindas e esperamos que o leitor participe pro-ativamente no


desenvolvimento do material aqui apresentado.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
2 Introduo aos conceitos de criao de funes no Excel

1. COMPREENDENDO O BSICO
Antes de continuar necessrio que voc compreenda algumas diferenas bsicas entre funes e
sub-rotinas. Embora sub-rotinas possam efetuar clculos como os efetuados em uma funo,
funes no podem manipular propriedade de objetos como fazemos em sub-rotinas.

O que voc deve sempre ter em mente quando o assunto funes diz respeito ao escopo das
funes. Funes so utilizadas para retornar valores. O tipo de valor retornado pode variar, por
exemplo, a funo pode retornar um valor varivel (variant) ou um valor booleano (boolean). Mas
independente do valor retornado, voc deve lembrar que sempre ser retornado um valor.

O que vejo muitas vezes so pessoas tentando usar uma funo para modificar a propriedade de
uma clula (e o autor que lhe escreve tambm j fez isso, ento, no se preocupe se voc tambm
j tentou e no obteve sucesso). s vezes, fazemos um clculo comparativo e se o resultado for 1 a
clula deve ser pintada de preto e se for zero a clula deve ser pintada de vermelho. O clculo pode
ser feito pela funo, mas a funo ser incapaz de modificar a cor da clula.

Uma forma de compreender o que voc est lendo e lembrar das funes internas do Excel. Voc
alguma vez usou uma funo do Excel para mudar a cor de fundo de uma clula? Com certeza,
nunca! Voc pode at ter utilizado a formatao condicional, contudo, a formatao condicional
utiliza frmulas com funes, mas no a funo que colore a clula. O que colore a clula a
rotina que avalia o resultado.

1.1. SE SUB-ROTINAS RETORNAM VALORES, POR QUE CRIAR UMA FUNO PARA RETORNAR VALORES?

Esta um pergunta que a experincia lhe dar a melhor resposta. No obstante, tentarei mostrar os
principais motivos por trs da criao de funes ao invs de efetuar os clculos em uma sub-rotina.

Imagine uma situao onde voc deseja saber se algo verdadeiro ou falso. Se algo verdadeiro
ou falso o resultado booleano e estamos falando de uma funo Boolean. Agora, pense na
situao onde voc precisa avaliar diversas situaes booleanas no mesmo contexto.

Se voc efetuar o teste booleano dentro de uma sub-rotina que faz outras coisas, voc teria que
chamar tal sub-rotina a partir de outra sub-rotina que tambm utiliza o valor booleano. Se voc fizer
isso, todo o procedimento da sub-rotina ser executado.

Desta forma, a soluo seria criar a rotina de comparao dentro da outra sub-rotina, duplicando os
esforos. Agora, coloque a rotina de comparao booleana em uma funo. A funo faz a
comparao e retorna apenas o resultado, ela no faz mais nada alm disso.
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 3

Neste ponto, voc deve ter notado que a soluo realmente uma funo, pois ela pode ser
reutilizada por todas as sub-rotinas e at mesmo por outras funes, sem transformar o seu cdigo
em uma verdadeira farofa mista, onde nem voc sabe quais so os ingredientes.

Uma outra vantagem de se criar funes que elas podem ser utilizadas em suas planilhas,
tambm! Assim como as funes SOMA, SOMASE, etc, so utilizadas na planilha para efetuar
clculos, voc pode utilizar a sua prpria funo na planilha para efetuar clculos.

Esta talvez seja uma das grandes vantagens, pois voc tem a flexibilidade converter mega-frmulas
em uma funo que efetua todos os clculos internamente e retorna o valor desejado na clula onde
a frmula anterior se encontrava. Os exemplos clssicos so clculos de IR e comisso.

Como o clculo de IR envolve faixas salariais, voc teria que inserir vrias vezes a funo SE para
avaliar cada situao e retornar o IR corretamente. Com uma funo de clculo de IR, tudo que voc
precisa fazer inserir o salrio, nmero de dependentes e se a pessoa paga ou no penso. Alm
das faixas salariais, voc ter agravantes como clculos do INSS, dependentes, etc. Todos estes
clculos so efetuados internamente sem a necessidade de uma mega frmula na clula.

Se os ltimos pargrafos no foram suficientes para convenc-lo que funes devem ser criadas ao
invs de fazer tudo em uma sub-rotina, relaxe e continue a ler. Ao comear a desvendar as
maravilhas das funes, voc ver e apreciar a real beleza das funes personalizadas.

1.2. QUAIS OS TIPOS DE FUNES QUE POSSO ESCREVER?

Ao criar funes personalizadas, voc precisa estar ciente dos trs tipos de funes possveis. Voc
poder criar funes Private, Public ou Static; contudo, cada uma tem um escopo diferente e o
acesso a tais funes ser dependente deste escopo.

1.2.1. Private Function

Private Function indica que a funo criada privada, em outras palavras, ela somente poder ser
acessada a partir do objeto que contm a funo. Supondo que voc insira a sua funo em um
mdulo chamado Mdulo1 e no mesmo projeto exista um outro mdulo chamado Mdulo2, as
funes criadas dentro do Mdulo1 e declaradas como Private sero de uso exclusivo do Mdulo1.

Caso voc tente acessar uma funo cujo escopo privado, voc obter o seguinte erro:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
4 Introduo aos conceitos de criao de funes no Excel

Figura 1-1

Se voc alguma vez obteve este erro e ficou sem saber o seu significado, ele indica que a funo ou
sub-rotina chamada no pode ser acessada. Observe que o erro diz que a sub-rotina ou funo no
foram definidas. Contudo, a funo ou sub-rotina pode ter sido definida, mas o seu escopo no
permite acesso por uma rotina ou funo externa.

Observe a figura:

Figura 1-2

O projeto VBA contm dois mdulos. O mdulo ativo o Mdulo1. Ele possui uma funo que
retorna um nmero aleatrio multiplicado por 10. No mesmo mdulo h uma sub-rotina que chama a
funo e mostra o resultado em uma caixa de mensagem (MsgBox):

Figura 1-3

No Mdulo2 tambm h um procedimento para chamar a funo; contudo, como a rotina est fora
do mdulo que contm a funo e a funo tem um escopo privado o acesso negado e um erro
retornado:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 5

Figura 1-4

Como voc pode observar o VBA no somente retorna o erro como mostra o local onde o erro
ocorreu. Isso importante, pois voc poder rapidamente isolar o problema e resolv-lo. Se voc
sabe que a funo existe em seu projeto, mas obtm a mensagem acima a primeira coisa a fazer e
verificar o escopo da funo.

Finalmente, uma funo Private no ser mostrada na caixa de insero de funes do Excel.

1.2.2. Public Function

Public Function indica que a funo criada pblica, em outras palavras, ela poder ser acessada
a partir de qualquer objeto dentro de seu projeto e no somente do objeto contenedor da funo.
Supondo que voc insira a sua funo em um mdulo chamado Mdulo1 e no mesmo projeto
existe um outro mdulo chamado Mdulo2, se a funo for declarada como Public voc poder
cham-la de qualquer local no seu projeto.

Observe o exemplo:

Figura 1-5

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
6 Introduo aos conceitos de criao de funes no Excel

O Mdulo1 continua a ter a funo que gera o nmero aleatrio multiplicado por 10. Na figura acima,
a funo chamada assim que a pasta de trabalho aberta e uma caixa de mensagem mostrada
com o nmero aleatrio gerado:

Figura 1-6

1.2.3. Static Function

Static Function indica que a funo criada esttica, em outras palavras, as variveis contidas na
funo mantero o valor original entre as diversas chamadas da funo at que as variveis sejam
reiniciadas.

No obstante, se voc tentar aplicar a funo esttica a um valor aleatrio, obviamente que o valor
deixar de ser esttico. Isso ocorrer por um simples motivo: a sua funo esttica, mas a funo
rnd no . Como o resultado da funo dependente da gerao de nmeros aleatrios atravs da
funo rnd torne-se claro que a varivel esttica da funo perde valor.

Mas e se voc deseja gerar um nmero aleatrio na primeira chamada da rotina e manter este
nmero fixo para as prximas chamadas? E para cada chamada subseqente adicionar um nmero
inteiro aleatrio ao valor da primeira chamada e assim sucessivamente?

Aqui, voc precisa manter em mente a palavra Static (esttico). J sabemos que a funo rnd gera
um novo nmero cada vez que ela chamada. O segredo do sucesso passar o resultado da
funo rnd para uma varivel esttica a qual ser reutilizada toda vez que a funo for chamada.
Por exemplo:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 7

Cdigo 1-1

A figura acima mostra como isso pode ser feito. Adicionamos a varivel nm e checamos se ela
est vazia quando a funo ativada. Se ela estiver vazia; ento, um nmero aleatrio gerado
para ela.

Nas chamadas subseqentes, a varivel no mais estar vazia e desta vez um novo nmero
aleatrio gerado. Uma caixa de mensagem inserida na funo mostra o valor anterior da varivel
esttica nm e do novo nmero aleatrio gerado. O resultado da funo o somatrio da varivel
esttica e o novo nmero:

Figura 1-7

A figura acima mostra a primeira chamada da funo. Ao acionar a funo uma segunda vez:

Figura 1-8

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
8 Introduo aos conceitos de criao de funes no Excel

O valor da primeira chamada no muda entre uma chamada e outra. Geramos um novo nmero
aleatrio que , ento, somado ao valor anterior e mostrado na caixa de mensagem da rotina:

Figura 1-9

Ao chamar a rotina uma terceira vez:

Figura 1-10

O valor da varivel esttica nm permanece exatamente o mesmo. Um novo nmero aleatrio


gerado e somado a ela.

1.3. ONDE DEVO COLOCAR MINHAS FUNES?

Onde voc insere suas funo determina o escopo privado ou pblico de sua funo. Nos exemplos
anteriores as funes so todas colocadas em um mdulo; porm, voc no obrigado a inserir
suas funes em mdulos. Voc pode inserir suas funes em um formulrio, na pasta de trabalho,
em um mdulo, classe ou planilha.

O importante voc lembrar e compreender o que ocorre quando a sua funo inserida em um
destes objetos.

Uma funo ser sempre pblica se voc a inserir em um mdulo. Ao inserir uma funo em um
mdulo voc no precisa declarar a funo como Public, pois todos os outros objetos tero acesso
a ela desde que ela no seja explicitamente declarada como Private.

A histria pode ficar confusa para funes pblicas quando elas so adicionadas em objetos como
planilhas, formulrios e pasta de trabalho.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 9

O escopo destes objetos privado, portanto, qualquer funo inserida em um destes objetos
automaticamente classificada como privada. A pergunta que fica no ar : - Se as funes so
privadas, por que eu iria querer declarar uma funo como Private ou Public dentro destes
objetos?

A verdade que voc no querer. Como funo privadas tm precedncia sobre funes pblicas,
imagine a situao onde a pasta de trabalho possui uma funo (implicitamente privada) com o
mesmo nome que uma funo em um mdulo. O que voc acha que acontecer? Absolutamente
nada. Ao chamar a funo de dentro do objeto contenedor, a funo que a ser executada ser a
funo contida no mesmo objeto e no a funo pblica no mdulo. No haver erro de
ambigidade no nome da funo.

Os objetos que compem o seu projeto tero os seguintes escopos:

Planilha funes so automaticamente consideradas Private. Declarar uma funo como


Public no modificar o escopo de acesso.

Pasta de trabalho funes so automaticamente consideradas Private. Declarar uma


funo como Public no modificar o escopo de acesso.

Formulrio funes so automaticamente consideradas Private. Declarar uma funo


como Public no modificar o escopo de acesso.

Mdulo funes so automaticamente consideradas Public. Declarar uma funo como


Private modificar o escopo de acesso.

Classe funes so automaticamente consideradas Public. Declarar uma funo como


Private modificar o escopo de acesso.

1.4. QUAIS OS TIPOS DE VALORES RETORNADOS POR UMA FUNO?

Funes so utilizadas para retornar valores e mais nada. Portanto, importante que voc conhea
e experimente com os diversos tipos disponveis no VBA.

Uma questo chave sobre o quo eficiente ser sua funo depende exatamente de conhecimento
dos tipos possveis. Neste mdulo, estarei discutindo os tipos bsicos e deixarei de fora o tipo
variant. Este tipo requer um conhecimento mais avanado de funes e o abordarei no mdulo de
criao de funes avanadas onde mostrei como manipular funes com diversas dimenses.
Aqui, apenas apresentarei uma introduo geral ao conceito e alguns exemplos.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
10 Introduo aos conceitos de criao de funes no Excel

Alguns dos tipos abordados so:

Boolean o tipo Boolean retorna um valor verdadeiro ou falso. Ao converter valores


numricos para valores booleanos o valor 0 (zero) assume um valor falso e todos os outros
valores assumem um valor verdadeiro. Se voc converter um valor booleano para um outro
tipo de dado qualquer, o valor falso convertido como 0 (zero) e o valor verdadeiro
convertido para -1 (menos 1).

Byte o tipo Byte retorna um valor compreendido entre 0 e 255 (256 valores)

Double o tipo Double (Duplo) retorna um nmero duplo compreendido entre -


1,79769313486231E308 a -4,94065645841247E-324 para valores negativos e
4,94065645841247E-324 a 1,79769313486232E308 para valores positivos.

Integer o tipo Integer (inteiro) retorna um nmero inteiro e estar compreendido entre os
nmeros -32.768 a 32.767.

Long o tipo Long (longo) retorna um nmero longo inteiro compreendido entre -
2.147.483.648 a 2.147.483.647.

Single o tipo Single (simples) retorna um nmero simples compreendido entre -


3,402823E38 a -1,401298E-45 para valores negativos e 1,401298E-45 a 3,402823E38 para
valores positivos.

String o tipo String retorna ou manipula texto.

Ao criar uma funo voc precisa observar o tipo de dado, pois se o valor retornado pela funo
extrapola o escopo do tipo de dado haver um estouro na varivel.

1.5. DECIMAIS

A questo dos decimais pode gerar confuso para usurios de pases que utilizam a vrgula como
separador decimal. Em pases de lngua inglesa, o separador de decimal geralmente o ponto, em
outras palavras o nmero 2450,25 ser representado por 2450.25 no VBA.

Se o milhar separado por ponto no sistema brasileiro, ele ser separado por vrgula no sistema
americano.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 11

Porm, voc no deve utilizar vrgula para separar nmeros no VBA, pois a vrgula utilizada para
separar argumentos. Observe a figura:

Figura 1-11

Ao inserir a vrgula como separador de decimal, voc requisitado a inserir o prximo argumento da
funo MsgBox.

Ao criar funes voc no precisa separar o milhar, somente necessrio separar o decimal. Mas
lembre-se sempre que o decimal sempre separado com ponto no VBA.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
12 Introduo aos conceitos de criao de funes no Excel

2. COMPREENDENDO OS LOOPS
Ao criar funes, muitas vezes precisaremos avaliar vrios itens em um conjunto de dados. Para
fazer isso utilizamos um loop para varrer todos os dados do conjunto. O tipo de loop utilizado
determinar o resultado obtido; portanto, importante que voc experimente com os diversos
loops e se familiarize com eles.

A seguir, apresento os loops que utilizaremos e como eles funcionam.

2.1. FOR NEXT

O loop For i = NmeroInicial To NmeroFinal Next i utilizado para varrer um conjunto de dados
unidirecional. Os dados sendo varridos podem estar na vertical, horizontal ou diagonal, no importa,
mas o loop no varrer todas as direes. Ele mover em uma direo apenas.

A varivel i pode ser modificada para qualquer varivel que voc desejar (j, k, h, p, etc). A varivel
declarada como i, pois ela representa um valor inteiro (integer). A letra i foi retirada da palavra
integer para representar um loop atravs de uma varivel cujo tipo de dado integer.

Figura 2-1

A figura acima mostra um conjunto de nove valores contidos na intervalo B1:B9. Voc poderia criar o
seguinte loop para varrer os dados na coluna B utilizando For Next:

Cdigo 2-1

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 13

Esta funo no recebe nenhum argumento e assume todos os valores esto no intervalo B1:B9.
Cada vez que o loop executado a soma anterior adicionada o valor contido na clula B & i. Se i
for igual a 7, o valor retornado o da clula B & i ou B7.

No necessrio declarar explicitamente que o prximo i (Next i) seja avaliado. Se voc digitar
apenas Next, o loop ocorrer da mesma forma.

2.2. FOR EACH ... IN ... NEXT

O loop For Each ... In... Next possui uma enorme vantagem sobre o For i, pois ele faz um loop em
todos os valores contidos no conjunto de dados e, portanto, varrer em todas as direes ao passo
que For i varre somente unidirecionalmente.

Figura 2-2

Na figura acima, a funo minhaSoma() recebe os argumentos do intervalor B1:C9, contudo, ela
retorna apenas a soma dos valores em B1:B9. Veja como est o cdigo:

Cdigo 2-2

Aqui, ignorada a segunda coluna do conjunto de dados. Como no possvel definir as duas
dimenses simultaneamente, voc precisa avaliar a coluna 1 e a coluna 2 no seu loop. Uma soluo
melhor utilizar For Each ... in ... Next:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
14 Introduo aos conceitos de criao de funes no Excel

Figura 2-3

Com este loop no precisamos nos preocupar com o nmero de colunas ou linhas do intervalo, pois
o loop sera feito para cada valor contido no intervalo selecionado:

Cdigo 2-3

O loop ocorre para cada valor no conjunto de valores. Cada valor somado em nossa funo.

2.3. DO UNTIL ... LOOP

Do Until ... Loop executar o loop at que o critrio definido na funo seja encontrado. Enquanto
que o loop pode parecer uma boa idia, voc precisa se atentar para a possibilidade de entrar em
um loop infinito.

Suponha que a inteno do loop seja a convergncia para um valor qualquer. Se o loop baseado
em valores aleatrios que so comparados com o valor buscado, voc pode passar o resto de sua
vida buscando por tal nmero, pois o universo de nmeros aleatrios infinito. Portanto, a
probabilidade de voc encontrar o nmero que deseja a partir de sorteios aleatrios zero no limite.

O cdigo a seguir gerar um loop eterno:

Cdigo 2-4
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 15

Se voc deseja avaliar cada valor contido no conjunto de valores utilizando Do Until ... Loop, uma
soluo seria:

Cdigo 2-5

Embora ele resolva o problema para o exemplo, o cdigo completamente ineficiente se comparado
com o do sub-tpico anterior.

2.4. DO WHILE ... LOOP

Do While ... Loop executar o loop at que o critrio definido na funo seja encontrado. Este loop
bem similar ao Do Until ... Loop. Neste caso, o que voc deseja fazer comparar algum resultado
durante o loop onde o loop somente parar quando o resultado for encontrado.

Novamente, voc deve ter cuidado com este tipo de loop, pois ele pode entrar em uma execuo
infinita.

O exemplo abaixo mostra como este loop pode ser utilizado:

Cdigo 2-6

Aqui, primeiramente pegamos o nmero de linhas no conjunto de valores utilizando


valores.Rows.Count. Em seguida, avaliando o loop at que o valor lin seja menor ou igual a n.
Quando est condio for verdadeira, o loop encerrado e o resultado da funo retornado.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
16 Introduo aos conceitos de criao de funes no Excel

2.5. ANINHANDO LOOPS (LOOPS EM MULTIPLAS CAMADAS)

Voc deve ter notado que de todos os loops apresentados, o que parece ser mais eficiente o For
Each ... In ... Digo parece porque se ele realmente fosse o mais eficiente no haveria necessidade
de termos qualquer outro tipo de loop. importante compreender que cada loop tem um objetivo e
cada um ser eficiente se o utilizarmos para a sua funo principal. Se desejarmos avaliar uma
matriz unidirecional, no For i Next i muito mais eficiente, pois ele move em apenas uma direo.

Utilizar um loop em camada significa envelopar um ou mais loops em cascata. Em outras palavras,
colocar um loop dentro de outro.

Para o primeiro exemplo, utilizarei For i. Utilizando o conjunto de dados anterior observe a figura:

Figura 2-4

As setas indicam as direes em que o loop dever mover. O loop mover na vertical (linhas) e na
horizontal (colunas). Como o Excel uma grande matriz, se voc conseguir visualizar que o loop
ser de n-linhas por n-colunas, a construo do mesmo ser muito simples:

Cdigo 2-7

Neste exemplo, removemos o problema das colunas, pois o nmero de colunas ser contado assim
como o nmero de linhas. Usamos estes valores para criar um loop que avalia uma linha e todas as
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 17

colunas da linha antes de mover para a prxima linha quando, novamente, sero avaliadas as
colunas da linha em questo.

O prximo exemplo de aninhamento de loops bem similar ao anterior, mas mudo a forma como as
colunas a serem somadas so inseridas:

Cdigo 2-8

Aqui o usurio escolhe em qual coluna se inicia a soma e quantas colunas devem ser somadas:

Figura 2-5

A loop em si no muda, mas a forma como o alimentamos diferente da anterior.

O prximo exemplo mostra como criar um loop com Next e Do While sendo que o segundo
aninhado dentro do primeiro:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
18 Introduo aos conceitos de criao de funes no Excel

Cdigo 2-9

A funo no leva argumento algum. Ela apenas gera um nmero qualquer que o somatrio de i
com um valor aleatrio maior do que 10.

2.6. LOOPS EM DEGRAU (STEPPED LOOPS)

Existe uma classe de loops que usa um valor de Step (degrau) para pular ou criar um intervalo
dentro do loop. Suponha que o seu loop inicia na linha 1, mas voc deseja apenas somas os valores
contidos nas linhas mpares. Voc pode utilizar um valor Step para fazer isso:

Cdigo 2-10

Se o usurio deseja somar todas as linhas selecionadas, ele deve definir o nmero de degraus como
sendo 1 (Step 1). Se o desejo for somar somente as linhas mpares, ele digitar 2 e para a soma das
linhas pares ele deve digitar 3.

A figura a seguir mostra como o resultado colocado na planilha:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 19

Figura 2-6

O tipo digitado na clula B22. Esta clula tambm utilizada na formatao condicional das
clulas contendo o intervalo de dados. Ao modificar o tipo para 1 ou 3, as clulas so formatadas
para mostrar o que est sendo somado.

Observe que Step refere-se ao pulo dentro do loop. Quando Step igual a 1 o loop ocorre com
incrementos de 1. Se voc entrasse um valor Step igual a zero, o loop deixaria de ocorrer pois o
valor jamais chegar no valor superior do loop.

Em alguns casos voc pode desejar um valor Step bem pequeno para fazer uma interao, por
exemplo:

Cdigo 2-11

Far o loop cem vezes e o resultado ser 1 dado o somatrio de 0,01 a cada loop. Este loop tem o
mesmo efeito que o loop a seguir o qual no utiliza o valor Step:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
20 Introduo aos conceitos de criao de funes no Excel

Cdigo 2-12

O loop sem Step, como na funo acima, ser, certamente, mais conhecido do que o anterior.
Contudo, ambos fazem exatamente a mesma coisa, mas de um prisma diferente.

2.7. SAINDO DO LOOP INSTRUO EXIT

Haver situaes onde voc desejar sair do loop se certo critrio for encontrado. Suponha que
voc no queira que um loop ocorra por mais de 100 vezes. Se isso ocorrer, o loop encerrado e a
funo retorna um erro.

Neste caso, podemos utilizar a instruo Exit para deixar o loop ao invs de esperar por um loop que
pode ser tornar infinito. A instruo Exit pode ser utilizada em vrios contextos como em Exit
Function ou Exit Sub.

Cdigo 2-13

No exemplo acima, o loop contendo While deve ocorrer enquanto n for menor do que 100. Contudo,
se o loop ocorrer 5 vezes seguidas sem obter um valor superior a 100; ento o loop deve ser
terminado e o resultado da funo igual a i.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 21

O exemplo a seguir mostra como sair do loop para For-Next:

Cdigo 2-14

Se o nmero sorteado for igual a 10, o loop parado independentemente do nmero de loops que
tenha ocorrido. Se o nmero sorteado for 10 logo no primeiro loop, no haver necessidade de
continuar o loop.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
22 Introduo aos conceitos de criao de funes no Excel

3. DEBUG DE FUNES
Ao criar funes, voc notar que a forma de debug diferente do debug de uma sub-rotina. Isso
ocorre porque voc no pode rodar a funo utilizando F5 ou F8. A funo somente rodar quando o
clculo for chamado.

Desta forma precisamos utilizar as ferramentas de debug do VBA para avaliar a funo. Um truque
que geralmente uso criar a funo como se fosse uma sub-rotina e aps terminar os testes eu
converto para uma funo. Alm de dar a flexibilidade do uso de F5 e F8, voc tambm poder
utilizar as ferramentas de debug do VBA.

Para utilizar o mtodo Print do objeto Debug voc precisar da janela de verificao imediata aberta.
Para isso, v at Exibir Janela Verificao imediata ou pressione CTRL+G.

3.1. DEBUG.PRINT

O mtodo Print do objeto Debug serve para imprimir o resultado de uma varivel na janela de
verificao imediata.

A utilizao deste mtodo bastante simples e extremamente til.

Figura 3-1

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 23

A figura acima mostra um loop dentro da funo para os valores de i de 1 a 10. Para cada loop, o
valor de x calculado e escrito, junto com uma mensagem, na janela de verificao imediata.

O mtodo Print pode ser utilizado em qualquer parte de seu cdigo para avaliar uma ou mais
variveis. Ao criar suas funes o ideal avaliar cada bloco separadamente e ir corrigindo conforme
a necessidade. Se voc usa mtodo Print em todos os passos simultaneamente, ele pode acabar
ofuscando erros ao invs de apont-los, pois voc ter que lidar com diversos resultados ao mesmo
tempo, o que pode ser confuso.

3.2. MSGBOX

Utilizar uma caixa de mensagem para fazer depurao de seu cdigo uma boa idia se ela avalia
apenas um resultado. Se voc possui diversas variveis que precisam ser depuradas, utilize o
mtodo Print.

Voc ver que isso verdade quando houver um volume grande de variveis e para cada resultado
voc receber uma caixa de mensagem:

Cdigo 3-1

O cdigo acima faz exatamente a mesma coisa que o mtodo Print, porm, a cada loop uma caixa
de mensagem passada com o valor de x:

Figura 3-2

Embora depurao com caixa de mensagem seja extremamente til ela pode ser tornar
extremamente irritante l pela dcima mensagem. Geralmente, utilizo caixas de mensagens
exatamente para o objetivo delas: passar uma mensagem.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
24 Introduo aos conceitos de criao de funes no Excel

Se existe algo que necessitar de minha ateno, prefiro ter uma caixa de mensagem como
lembrete do que necessito fazer do que ter um comentrio.

A caixa de mensagem uma boa forma de evitar o esquecimento de algo que precisar de sua
ateno ao final da depurao, alm de ser uma ferramenta vivel para depurao de uma ou duas
variveis em sua funo.

3.3. PONTOS DE INTERRRUPO

Um outro mtodo para depurao de cdigo requer a utilizao de pontos de interrupo (line
breaks ou breakpoints).

Para inserir um ponto de interrupo em seu cdigo voc deve selecionar uma linha que possa ser
interrompida. Voc no pode colocar um ponto de interrupo em linhas que dimensionam variveis,
por exemplo.

Ao selecionar a linha, para adicionar um ponto de interrupo basta clicar na barra no canto
esquerdo e a linha marcada para interrupo durante a execuo do cdigo:

Figura 3-3

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 25

Uma outra opo inserir diretamente do menu Depurar. Clique na linha onde voc deseja inserir o
ponto de interrupo v at Depurar Ativar/Desativar pontos de interrupo.

Figura 3-4

Como a figura acima mostra, ainda h a possibilidade de inserir/remover um ponto de interrupo


pressionando a tecla F9.

Ao chamar a funo, a execuo ser interrompida na posio onde o ponto de interrupo foi
inserido:

Figura 3-5

Observe que se o ponto de interrupo for colocar em algum ponto dentro de um loop, a execuo
ser interrompida toda vez que o cdigo retornar linha dentro do loop at que o loop termine.

No existe uma regra para usar pontos de interrupo, mas eles so extremamente teis quando
uma parte do cdigo est pronta e precisamos depurar apenas pontos especficos. Aqui, fica fcil
passar por cima de qualquer coisa que esteja pronta e concentrar no que precisa ser resolvido.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
26 Introduo aos conceitos de criao de funes no Excel

4. DEFININDO AS OPES DAS FUNES


Quando criamos funes personalizadas no Excel desejamos realmente personalizar ao mximo o
nosso trabalho. Embora existam algumas limitaes ao que podemos personalizar, ainda existem
vrias opes de personalizao que podemos utilizar para dar as nossas funes um ar bem
pessoal.

Dentre as opes, podemos adicionar comentrios (descrio) a nossa funo para guiar o usurio,
isto , dar a ele informaes sobre o que a funo faz e como utiliz-la. Uma outra opo diz
respeito categorizao de nossas funes.

Voc deve ter notado que ao abrir a caixa de insero de funo voc tem vrias opes de como
mostrar a lista de funes. A primeira lista mostra as funes mais recentes, contudo, voc pode
selecionar uma das categorias, digamos, Estatstica, onde somente as funes estatsticas so
mostradas.

Nos dois tpicos a seguir discuto como implementar estas opes.

4.1. DEFININDO AS INFORMAES DA FUNO

Quando voc cria uma funo no Excel, h a possibilidade de adicionar descries sobre a sua
funo. Estas descries podem ser vistas nas funes internas do Excel:

Figura 4-1

Esta descrio pode ser facilmente adicionada a qualquer funo personalizada. A informao
pertinente aos argumentos, no caso acima Nm1 e Nm2, infelizmente, no pode ser definida no
Excel. Certamente que se isso fosse possvel as funes teriam um ar muito mais profissional.
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 27

Existem vrias formas de se inserir tais descries. A primeira pode ser acessada atravs de
Ferramentas Macro Macros (ou simplesmente pressione Alt+F8).

A caixa de dilogo de macros aberta. Digite o nome da funo no campo Nome da macro e o
boto Opes ser ativado:

Figura 4-2

Clique no boto de opes para acionar as opes da funo onde voc poder digitar os detalhes
de sua funo:

Figura 4-3

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
28 Introduo aos conceitos de criao de funes no Excel

Ao acionar a funo em sua planilha ela conter a descrio acima:

Figura 4-4

Uma outra forma de adicionar a descrio de sua funo atravs do VBE (Visual Basic Editor).
Para acionar o VBE v at Ferramentas Macro Editor do Visual Basic (ou pressione Alt+F11).

Clique em Exibir Pesquisador de Objeto (ou pressione F2). No pesquisador de objeto, filtre os
objetos pelo nome de seu projeto VBA:

Figura 4-5

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 29

As informaes de seu projeto sero filtradas e mostradas como segue. Clique no mdulo que
contm sua funo, clique sobre a funo e a descrio aparecer logo abaixo na janela:

Figura 4-6

Para modificar a descrio da funo, clique sobre ela com o boto direito do mouse, selecione a
opo Propriedades e modifique a descrio conforme necessrio:

Figura 4-7

E a nova descrio aceita em nossa funo:

Figura 4-8
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
30 Introduo aos conceitos de criao de funes no Excel

Voc notar, contudo, que este mtodo funciona bem quando ainda no definimos uma descrio
para nossa funo. Se uma descrio j tiver sido definida, o Pesquisado de objetos teimar em
no modificar a descrio.

Um terceiro mtodo requer a utilizao de uma macro para modificar a descrio em tempo de
execuo.

Cdigo 4-1

A sub-rotina acima utiliza o mtodo MacroOptions para definir a nova descrio de nossa funo.
Este mtodo bastante til se voc possui muitas funes, pois completamente invivel modificar
cada opo manualmente. Desta forma, utilizamos um arquivo contendo informaes individuais das
funes e modificamos todas as funes de uma s vez. Ao rodar o cdigo a descrio da funo
modificada:

Figura 4-9

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 31

4.2. ADICIONANDO A FUNO A UMA CATEGORIA

O criar funes personalizadas, o Excel automaticamente as coloca sob a categoria de funes


definidas pelo usurio.

A figura a seguir mostra uma funo personalizada sob tal categoria:

Figura 4-10

Porm, se voc est criando uma funo financeira, voc pode desejar que ela seja categorizada
juntamente com as outras funes financeiras do Excel.

Para resolver o problema de categorizao ns nos voltamos ao mtodo MacroOptions. Na verdade,


este mtodo possui vrios argumentos (parmetros) e um deles j utilizamos:

Cdigo 4-2

Ao inserir o cdigo no evento Open da pasta de trabalho a funo definida no mtodo ser
automaticamente categorizada na abertura da pasta de trabalho:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
32 Introduo aos conceitos de criao de funes no Excel

Figura 4-11

Ao abrir a caixa de insero de funo e escolher a categoria Estatstica, basta rolar at a letra m
para encontrar a minhaFuno devidamente categorizada.

A tabela a seguir mostra a lista das categorias das funes no Excel:

Valor Inteiro Categoria


1 Financeira
2 Data & Hora
3 Matemtica e Trigonomtrica
4 Estatstica
5 Procura e Referncia
6 Banco de Dados
7 Texto
8 Lgica
9 Informao
10 Comandos
11 Personalizao
12 Controle de Macro
13 DDE/Externa
14 Definida pelo Usurio
15 Primeira categoria personalizada
16 Segunda categoria personalizada
17 Terceira categoria personalizada
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 33

18 Quarta categoria personalizada


19 Quinta categoria personalizada
20 Sexta categoria personalizada
21 Stima categoria personalizada
22 Oitava categoria personalizada
23 Nona categoria personalizada
24 Dcima categoria personalizada
25 Dcima primeira categoria personalizada
26 Dcima segunda categoria personalizada
27 Dcima terceira categoria personalizada
28 Dcima quarta categoria personalizada
29 Dcima quinta categoria personalizada
30 Dcima sexta categoria personalizada
31 Dcima stima categoria personalizada
32 Dcima oitava categoria personalizada

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
34 Introduo aos conceitos de criao de funes no Excel

5. DEFININDO OS ARGUMENTOS DE SUAS FUNES


Antes de iniciarmos a criao de funes personalizadas ainda precisamos conhecer os tipos de
argumentos possveis em uma funo.

O que um argumento? Argumento pode ser uma constante, uma linha de texto, uma ou mais
variveis, etc, que so passadas para a funo manipular e resolver conforme a frmula da funo.

A funo pode ter a frmula do desvio padro, por exemplo, e receber como argumento um range
contendo diversas observaes de uma varivel qualquer. O receber tais valores, a funo resolver
para o desvio padro conforme a frmula inserida na funo.

Ao definir suas variveis voc precisa ter em mente o tipo de dado que ser recebido. Por exemplo,
se a funo somente lida com nmero no far sentido definir o argumento como String (texto).

Um erro comum, no s de quem cria, mas tambm de quem usa, em funes tentar avaliar um
argumento onde o tipo no corresponde ao tipo sendo avaliado pela funo. Por exemplo, se voc
tenta efetuar um clculo com um texto, a menos que o texto possa ser reconhecido e convertido
para um valor numrico, a sua funo retornar um erro.

Para compreender melhor cada um dos erros retornados, voc pode ler o Ajuda do Excel que
contm uma lista dos erros e o que eles significam e como resolv-los. No Ajuda do Excel digite
Corrigir um erro e uma lista dos erros com explicaes sobre cada um e como corrigi-los ser
apresentada.

importante que voc leia estas explicaes e saiba como encontr-las, pois voc certamente
precisar ajudar usurios na correo de tais erros e sem compreender cada um ou ao menos saber
onde encontrar a resposta, voc estar em srios apuros no suporte ao uso de suas funes (ou at
mesmo na soluo de erros em funes internas do Excel).

5.1. FUNES SEM ARGUMENTOS

Uma funo sem argumento aquela que no recebe valor algum de entrada. Ela apenas retorna
um valor. A primeira vista, este tipo de funo pode parecer estranha, pois, afinal, quem iria querer
uma funo sem argumento?

A verdade que existem vrios casos onde uma funo sem argumento extremamente til. Veja
por exemplo algumas funes que no recebem argumento no Excel como as funes Aleatrio(),
Hoje(), Falso(), Verdadeiro(), etc.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 35

Um exemplo de uma funo personalizada sem argumento uma funo que retorna a localidade
do sistema. Muitos usurios do Excel desconhecem uma funcionalidade onde se voc mudar a
configurao regional do sistema o Excel assume o sistema decimal do pas selecionado. Cada pas
tem um cdigo e o Excel retornar o cdigo do pas de acordo com o cdigo de discagem
internacional. Por exemplo, o cdigo de discagem internacional para o Brasil 55, para os EUA 1,
para a Alemanha 49, etc.

Se voc tem uma funo que lhe informa a configurao regional a sua funo possui traduo para
outros idiomas, voc pode disponibilizar a funo no idioma selecionado na configurao regional do
seu sistema:

Cdigo 5-1

A funo acima faz exatamente isso. O argumento da funo a configurao do pas


(xlCountrySetting). A funo busca a configurao atual e retorna o nmero do pas atualmente
configurado em seu sistema:

Figura 5-1

Ao modificar a configurao regional para um outro pas, a funo automaticamente se reajusta:

Figura 5-2

No exemplo acima o pas a Ucrnia.

Para ver a funo acima em funcionamento, voc precisa modificar as configuraes regionais de
seu sistema. Para tanto v at Iniciar Painel de controle Opes regionais e de idioma.
Modifique o idioma padro de Portugus (Brasil) para o de um outro pas qualquer e a funo
automaticamente ajusta o valor calculado. Observe que no necessrio fechar e abrir o Excel.
Assim que a configurao modificada a funo reajustada.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
36 Introduo aos conceitos de criao de funes no Excel

Um outro exemplo clssico de uma funo sem argumento aquela que retornar o nome do usurio
atual:

Cdigo 5-2

Ao inserir a funo em sua planilha:

Figura 5-3

5.2. FUNES COM UM OU MAIS ARGUMENTOS

Uma funo com um ou mais argumento simplesmente isso: uma funo com um ou mais
argumentos que so definidos quando criamos a funo. Diferente dos argumentos indefinidos (veja
ParamArray mais abaixo no texto) aqui precisamos definir explicitamente os argumentos da funo
assim como o tipo de dado de cada argumento.

Supondo que voc queira calcular o volume de um retngulo, voc precisar da altura, largura e
profundidade do retngulo. Os argumentos da funo podem ser definidos como:

Cdigo 5-3

O tipo de dado aceito por cada argumento duplo (double). Double tem um timo escopo, pois
engloba os tipos simples (Single), longo (Long), inteiro (Integer) entre outros, facilitando em muito a
entrada de dados. No obstante, se voc entrar um valor String, por exemplo, a funo retornar um
erro, pois ela ser incapaz de utilizar um tipo que no seja englobado por Double.

A funo acima aceita argumentos duplos e retorna um valor duplo. Contudo a sua funo pode
receber argumentos de diferentes tipos e retorna um outro tipo qualquer. O tipo Variant o mais
global de todos, pois retornar qualquer tipo.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 37

No exemplo abaixo, os argumentos so todos duplos e o resultado uma matriz contendo duas
razes. A funo utilizada para resolver equaes do segundo grau e utiliza a frmula

b b 2 4ac
:
2a

Cdigo 5-4

Na linha que passa o resultado da matriz para a funo utilizo a funo de planilha
(WorksheetFunction) Transpose (Transpor) para transpor o resultado que ser em colunas para
um resultado em linhas. Para os usurios no conhecem frmulas matriciais, a funo acima retorna
uma matriz e precisa ser inserida com CTRL+SHIFT+ENTER:

Figura 5-4

Observe que o resultado da funo no completo embora ela mostre a matriz completa {1;-2,5}.
Para que ambos os resultados sejam mostrados ser necessria a seleo de duas clulas na
vertical (linhas) e pressionar CTRL+SHIFT+ENTER simultaneamente:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
38 Introduo aos conceitos de criao de funes no Excel

Figura 5-5

A funo acima retorna as duas razes da seguinte funo 2 x 2 + 3 x 5 = 0 . A funo, no entanto,


no resolve equaes com razes imaginrias.

5.3. FUNES COM ARGUMENTO OPCIONAL

Argumento opcional aquele que o usurio no precisa inserir na funo para que ela possa efetuar
os clculos. Um exemplo a funo interna VF (valor futuro). Dependendo do tipo de clculo alguns
argumentos so opcionais. Se o usurio no os inserir a funo ainda ser capaz de calcular o valor
procurado pelo usurio.

Argumentos opcionais so substitudos por argumentos padres dentro da prpria funo. Supondo
que o clculo requer uma deciso verdadeira ou falsa por parte do usurio. Se o usurio preferir por
deixar o argumento em branco a funo assumir que o argumento verdadeiro (ou falso
dependendo de como o argumento opcional tenha sido definido).

Imagine uma funo que retorna nmeros aleatrios. Este tipo de funo no necessita de
argumento, porm, voc deseja que os nmeros aleatrios sejam positivos se o usurio digitar 0
(zero) e negativos se o usurio digitar 1 (um).

No obstante, se o usurio pode optar por deixar o argumento em branco, precisamos decidir qual
tipo de nmero aleatrio ser retornado.

O exemplo a seguir mostra como declarar um argumento opcional:

Cdigo 5-5

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 39

O argumento opcional definido como Boolean (verdadeiro ou falso). Se ele for verdadeiro, o
nmero aleatrio ser positivo e se for falso o nmero aleatrio ser negativo:

Figura 5-6

Observe que o valor padro para o argumento opcional colocado diretamente na declarao do
argumento. Uma outra forma de passar o valor padro utilizar uma das funes internas do VBA
tais como IsMissing, IsEmpty, etc, para avaliar o argumento antes do clculo ser iniciado:

No caso especfico deste exemplo, se o valor no for digitado ele considerado como zero. Desta
forma quando o argumento no for inserido pelo usurio a funo ser avaliada para False. A
depurao abaixo mostra isso ocorrendo:

Figura 5-7

O tipo continua sendo opcional e desta vez deixado em branco. Ao iniciar a avaliao da funo o
argumento passado como falso e expresso para avaliar o argumento que falta no tem efeito
algum. Portanto, se voc estiver lidando com argumentos booleanos opcionais importante definir o
caso do opcional em branco logo no argumento, caso contrrio o efeito pode no ser o desejado.

O exemplo a seguir utiliza um argumento opcional do tipo String e a funo tambm retorna um texto
(String):

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
40 Introduo aos conceitos de criao de funes no Excel

Cdigo 5-6

Se nenhum argumento for inserido, isto , se a String for vazia (=), ento, a funo retorna o
caminho atual da pasta de trabalho:

Figura 5-8

O caso em A1 exatamente este. Ao deixar em branco o argumento a funo retorna o caminho


onde o arquivo est salvo.

O prximo exemplo mostra como utilizar a funo IsMissing do VBA para avaliar se o argumento foi
digitado ou no:

Cdigo 5-7

Se o argumento no for digitado definimos o valor inteiro como sendo zero. Caso o argumento
digitado seja zero ele ser tratado como se no tivesse sido digitado:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 41

Figura 5-9

5.4. FUNES NMERO INDEFINIDO DE ARGUMENTOS

Em algum ponto voc certamente deve ter utilizado uma funo que no possui um nmero definido
de argumentos. Um exemplo de uma funo deste tipo a funo SOMA:

Figura 5-10

Por padro dois argumentos so disponibilizados para o usurio conforme a figura acima. Ao clicar
no segundo argumento a funo automaticamente disponibiliza um terceiro argumento para o
usurio:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
42 Introduo aos conceitos de criao de funes no Excel

Figura 5-11

O processo se repetir at que o nmero mximo de argumentos permitidos na funo seja atingido:

Figura 5-12

importante observar que cada argumento pode receber mais de um argumento tornando o escopo
da combinao do nmero de variveis praticamente infinito.

Dependendo do tipo de trabalho que voc faa improvvel que este tipo de funo venha a ter
alguma utilidade, contudo, importante saber como utiliz-la (e conhec-la) para uma eventualidade
qualquer.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 43

Para criar um funo com um nmero indefinido de argumento voc deve declarar o argumento
como um ParamArray.

ParamArray (Parameter Array) refere-se a uma matriz multi-dimensional. Ao tentar visualizar tal
matriz, voc deve estar se perguntando como identificar cada parmetro dentro da matriz. A verdade
que isso no necessrio. A menos que voc queira saber qual o valor do parmetro 20 dentre,
digamos, 200 parmetros, no haver necessidade de saber onde esto ou quem so os
parmetros

Contudo, se voc realmente deseja saber, podemos utiliza a funo Ubound para descobrir o limite
superior da matriz ou simplemente pedir para retornar o parmetro x dentre todos os parmetros
recebidos como argumento da funo. Observe o exemplo:

Cdigo 5-8

O primeiro argumento da funo refere-se a posio do parmetro que desejamos retornar. O


segundo argumento a matriz contendo todos os parmetros. Na funo, ns adicionamos os
seguintes valores: 25, 30, 45, 60, 59, 33 e 25. O valor que desejamos retornar encontra-se na quinta
posio dentro da matriz:

Figura 5-13

Observe que se contarmos cada uma das observaes o valor retornado pela funo encontra-se na
sexta posio. Isso ocorre porque o limite inferior da matriz est na posio zero (0); portanto, a
quinta posio , na verdade, a sexta observao.

Um cenrio que pode gerar confuso demonstrado abaixo.

Supondo que voce tenha um conjunto de dados e ao invs de inser-los individualmente como
argumentos da funo, voc decide inser-los em blocos. Ou seja, cada parmetro passa a ser uma
matriz de dados e cada matriz de dados agrupada para formar a matriz que estar contida na
matriz de parmetros.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
44 Introduo aos conceitos de criao de funes no Excel

Para que o ltimo pargrafo fique mais claro observe a figura:

Figura 5-14

Cada parmetro agora representado por um conjunto de clulas que por sua vez formam uma
matriz cada um (voc reconhecer matrizes pelas chaves { }). Ao escolhermos o terceiro parmetro
observe que estamos nos referindo ao ParamArray e no ao parmetro dentro de cada grupo de
observaes. Portanto, o valor retornado o primeiro dentre as observaes do terceiro parmetro.

E como resolver isso ento? E se eu quero o primeiro item da segunda coluna do terceiro
parmetro, como encontr-lo dentro desta matriz?

Neste caso, precisamos manter em mente que cada parmetro , na verdade, uma matriz. Desta
forma precisamos referir a funo anterior para levar isso em considerao. Neste caso, precisamos
de mais dois argumentos para a funo. Um dos argumentos indicar a linha e o outro indicar a
coluna de onde o dado deve ser removido.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 45

A funo revista fica, portanto:

Cdigo 5-9

O primeiro passo identificar o parmetro que contm a matriz. Isso feito pela linha matriz =
parmetros(iParam)

Como matriz um tipo de dado Variant ela ser capaz de receber todas as observaes do
parmetro escolhido. Feito isso, tudo que precisamos definir dentro da matriz em qual linha e em
qual coluna a observao deve ser retirada. Isso feito pela linha: retornarParamExato =
matriz(iLin, iCol)

Figura 5-15

Voc deve observar o seguinte na figura acima. Se o sistema decimal usado for o americano, isto ,
onde o ponto separa o decimal e a vrgula separa o milhar, na matriz que aparecer nos argumentos
da funo as linhas da matriz sero separadas por vrgula ao passo que colunas so separadas por
ponto-e-vrgula.

No caso brasileiro as linhas so separadas por um ponto ao passo que as colunas so separadas
por ponto-e-vrgula.
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
46 Introduo aos conceitos de criao de funes no Excel

Como um exemplo final, mostro como criar uma funo simples para somar valores contidos nos
parmetros:

Cdigo 5-10

A funo acima assume que todos os valores so compostos de uma matriz. Se voc inserir um
valor nico como um argumento a funo retornar um erro.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 47

6. CHECANDO A VALIDADE DOS ARGUMENTOS


Um outro aspecto que voc precisar saber durante a criao de funes como separar
argumentos invlidos dentre vrios argumentos selecionados pelo usurio.

Vamos supor que um dos argumentos do tipo Range. Com este tipo de argumento o usurio
poder selecionar uma rea da planilha para que os clculos sejam efetuados. Se a rea
selecionada conter dados invlidos a funo retornar um erro.

Contudo, usurios geralmente no querem ter o trabalho de separar valores vlidos dos valores
invlidos. Em muitos casos, os usurios nem sabem quais so os valores vlidos e quais so
invlidos. Eles simplesmente desejam selecionar uma rea e deixar a funo se virar para lhe dar
o resultado esperado.

Em situaes como estas, voc precisar saber como contornar tal situao da melhor forma
possvel. Um problema clssico misturar texto com valor numrico e esta nossa primeira parada.

6.1. SEPARANDO VALORES NUMRICOS

Nossa primeira parada criar uma funo para testar se os valores selecionados pelo usurio so
realmente numricos. A funo far um loop por todos os valores selecionados e somente retornar
verdadeiro se todos os valores forem realmente numricos.

Para fazer temos duas opes: 1) utilizar a funo IsNumeric do VBA ou 2) criar uma funo para
testar o valor ASCII dos argumentos selecionados. Observe que na segunda opo o ideal separar
a funo que checa o valor individual da funo que checa todos os valores.

No exemplo, estarei utilizando a funo IsNumeric e deixarei a segunda como exerccio para o leitor.

A funo contm um loop que varre todos os valores selecionados pelo usurio. Se um valor no for
numrico, a funo retornar FALSO e sai do loop, pois no h mais necessidade de continuar se um
valor for falso:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
48 Introduo aos conceitos de criao de funes no Excel

Cdigo 6-1

O funo iniciada assumindo que todos os valores so numricos, portanto ela definida como
sendo verdadeira logo de incio. O loop iniciado e cada valor dentre os valores selecionados
checado. Se o valor no for numrico (If Not IsNumeric(valor)); ento, a funo deve retornar falso e
sair do loop, pois no h necessidade de continuar tendo em vista que para a funo ser verdadeira
todos os valores devem ser numricos:

Figura 6-1

A figura acima mostra o intervalo A1:A10 sendo avaliado (VERDADEIRO), o intervalo B1:B10
(FALSO) e o intervalo A1:B10 (FALSO).

6.2. SEPARANDO VALORES VAZIOS

Visto o problema de valores numricos, analisamos agora a situao de valores vazios. No toda
situao que um valor vazio causa problemas, porm, h situaes onde um valor vazio pode
causar srios problemas.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 49

Imagine a situao onde voc queira tirar a mdia de valores no intervalo A1:A10. Se voc possui
vrios argumentos vazios no intervalo, ao utilizar a frmula =MDIA(A1:A10) o Excel ignorar todos
os espaos vazios e calcular somente a mdia dos valores.

Figura 6-2

No exemplo acima, a frmula em A7 utiliza a funo MDIA para calcular a mdia dos dados no
intervalo A1:B5. A frmula em B7 utiliza a funo personalizada a seguir:

Cdigo 6-2

Conceitualmente a funo est correta, isto , a mdia realmente a soma de todas as observaes
dividia pelo nmero (N) de observaes. Contudo, a funo no leva em conta os argumentos
vazios os quais no deveriam ser considerados como observaes.

Uma soluo utilizar a funo ISEMPTY para avaliar se um dos argumentos est vazio. Se o
argumento no estiver vazio, ento, a funo adicionar o valor ao clculo. Caso contrrio, o
argumento pulado e o prximo argumento avaliado:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
50 Introduo aos conceitos de criao de funes no Excel

Cdigo 6-3

Desta vez, ao invs de utilizarmos a propriedade Count do objeto Range (valores), utilizamos um
contador N para avaliar o nmero de observaes no vazias no conjunto de dados selecionados. O
resultado ser igual ao da funo MDIA:

Figura 6-3

6.3. SEPARANDO VALORES NUMRICOS E VAZIOS SIMULTANEAMENTE

Se voc j utilizou a funo MDIA (ou SOMA) em situaes onde existem observaes em branco
ou no numricas, voc deve ter notado que esta funo simplesmente ignora estas observaes e
retorna o resultado como se nada estivesse afetando a funo:

Figura 6-4

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 51

A funo personalizada no capaz de lidar com ambas as situaes simultaneamente. Nos


exemplos anteriores vimos como tratar cada exceo separadamente. Neste tpico mostro como
tratar ambas as situaes simultaneamente.

A soluo do problema , na verdade, bem simples. O que precisamos adicionar mais uma
avaliao condicional lgica nossa funo. Neste caso, utilizaremos a condicional lgica AND (E)
aninhada dentro da condio IF (SE).

A funo dever a seguinte condio: se o valor no for vazio e for numrico, ento, calcular a
mdia dos valores. Se voc coloca a condio definida claramente, a soluo do problema bem
simples:

Cdigo 6-4

Se as duas condies forem aceitas, ento, o valor somado ao valor anterior e N contado.
Finalmente, a nossa funo revista retornar o valor correto para o intervalo selecionado pelo
usurio mesmo quando ele contm espaos vazios ou letras:

Figura 6-5

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
52 Introduo aos conceitos de criao de funes no Excel

7. CRIANDO MINHA PRIMEIRA FUNO


Depois de passarmos pela introduo dos conceitos que voc precisar para construir suas funes
personalizadas, chegou a hora de colocar a prova aquilo que foi aprendido. Nos exerccios a seguir,
mostrarei vrios exemplos e a lgica da construo pode trs de cada uma das funes.

Os exemplos so simples para que voc possa ir se acostumando com o pensamento lgico por trs
de cada desenvolvimento.

7.1. FUNES DO TIPO BOOLEAN

O objetivo dos exerccios a seguir construir funes do tipo Boolean que avaliem diferentes
cenrios. Os cenrios so simples para que voc possa ir se acostumando com o pensando por trs
de cada funo desenvolvida. Uma vez que voc tenha compreendido cada uma das funes, tente
criar cenrios novos onde voc tenha a necessidade de usar tais funes e crie as suas prprias.

7.1.1. Comparando valores

O objetivo desta funo comparar dois valores selecionados pelo usurio. Se os valores forem
iguais a funo retorna VERDADEIRO (TRUE) e se forem diferentes a funo retorna FALSO
(FALSE):

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 53

7.1.2. Definindo se um dado est presente em um conjunto de dados

O objetivo desta funo buscar um determinado valor em uma lista selecionada pelo usurio. Se o
dado procurado for encontrado na lista a funo retorna VERDADEIRO (TRUE) e se o dado no
estiver na lista a funo retorna FALSO (FALSE):

7.1.3. Determinando se um texto est acima do limite de caracteres permitidos

O objetivo desta funo determinar se o texto inserido pelo usurio mais longo do que o
permitido. Se for, a funo retorna VERDADEIRO (TRUE) e se no for a funo retorna FALSO
(FALSE):

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
54 Introduo aos conceitos de criao de funes no Excel

7.2. FUNES DO TIPO DOUBLE, LONG, SINGLE E INTEGER

O objetivo dos exerccios a seguir construir funes dos tipos Double, Long, Single e Integer. No
darei um exemplo de cada, pois o conceito para cada uma exatamente o mesmo, o que muda a
preciso dos dados. Veja a tabela contendo os tipos de dado para verificar a preciso de cada um.

7.2.1. Calculando o movimento percentual

O objetivo desta funo calcular o movimento percentual de dois valores. A funo deve resolver
para o movimento percentual discreto e contnuo:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 55

7.2.2. Calcular o nmero de clulas com determinado nmero de cores de fundo

O objetivo desta funo calcular o nmero total de clulas em uma seleo que possuem uma
determinada cor de fundo:

7.2.3. Determinando a cor de fundo

O objetivo desta funo determinar a cor de fundo de uma clula qualquer. No exemplo anterior,
sem saber qual o ndice da cor de fundo fica impraticvel fazer o clculo. A funo a seguir mostra
como determinar a cor de fundo de uma clula:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
56 Introduo aos conceitos de criao de funes no Excel

7.3. FUNES DO TIPO STRING

O objetivo dos exerccios a seguir construir funes que retornam textos (Strings). O tipo de texto
retornado pode variar. Por exemplo, voc pode ter uma funo que recebe como argumento um
valor numrico e retorna um texto, como o caso da funo Extenso que escreve valores
numricos para texto, como R$10,25 se tornar dez reais e vinte e cinco centavos. Ou, por exemplo,
uma funo que retorne o caminho de um arquivo e assim por diante.

7.3.1. Retornando o nome da cor de fundo da clula selecionada

O objetivo desta funo retornar o nome da cor de fundo de uma clula. Supondo que a clula
tenha sido pintada de vermelho, ao entrar a frmula em uma clula qualquer cujo argumento a
referncia da clula pintada, o valor retornado pela funo o nome da cor de fundo:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 57

O resultado obtido na planilha ser:

Figure 7-1

7.3.2. Determinado o nome do objeto pai

O objetivo desta funo introduzir a propriedade Parent. A funo deve retornar o nome do objeto
pai dada uma referncia qualquer. Por exemplo, se o usurio digita objPai(A1) e a referncia retorna
o nome do objeto pai (planilha) o nome retornado ser o nome da planilha que contm a referncia
A1. A funo a seguir retorna o nome do objeto pai de acordo com a seleo do usurio:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
58 Introduo aos conceitos de criao de funes no Excel

O resultado:

Figura 7-1

7.4. OUTROS TIPOS

O objetivo dos exerccios a seguir construir funes variadas de diferentes tipos para que o leitor
tenha contato com um pequeno leque de possibilidades no tocante criao de funes
personalizadas.

7.4.1. Adicionando dias teis a uma data qualquer

O objetivo desta funo adicionar certo nmero de dias teis a uma data qualquer. Supondo que a
data atual seja 01/01/2005 e voc queira adicionar 5.766 dias teis a esta data; ento, qual a data
futura? Observe que estamos falando de dias teis e no apenas da soma de 5.766 dias.

Somar 5.766 dias a data atual simples. Somar 5.766 dias teis outra histria. Se voc utiliza o
Excel h bastante tempo, voc saber que existe uma funo que faz exatamente isso, ou seja,
desnecessrio criar tal funo. O objetivo aqui simular tal funo para que voc possa desenvolver
o pensamento e a lgica da funo.

A idia de criar tal desafio partiu do tpico


http://www.juliobattisti.com.br/forum_/forum_posts.asp?TID=6048&PN=2 do frum Jlio Battisti.

A funo DIATRABALHO adicionar um nmero de dias teis e tambm trabalhar com feriados. O
nosso primeiro problema apenas resolver para o nmero de dias teis desconsiderando os
feriados que possam existir.

Voc pode utilizar Option Explicit para forar a declarao das variveis. Neste exemplo, utilizo
Option Explicit, pois reutilizarei as variveis na funo mais avanada e importante manter as
variveis em xeque:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 59

Cdigo 7-1

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
60 Introduo aos conceitos de criao de funes no Excel

A lgica por trs da funo explicada na prpria sub-rotina acima. Fazendo uma comparao com
a a funo DIATRABALHO, obtemos os seguintes. A funo acima no foi exaustivamente testada.
O teste foi feito com um total de 1.000 observaes aleatrias entre 0 e 15.000 dias. Em todos os
casos estudados nenhum retornou uma soma errada para o nmero de dias teis:

Figura 7-2

7.4.2. Determinando o nmero da semana dentro de um ms

O objetivo desta funo determinar o nmero da semana dentro de um ms. Por exemplo, se o
ms termina em 31 em uma tera-feira e est a quinta semana de outubro, ento, 1 de novembro
quinta semana do ms anterior e 8 de novembro a primeira semana de novembro.

Esta funo no ser repetida aqui. Ela fica como um desafio para o leitor. Uma sugesto encontra-
se no arquivo que acompanha este mdulo.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 61

8. DESENVOLVENDO FUNES MAIS AVANADAS


Depois passarmos pela construo de algumas funes simples, passamos agora para funes um
pouco mais complexas. A complexidade de cada funo depender de seu conhecimento de VBA,
conhecimento matemtico, conhecimento de lgica e disposio para resolver problemas. A
definio de avanada diz respeito introduo de conceitos desconhecidos.

As questes abaixo seguem a mesma seqncia que o tpico anterior para facilitar uma
comparao.

8.1. FUNES DO TIPO BOOLEAN

A seguir apresento mais exemplos de funes booleanas para estudo.

8.1.1. Verificando se uma data vlida

O objetivo desta funo determinar se o valor digitado em uma clula uma data vlida ou no.
Se for uma data vlida a funo retorna true se no for vlida retorna false:

O resultado:

Figura 8-1

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
62 Introduo aos conceitos de criao de funes no Excel

8.1.2. Determinando se uma barra de comando est travada

O objetivo desta funo determinar se uma determinada barra de comando est travada ou no.
Observe que embora as barras sejam traduzidas para o portugus, a barra retm o nome em ingls:

A figura abaixo mostra a situao onde a barra padro no est travada (veja o oval) e o menu
travado (sem o pontilhado):

Figura 8-2

8.1.3. Determinando se o nmero de um carto de crdito vlido

O objetivo desta funo determinar um nmero de carto de crdito vlido ou no1. Para validar
cartes de crdito utilizada matemtica modular (MOD). Os dgitos so lidos de trs para frente e
se a leitura for par o nmero multiplicado por 2 e se for mpar multiplicado por 1. Por exemplo,

5 4 5 4 6 7 9 0 4 2 6 7 3 7 8 0
2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1
10 4 10 4 12 7 18 0 8 2 12 7 6 7 16 0
1+0 4 1+0 4 1+2 7 +18 0 8 2 1+2 7 6 7 1+6 0

Some a ltima linha e divida por dez. Se no houver resto, o nmero do carto vlido. No caso
acima, a soma 69 e o resto 9; portanto, o nmero do carto invlido.

1
Para maiores informaes veja o link http://www.beachnet.com/~hstiles/cardtype.html
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 63

O nmero do carto acima imita um nmero MasterCard criado para este exemplo. Observe que
para tornar o carto vlido, podemos modificar o nmero em dois pontos facilmente. Se
modificarmos um dos zeros para 1 a soma ser 70, tornando o nmero vlido.

A funo para resolver a questo far o seguinte:

1. Extrair os nmeros da direita para a esquerda, digito por digito.

2. Se o nmero cair em uma casa mpar ele e multiplicado por 1 e se cair em uma casa par ele
multiplicado por 2 (dobrado)

3. Se a multiplicao por 2 resulta em um nmero de dois algarismos; ento, somamos cada


algarismo para gerar um novo digito

4. Somamos cada digito e no final dividimos a soma por 10. Se no houver resto, o nmero
vlido

Nmeros do MasterCard possuem 16 dgitos. Como o Excel somente lida com 15 dgitos
significantes, o nmero passado como texto. Observe que se voc converter o texto para valor

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
64 Introduo aos conceitos de criao de funes no Excel

numrico o carto apresentado em A2 ser invlido, pois o ltimo digito ser tratado como zero e
ser exatamente igual ao nmero do carto em A1.

A validao do carto:

Figura 8-3

8.2. FUNES DO TIPO DOUBLE

A seguir apresento algumas funes que retornam valores double, single, long e integer. Embora
no d exemplo de cada um separadamente, os clculos so os mesmos modificando apenas a
preciso de cada um dos tipos listados acima.

8.2.1. Calculando a rea, permetro e diagonal de um quadrado.

Se chamarmos o lado de um quadrado de L, a rea do quadrado ser L2, pois a rea representada
pela multiplicao do lado horizontal pelo lado vertical, como ambos os lados so iguais, temos L2.
Por outro lado, para calcular o permetro de um quadrado multiplicamos todos os lados. Como cada
lado igual, podemos definir o permetro como 4L. J a diagonal definida como a raiz da soma de
RAIZ(L2 + L2).

A funo deve calcular a rea, o permetro ou a diagonal de um quadrado de acordo com a seleo
do usurio:

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 65

A funo recebe um argumento opcional que define o tipo que deve ser calculado (rea, permetro
ou diagonal). Por padro, o valor zero o qual calcula a rea. Caso o usurio coloque qualquer valor
que no se encontre na lista o valor calculado para a rea do quadrado:

Figura 8-4

8.2.2. Calculando a rea de um quadrado com uma funo de seu lado, permetro ou diagonal.

Este exemplo bem similar ao anterior, mas aqui estamos assumindo que voc sabe o lado,
permetro e diagonal do quadrado e deseja calcular a rea de tal quadrado. A rea de um quadrado
como funo de seu lado simplesmente L2. A rea como uma funo do permetro dada por
P2/16 e como uma funo de sua diagonal a rea dada por D2/2:

Figura 8-5

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
66 Introduo aos conceitos de criao de funes no Excel

8.3. FUNES DO TIPO STRING

A seguir apresento algumas funes que retornam texto como resultado de clculos. As funes a
seguir so bastante teis e certamente podero ser adaptadas ao seu trabalho.

8.3.1. Extraindo um elemento dentro de um texto qualquer

O objetivo desta funo extrair um elemento de um texto qualquer. Na verso do Excel a partir do
Excel XP, existe uma funo chamada Split para fazer exatamente isso. O exerccio aqui servir
para aqueles com verses anteriores ao Excel XP, pois tal funo poder ser utilizada neste
contexto.

Apresentarei trs formas diferentes de se fazer isso. Uma simplesmente remove o elemento do
texto. A segunda cria uma matriz contendo os elementos e o elemento n removido. Na terceira, a
funo uma Variant e retorna uma matriz contendo todos os elementos do texto.

Para esta primeira parte mostrarei como extrair o elemento utilizando os dois primeiros mtodos.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 67

Aplicando a funo na planilha:

Figura 8-6

8.3.2. Extraindo um elemento dentro de um texto qualquer atravs de uma matriz

A funo anterior mostra como retornar o valor a partir de um loop e uma final remoo do texto
desejado atravs da diferena da posio final e inicial.

O exemplo a seguir segue basicamente a mesma linha de raciocnio; porm, aqui o resultado
colocado em uma matriz durante o loop e o texto extrado de acordo com sua posio dentro da
matriz.

A repetio da funo tem por objetivo introduzir ao leitor o conceito de redimensionamento de uma
varivel durante a execuo do cdigo e manipulao de uma matriz.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
68 Introduo aos conceitos de criao de funes no Excel

Aplicando a funo na planilha:

Figura 8-7

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 69

8.4. OUTROS TIPOS

8.4.1. Adicionando dias teis a uma data qualquer contabilizando os feriados

Neste segundo, embora bastante similar ao exemplo 7.4.1, desta vez o que desejamos fazer
avaliar os feriados tambm.

Embora possa parecer simples, ao adicionarmos mais este elemento a nossa funo precisamos
nos atentar para a natureza dos feriados. Se um feriado cai em um dia til, isto , entre segunda e
sexta-feira inclusive, ento, o feriado deve ser tratado como um sbado ou domingo. Contudo, se ele
cai em um final de semana, no faz a menor diferena.

A funo revista no considera sbado como dia til; portanto, para aqueles que trabalham sbados
e precisam contar este dia como dia til, a funo precisar ser revista.

Um ponto que dever ser observado que funes personalizadas no possuem o mesmo
desempenho que funes internas do Excel ou funes em suplemente, portanto, esta funo ser
ligeiramente mais lenta que a funo DIATRABALHO para acrscimo muito elevado de dias teis.
Para acrscimo de 365, por exemplo, o reclculo bem comparvel com uma diferena de
milsimos de segundos.

Antes de apresentar a funo com os comentrios, fao uma digresso abaixo para que o leitor
acompanhe o raciocnio por trs da eventual funo.

Observando o exemplo anterior, vemos a linha onde a data seguinte criada quando adicionamos o
contador i a dataInicial. Como sabemos, o feriado nada mais do que a data atual, isto ,
dataInicial + i. Contudo, isto somente ser verdadeiro se a soma realmente for igual a data do
feriado selecionado. Se no for, ento, a data no um feriado.

Se a condio acima for verdadeira, isto , se o feriado for igual a uma data atual, ento, esta data
deve ser tratada como um final de semana. Se ela ser tratada como sbado ou domingo, no
importa.

Feita comparao entre feriado e data atual precisamos saber o dia da semana referente a tal
feriado. Se o dia atual um final de semana, ento, o feriado fica como est ( tratado como final de
semana mesmo), mas se cair em um dia til (entre segunda e sexta-feira); ento, ele deve ser
pulado, pois no dia til.

Feitas estas observaes, podemos partir para o cdigo que solucionar o problema. Sugiro que o
leitor tente resolver o problema antes de olhar o cdigo.
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
70 Introduo aos conceitos de criao de funes no Excel

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 71

Cdigo 8-1

Colocando a funo ao teste:

Figura 8-8

Adicionando 250 dias teis nos leva para 30 de dezembro de 2005. Acrescentando 8960 dias teis e
considerando apenas os feriados do primeiro ano:

Figura 8-9

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
72 Introduo aos conceitos de criao de funes no Excel

9. EXERCCIOS PARA DESENVOLVIMENTO DE FUNES


A seguir apresento uma srie de exerccios para que o leitor possa colocar em prtica o que foi
aprendido at o momento. Os exerccios visam apenas o desenvolvimento da funo. Fica a cargo
do leitor utilizar as outras ferramentas aqui introduzidas, tais como descrio, categorizao, etc,
para melhor o visual geral das funo.

Tenha em mente que as respostas dos exerccios so apenas guias para a soluo dos problemas
apresentados. As respostas no so para ser vistas como a verdade universal da melhor forma de
resolver os problemas propostas. Para que o leitor realmente aprenda, ele precisar desafiar as
respostas e coloc-las ao teste. O leito precisa procurar no somente por bugs nas respostas, mas
tambm por outras formas de resolver o problema apresentado.

neste tpico que voc mostrar a sua capacidade de raciocnio lgico alm de realmente verificar
se o que foi ensinado foi aprendido. Procure no olhar as respostas antes de tentar exaustivamente
por uma soluo.

9.1. FUNES DO TIPO BOOLEAN

Os problemas apresentados abaixo devem retornar VERDADEIRO (TRUE) ou FALSO (FALSE).


Alguns problemas podem apresentar mais de uma soluo e a sua soluo pode no ser
exatamente igual as solues apresentas. Compare as suas solues com as apresentadas e tente
aproveitar o que h de melhor nas duas funes.

Voc dever criar uma funo para:

a) Avaliar se um arquivo Excel existe em uma pasta qualquer do seu HD.

b) Determinar se uma planilha existe na pasta de trabalho atual.

c) Determinar se uma clula possui uma formatao qualquer (por exemplo, se a cor de fundo
azul, ou se o texto itlico, etc)2

d) Determinar se dois textos so exatamente iguais

2
A soluo para este problema apresenta diferentes cenrios
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 73

9.2. FUNES DO TIPO DOUBLE

Para este exerccio, voc dever criar uma funo para:

1
a) Avaliar a seguinte frmula
an
mt
j
b) Determinar o resultado da seguinte frmula: P 1 +
m

I
c) Determinar a seguinte frmula: 10 log
I0
n

3
X
i =1
i
d) Encontrar o resultado da seguinte frmula :
N

9.3. FUNES DO TIPO STRING

Para este exerccio, voc dever criar uma funo para:

a) Retornar o endereo da pasta de trabalho atual. Crie uma funo com e outra sem
argumento.

b) Retornar o nome da pasta de trabalho dada a referncia de uma planilha qualquer

c) Retornar o nome da pasta de trabalho e planilha de uma clula qualquer

d) Remover um elemento de um texto qualquer. Por exemplo, se o usurio digitar em A1 o texto


este o texto que desejo remover e em B1 digitar =removerTexto(A1;4) o valor retornado
pela funo deve ser texto, pois ele o quarto elemento do texto em A1.

9.4. OUTROS TIPOS

Esta parte dedicada a exerccios gerais de criao de funes no Excel. Alguns exemplos podem
ser um pouco mais complexos do que os desenvolvidos at o momento. Contudo, eles serviro para
te preparar para funes mais complexas do segundo mdulo desta srie.

Para este exerccio, voc dever criar uma funo para:

3
Esta a frmula da mdia.
Autor: Robert F Martim Criado em: 1/5/2005
ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
74 Introduo aos conceitos de criao de funes no Excel

a) Converter um valor texto (2005-05-30 ou 200505305) em uma data tipo 30/05/2005. Se


desejar adicione o tipo de separador, caso ele exista.

b) Contar um determinado caractere em um texto qualquer. Por exemplo, contar a letra t em


texto onde o resultado ser igual a 2.

c) Converter o caractere par ou mpar em maisculo. O usurio deve escolher se o caractere a


ser convertido para maisculo par ou mpar. Por exemplo, se a frmula for
parMaisculo(A1;1) e o texto em A1 for texto; ento o resultado ser TeXtO. Se a frmula
for parMaisculo(A1;2) o resultado ser tExTo.

d) Para passar os nmeros de 0 a 10 para extenso.

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br
Introduo aos conceitos de criao de funes no Excel 75

10. SOBRE O AUTOR


FORMAO ACADMICA:

Formado e Ps-Graduado em Finanas pela Universidade de Londres, Reino Unido


Membro da Sociedade Brasileira de Econometria

LINGUAGENS DE PROGRAMAO E PLATAFORMAS:

Visual Basic, Calculadores Programveis Casio e Sharp


BDs: MS Access and Lotus Approach
Plataformas: Windows NT, 2000, XP, Linux Red Hat

EXPERINCIA PROFISSIONAL

out02-abr04 FAIRCOURT CAPITAL LIMITED (REINO UNIDO)


Diretor TI
fev96-maio02 MELVALE GROUP (REINO UNIDO)
Gerente de Exportao para a frica Ocidental
Gerente de TI

OUTRAS ESPECIALIZAES

Inspeo e regulamentaes Nigerianas para importao e exportao


(Nigerian-British Chamber of Commerce & Cotecna International)
Procedimentos de exportao no Reino Unido (The Institute of Export, Reino Unido)
ICC 500 e Incoterms (The Institute of Export, Reino Unido)

OUTRAS ATIVIDADES

Fornece suporte pro bono em TI entidade de caridade Nigeriana NIDOE (Nigerians in Diaspora
Organisation Europe) desde 2001. Participou ativamente na organizao da conferncia sobre Boa
Governana e Responsabilidade Fiscal promovida pelo ONG em Abuja, Nigria, em Novembro
2003. Foi um dos principais colaboradores na elaborao do relatrio final sobre a conferncia
entregue a presidncia da Repblica Nigeriana em maio de 2004.

Autor do livro Access e VBA na Modelagem Financeira: Uma abordagem prtica.


Editora Axcel Books, 2005. www.axcel.com.br

Colaborador ativo do frum Access Avanado do site www.juliobattisti.com.br, onde divide seu
conhecimento e experincia com outros membros do espao.

Colunista dos sites www.linhadecodigo.com.br e www.ativoaccess.com.br

Autor: Robert F Martim Criado em: 1/5/2005


ltima edio: 3/6/2005
Publicado: www.juliobattisti.com.br
Contato: rm@earnconsultoria.com.br