Вы находитесь на странице: 1из 138

SUMÁRIO

MÓDULO 1 - INTRODUÇÃO A MACROS NO EXCEL

IMPORTÂNCIA DA UTILIZAÇÃO DE MACROS

3

INTRODUÇÃO A MACROS

3

COMO CRIAR MACROS?

4

GRAVADOR DE MACROS X CÓDIGO VBA

4

CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS

6

ESTRUTURA DE UMA MACRO

9

OPERAÇÕES COM MACROS

11

RENOMEAR UMA MACRO

11

ALTERANDO A TECLA DE ATALHO E A DESCRIÇÃO ASSOCIADA A

MACRO

14

EXCLUIR UMA MACRO

15

ASSOCIANDO MACROS A CONTROLES DE FORMULÁRIOS

16

ASSOCIAR A MACRO AO BOTÃO

17

MÓDULO 2 - INTRODUÇÃO AO VBA NO EXCEL

O AMBIENTE DE PROGRAMAÇÃO (EDITOR VBA)

20

PROJETO – VBA PROJECT E JANELA DE PROPRIEDADES

20

PESQUISADOR DE OBJETO

22

MÓDULO 3 – VARIÁVEIS

DECLARAÇÃO DE VARIÁVEIS

26

OPTION EXPLICIT

26

TIPOS DE VARIÁVEIS

27

SUBTIPOS DO TIPO VARIANT

28

OPERADORES ARITMÉTICOS

29

OPERADOR DE ATRIBUIÇÃO

29

OPERADORES RELACIONAIS

30

EXERCÍCIO 1

30

VARIÁVEIS - ARRAYS

34

ARRAY UNIDIMENSIONAL

34

ARRAY BIDIMENSIONAL

34

DECLARAÇÃO DE ARRAYS

35

EXERCÍCIO 1

36

EXERCÍCIO 1

39

ESCOPO OU DOMÍNIO DAS VARIÁVEIS

41

ESCOPO DE PROCEDIMENTO/FUNÇÃO

41

ESCOPO DE MÓDULO

43

ESCOPO DE PROJETO

45

MÓDULO 4 – SUB-ROTINAS E FUNÇÕES

SUB-ROTINAS

47

EXERCICIO

49

FUNÇÕES

50

EXECUTANDO A FUNÇÃO CRIADA, NO EXCEL

53

MÓDULO 5 – FUNÇÕES INTERNAS DO VBA

FUNÇÕES DE TIPO

55

FUNÇÕES PARA TRATAMENTO DE TEXTO

56

FUNÇÕES DE DATA E HORA

60

OUTRAS FUNÇÕES ÚTEIS

71

EXERCÍCIO 1

72

MÓDULO 6 – TRATAMENTO DE ERROS

EXERCÍCIO 1

 

76

MÓDULO 7 – ESTRUTURAS DE CONTROLE

A ESTRUTURA IF

THEN

78

A ESTRUTURA IF

THEN

ELSE

79

A ESTRUTURA IF

THEN

ELSEIF

81

EXERCICIO 1

 

83

A

ESTRUTURA FOR

NEXT

84

EXERCICIO

85

A

ESTRUTURA DO

LOOP

86

EXERCICIO 1

94

REVISÃO 1

95

REVISÃO 2

96

REVISÃO 3

99

MÓDULO 8 – MSGBOX E INPUTBOX

A FUNÇÃO MSGBOX

 

100

A FUNÇÃO INPUTBOX

 

105

EXERCÍCIO

 

109

MÓDULO 9 – MODELOS DE OBJETOS DO EXCEL

PROPRIEDADES, MÉTODOS, EVENTOS E COLEÇÕES DOS OBJETOS111

DESCRIÇÃO DOS PRINCIPAIS OBJETOS DO EXCEL

112

UTILIZAÇÃO DOS PRINCIPAIS OBJETOS DO EXCEL

121

MÓDULO 10 – FORMULÁRIOS NO VBA (USERFORMS)

INTRODUÇÃO SOBRE FORMULÁRIOS

123

CRIANDO UM USERFORM

124

CAIXA DE FERRAMENTAS

125

JANELA DE PROPRIEDADES

125

PROPRIEDADES DOS CONTROLES

126

CONTROLES DE FORMULÁRIOS

130

PROJETO FINAL

138

MÓDULO 1 - INTRODUÇÃO A MACROS NO EXCEL

Neste módulo veremos os principais fundamentos sobre Macros. Conheceremos exatamente o que é uma macro, como esta definida a sua estrutura e aprenderemos a realizar algumas operações. Os conceitos vistos neste módulo, serão de extrema importância para o entendimento dos demais módulos.

IMPORTÂNCIA DA UTILIZAÇÃO DE MACROS

Em determinados problemas, que surgem durante a criação das planilhas em Excel, não conseguimos resolvê-los simplesmente utilizando os comandos e fórmulas do Excel.

Nessas situações temos que fazer uso de recursos como Macros e Programação. A linguagem de programação do Excel é o VBA – Visual Basic for Applications. O VBA é a linguagem de programação para todos os aplicativos do Microsoft Office como: Word, Excel, Access e PowerPoint.

INTRODUÇÃO A MACROS

Se caso surgir uma necessidade de se executar uma tarefa várias vezes no Microsoft Excel, ao invés de perder tempo executando-as diversas vezes, podemos automatizar esta tarefa simplesmente com a criação de uma macro.

Macro é uma seqüência de comandos ou funções armazenados em um código VBA, que pode ser executado sempre que se precisar executar a tarefa.

As macros são uma excelente opção para automatizar tarefas repetitivas. Com o uso de macros temos um ganho de produtividade considerável, ao evitar que tenhamos que executar manualmente, os diversos passos de uma tarefa, passos estes que podem ser automatizados através do uso de uma macro.

COMO CRIAR MACROS?

Existem duas maneiras possíveis para a criação de uma macro:

Gravador de Macros – Destinado a iniciantes em criação de Macros.

Código VBA – Destinado a profissionais que possuem uma boa lógica de programação e que dominam a linguagem VBA.

GRAVADOR DE MACROS X CÓDIGO VBA

No método de gravação, o Excel grava cada uma das ações que farão parte da macro e transforma estas ações nos comandos VBA equivalentes. Quando a macro for executada, os comandos VBA é que serão efetivamente executados. Cada comando VBA corresponde a uma ação efetiva da macro.

Por exemplo, vamos supor que por diversas vezes, você precisa formatar uma determinada célula com Negrito, Itálico, cor de fonte Verde, Fonte Arial com Tamanho 16. Ao invés de ter que executar todos os comandos de formatação sempre que precisar deles, você pode criar uma macro que aplica todos os comando de formatação. Após criada a macro, cada vez que você precisar aplicar o conjunto de comandos de formatação, basta executar a macro, bem mais fácil do que aplicar cada comando individualmente.

Antes de gravar uma macro, planeje muito bem as etapas e os comandos que você deseja que a macro execute. Se cometer um erro durante a gravação da macro, as correções feitas também serão gravadas como comandos da macro. Ao gravar macros, o VBA armazena cada macro em um módulo de código VBA, anexado a uma pasta de trabalho (arquivo. xls).

Depois de gravada a macro, você poderá exibir o código da macro com o Editor do VBA para corrigir erros ou alterar a função da macro. O Editor do VBA é um programa criado para facilitar a escrita e a edição do código de macro para principiantes. Você não precisa aprender a programar ou a usar a linguagem do Visual Basic para fazer alterações

simples nas suas macros. Nos próximos módulos veremos como trabalhar melhor com o Editor do VBA.

Na figura a seguir temos um exemplo de código associado a uma macro. Esse é um exemplo de código VBA:

associado a uma macro. Esse é um exemplo de código VBA: Além disso, no Editor do

Além disso, no Editor do VBA, podemos editar macros, copiar macros de um módulo para o outro, copiar marcos entre pastas de trabalho diferentes e renomear as macros. Por exemplo, se você quisesse que a macro formatar, da figura acima, também deixasse a célula formatada com sublinhado, você poderia gravar outra macro para aplicar o sublinhado e copiar as instruções dessa nova macro para a macro formatar.

CRIAR UMA MACRO USANDO O GRAVADOR DE MACROS

Iremos criar uma macro chamada FormataCelula usando o gravador de macros, onde esta macro deverá formatar a célula atual com Negrito, cor de fonte Verde e com cor de plano de fundo cinza.

Para isso, proceda da seguinte maneira:

1. Abra o arquivo Exercício 1.xls, localizado na pasta da turma.

2. Clique a célula B5.

3. Clique o menu Ferramentas.

4. Selecione a opção Macros, clique a opção Gravar nova macro

Sugira assim a tela Gravar macro:

Gravar nova macro Sugira assim a tela Gravar macro : 5. No campo Nome da macro,

5. No campo Nome da macro, digite FormataCelula.

6. No campo Tecla de atalho, digite L.

FormataCelula. 6. No campo Tecla de atalho, digite L. Observe que o Excel troca para Ctrl+Shift+L

Observe que o Excel troca para Ctrl+Shift+L, pois a combinação Ctrl+L já esta associada a outro comando do Excel.

em

7.

No

campo

Descrição,

digite

Formata

negrito, verde e fundo cinza.

8. Clique o botão OK.

Com isso, a gravação da macro será iniciada e todos os comandos que você executar durante a gravação da macro, farão parte da macro.

Perceba que uma nova barra de ferramentas chamada Parar

Perceba que uma nova barra de ferramentas chamada Parar Gravação surge, onde através dela podemos interromper

Gravação surge, onde através dela podemos interromper a gravação da macro.

A partir deste ponto, devemos executar todos os comandos que farão parte da macro.

9. Clique o menu Formatar.

10. Clique a opção Células.

11. Formate em Negrito, cor Verde e cor de plano de fundo cinza.

, para encerrar a gravação

12. Clique o botão Parar Gravação da macro.

Com isso, a macro FormataCelula foi criada e podemos utilizá-la sempre que for necessário.

foi criada e podemos utilizá-la sempre que for necessário. Para maneira: executar a macro FormataCelula, proceda
foi criada e podemos utilizá-la sempre que for necessário. Para maneira: executar a macro FormataCelula, proceda

Para

maneira:

executar

a

macro

FormataCelula,

proceda

da

seguinte

1. Clique a próxima célula a ser formatada, exemplo C8.

2. Pressione Ctrl+Shift+L.

A macro FormataCelula é executada e as informações definidas pela macro são automaticamente aplicadas a célula selecionada.

Uma outra maneira de executar macros é utilizando o menu Ferramentas, opção Macro, subopção Macros.

Com isso será exibida a janela Macro, onde estão listadas as macros existentes na pasta de trabalho atual, confirme visto na figura a seguir:

pasta de trabalho atual, confirme visto na figura a seguir: Nesta tela, você irá selecionar o

Nesta tela, você irá selecionar o nome da macro a ser executada e clicar sobre o botão Executar.

A macro será executada e as formatações serão aplicadas à célula que estava selecionada.

Sua planilha deverá exibir o seguinte aspecto:

e as formatações serão aplicadas à célula que estava selecionada. Sua planilha deverá exibir o seguinte

ESTRUTURA DE UMA MACRO

Na macro criada anteriormente chamada de FormataCelula, podemos perceber que ao executá-la os comandos de formatação são novamente executados e aplicados á célula onde esta o cursor ou na faixa de células selecionadas. Isto acontece porque no ato da gravação da macro o Excel gera para cada comando que efetuamos um código VBA equivalente formando assim a nossa macro.

O que iremos ver agora é justamente esta estrutura que compõem toda a nossa macro. Para acessar os comandos VBA associado a uma macro, proceda da seguinte maneira:

1. Com o arquivo já aberto, clique o menu Ferramentas.

2. Selecione a opção Macro, clique a subopção Macros.

Com isso será exibida a janela Macros.

3. Selecione a macro FormataCelula.

4. Clique o botão Editar.

Com isso o Editor do VBA será carregado e serão exibidas as linhas de código referente a nossa macro.

Estes são os comandos VBA referentes a macro FormataCelula. Caso não entenda os comandos, não
Estes são os comandos VBA referentes a macro FormataCelula. Caso não entenda os comandos, não

Estes são os comandos VBA referentes a macro FormataCelula. Caso não entenda os comandos, não se preocupe, pois ainda os estudaremos mais adiante.

A seguir esta descrito o que faz cada um dos principais comandos desta macro:

With Selection.Font

 

.Name = "Arial"

.FontStyle = "Negrito"

.Size = 10

 

.ColorIndex = 10

 

End With

 

stes

com

and

os

apli

cam a fonte Arial, o estilo Negrito, o tamanho 10 e a cor de fonte verde, para as células atualmente selecionadas.

E

E

 

With Selection.Interior

 

stes

 

.ColorIndex = 48

 

com

 

.Pattern = xlSolid

   

and

 

.PatternColorIndex = xlAutomatic

 

os

End With

 

apli

cam

a

cor

de

plano

de

fundo

cinza,

para

as

células

atualmente

selecionadas.

5. Salve e feche o Editor do VBA.

OPERAÇÕES COM MACROS

Depois de criadas as macros podemos futuramente precisar realizar algum de tipo de alteração nelas, seja em seu código ou no comando de teclado (tecla de atalho). Podemos precisar também renomeá-las e até mesmo excluí-las caso seja necessário. Todas estas ações estão ligadas às operações com macros.

RENOMEAR UMA MACRO

Esta ação deve ser realizada toda vez que se deseja modificar o nome de uma ou mais macros do arquivo.

Para poder renomear uma macro, proceda da seguinte maneira:

1. Com o arquivo aberto, clique o menu Ferramentas.

2. Selecione a opção Macro, clique a sub-opção Macros.

Será exibida a janela Macros

3. Clique a macro FormataCelula para selecioná-la. 4. Clique o botão Editar. Com isso, será

3. Clique a macro FormataCelula para selecioná-la.

4. Clique o botão Editar.

Com isso, será aberto o Editor do VBA com o código da macro, onde o nome da mesma vem após o comando Sub na primeira linha.

5. Altere o nome da macro FormataCelula para Formatar. 6. Clique o botão Salvar. 7.

5. Altere o nome da macro FormataCelula para Formatar.

6. Clique o botão Salvar.

7. Feche o Editor do VBA.

6. Clique o botão Salvar. 7. Feche o Editor do VBA. Com isso a macro foi

Com isso a macro foi renomeada, caso deseje confirmar, clique o menu ferramentas, selecione a opção macro e clique na sub-opção macros, você verá na tela que a macro agora se chama Formatar.

ALTERANDO A TECLA DE ATALHO E A DESCRIÇÃO ASSOCIADA A MACRO

Esta ação deve ser realizada caso seja necessário modificar por algum motivo a tecla de atalho que esteja associada a uma macro e o seu comentário que é de extrema importância, pois resume o funcionamento da macro.

Para fazer a alteração, proceda da seguinte maneira:

1. Com o arquivo aberto, clique o menu Ferramentas.

2. Selecione a opção Macro, clique a sub-opção Macros.

Será exibida a janela Macros.

a sub-opção Macros. Será exibida a janela Macros. 3. Clique a macro Formatar para selecioná-la. 4.

3. Clique a macro Formatar para selecioná-la.

4. Clique o botão Opções.

Com isso, será exibida a janela Opções de Macro.

Com isso, será exibida a janela Opções de Macro. Nesta tela podemos fazer a alteração da

Nesta tela podemos fazer a alteração da tecla de atalho e da descrição atribuídos à macro.

5. Na Tecla de Atalho, digite: W.

6. Na Descrição, digite: Formatação em negrito, com cor verde e plano de fundo na cor cinza.

7. Clique o botão OK.

Com isso a tecla de atalho e a descrição da macro foram alteradas.

a tecla de atalho e a descrição da macro foram alteradas. EXCLUIR UMA MACRO Esta ação

EXCLUIR UMA MACRO

Esta

ação

deverá

ser

realizada

quando

não

houver

mais

a

necessidade da utilização da macro no arquivo.

Para isto, proceda da seguinte maneira:

1. Com o arquivo aberto, clique o menu Ferramentas.

2. Selecione a opção Macro, clique a sub-opção Macros.

3.

Selecione a macro a ser excluída, no nosso caso selecione a macro Formatar.

4. Clique o botão Excluir.

Com isso irá surgir uma caixa de mensagem para confirmar a exclusão da macro.

uma caixa de mensagem para confirmar a exclusão da macro. 5. Clique o botão Sim. IMPORTANTE!

5. Clique o botão Sim.

IMPORTANTE! Caso a macro esteja associada a algum controle de formulário, por exemplo, um botão, a simples exclusão do botão NÃO EXCLUI A MACRO associado a este.confirmar a exclusão da macro. 5. Clique o botão Sim. Com isso a macro Formatar foi

Com isso a macro Formatar foi excluída do arquivo. Com isso a macro Formatar

FORMULÁRIOS

ASSOCIANDO

MACROS

A

CONTROLES

DE

A associação de uma macro a um controle de formulário deve ser feita sempre que se deseja executar uma macro de uma forma mais simples e rápida, onde ao invés de irmos no menu Ferramentas, opção Macro, sub-opção Macros, selecionar a macro desejada e clicar o botão executar, podemos apenas clicar sobre um botão e a macro associada a ele é automaticamente executada. Esta associação é importante principalmente quando a sua planilha for usada por usuários leigos em Excel, facilitando assim os seus trabalhos.

Para testar este recurso, iremos criar uma nova macro com o nome de Classificar, cuja tarefa será de classificar a tabela pelo campo Código em ordem crescente, depois inserir um botão na planilha e associá-lo a macro classificar.

Para isso, proceda da seguinte maneira:

1. Abra o arquivo Exercício 2.xls, localizado na pasta da turma.

2. Clique o menu Ferramentas.

3. Clique a opção Macro, clique a sub-opção Gravar nova macro.

Surgirá assim à tela Gravar macro.

4. Em Nome da macro, digite Classificar.

5. Clique o botão OK.

Aparecerá então, a barra de ferramentas Parar Gravação.

6. Selecione a linha de cabeçalho da tabela correspondente ao intervalo de células A1:F1.

7. Pressione as teclas SHIFT + END + , com isso toda a tabela deverá ser selecionada.

ordem

8. Classifique

a

tabela

pelo

campo

Código

em

crescente.

9. Clique a célula A1.

10. Clique o botão Parar Gravação.

ASSOCIAR A MACRO AO BOTÃO

1. Clique o menu Exibir.

2. Clique a opção Barra de Ferramentas.

3. Clique a sub-opção Formulários.

Com

isso,

Formulários.

aparecerá

a

barra

de

ferramentas

Controle

de

Formulários. aparecerá a barra de ferramentas Controle de 4. Insira na planilha o controle chamado Botão

4. Insira na planilha o controle chamado Botão.

Com isso, surgirá à tela Atribuir Macro.

Botão . Com isso, surgirá à tela Atribuir Macro . 5. Clique a macro classificar para

5. Clique a macro classificar para selecioná-la.

6. Clique o botão OK.

classificar para selecioná-la. 6. Clique o botão OK. Pronto! Com isso a macro Classificar encontra-se associada

Pronto! Com isso a macro Classificar encontra-se associada ao botão, onde um simples clique sobre este, implicará na execução das instruções que compõem a macro.

MÓDULO 2 - INTRODUÇÃO AO VBA NO EXCEL

Uma linguagem de programação, basicamente, é uma forma que o programador tem de se comunicar com a máquina, através de um conjunto de comandos, rotinas, objetos e funções que executam tarefas específicas.

Utilizar-se do código VBA para a criação das macros, oferece ao programador uma grande quantidade de opções para solucionar problemas mais complexos e que não podem ser somente resolvidos com o uso de comandos e funções internas do Excel.

A linguagem de programação utilizada no Microsoft Excel é o VBA – Visual Basic for Applications. Com o VBA é possível que o programador tenha acesso completo a todos os objetos de uma planilha do Excel.

Fazer uso do VBA em planilhas do Excel, garante ao programador algumas vantagens como:

Acessar dados de uma ou mais planilhas;

Manipular objetos;

Criar funções definidas pelo usuário, onde este é sem dúvida um dos maiores benefícios do VBA.

Definir condições e controlar o fluxo de dados através de estruturas para a realização de testes condicionais e para a repetição de um conjunto de comandos;

Realizar cálculos complexos e solucionar problemas que envolvam uma lógica complexa.

O AMBIENTE DE PROGRAMAÇÃO (EDITOR VBA)

O Microsoft Excel nos oferece um ambiente de programação bastante poderoso, com uma série de recursos que facilitam a criação do código VBA. Dentro deste ambiente, são oferecidas uma série de facilidades e dicas para que o programador possa encontrar facilmente os objetos disponíveis.

Para conhecermos melhor o Editor VBA temos na figura abaixo um exemplo de uma macro chamada AplicaNegrito.

abaixo um exemplo de uma macro chamada AplicaNegrito . PROJETO – VBA PROJECT E JANELA DE

PROJETO – VBA PROJECT E JANELA DE PROPRIEDADES

Dentro do Editor VBA no lado esquerdo, temos duas janelas que são de extrema importância, a janela do projeto o VBA Project e a Janela de Propriedades.

VBA Project – Nesta janela são exibidos os vários elementos que fazem parte da Pasta de trabalho atual, onde são exibidas as planilhas e módulos.

Ao criar uma macro, podemos cria-la em uma determinada planilha, mas esta somente poderá ser

Ao criar uma macro, podemos cria-la em uma determinada planilha, mas esta somente poderá ser utilizada dentro da planilha onde ela foi criada, caso deseje criar uma macro que possa ser trabalha em qualquer uma das planilhas do arquivo, esta deverá ser criada em um dos módulos existentes.

Podemos dentro de uma pasta de trabalho possuir diversos módulos, principalmente quando se tem planilhas complexas, daí podemos dividir estes módulos em categorias como, por exemplo: criar um módulo somente para a criação de funções para cálculo de data, outro para funções de validação de dados, outro para funções de cálculos financeiros e assim por diante. Esta divisão facilita a localização, manutenção e alteração das funções e códigos existentes.

objeto

selecionado na janela VBA Project.

Por exemplo, ao selecionar Plan1, na janela VBA Project, na janela propriedades serão exibidas as propriedades de Plan1.

Janela

de

Propriedades

Exibe

as

propriedades

do

Plan1. Janela de Propriedades – Exibe as propriedades do PESQUISADOR DE OBJETO O Editor do VBA

PESQUISADOR DE OBJETO

O Editor do VBA facilita muito o trabalho do programador na manipulação de um objeto pois possui uma janela que exibe uma listagem de todas as bibliotecas disponíveis, bem como a lista de cada objeto de cada biblioteca, juntamente com todas as suas propriedades e métodos, esta janela é chamada de Pesquisador de Objeto.

Para exibi-la proceda da seguinte maneira:

1. Dentro do Editor VBA, clique o menu Exibir.

2. Clique a opção Pesquisador de Objeto.

Com isso, irá surgir a janela do Pesquisador de Objeto.

Com isso, irá surgir a janela do P esquisador de Objeto . Na lista Todas as

Na lista Todas as Bibliotecas, podemos selecionar uma biblioteca específica, para que o pesquisador mostre somente os objetos da biblioteca selecionada.

Por exemplo, selecione a biblioteca Excel, na lista de objetos do lado esquerdo selecione o objeto Range, com isso do lado direito do painel será exibida uma lista com os métodos e propriedades do objeto Range.

Além do Pesquisador de Objeto, o Excel oferece um outro recurso para localizar um método

Além do Pesquisador de Objeto, o Excel oferece um outro recurso para localizar um método ou propriedade de um objeto, este recurso se dá no momento da digitação do código onde após digitar o nome do objeto sucedido de um ponto, surgirá automaticamente uma lista com estes métodos e propriedades.

automaticamente uma lista com estes métodos e propriedades. Pronto! Com isso aprendemos algumas noções básicas sobre
automaticamente uma lista com estes métodos e propriedades. Pronto! Com isso aprendemos algumas noções básicas sobre

Pronto! Com isso aprendemos algumas noções básicas sobre o Editor do VBA.

MÓDULO 3 – VARIÁVEIS

Uma variável é um espaço criado na memória do computador durante a execução de um programa, utilizado para armazenar um ou

mais valores. Estes espaços são referenciados pelo programador através

da

atribuição de nomes, ou seja, atribuímos nomes as variáveis utilizadas

no

programa.

Elas possuem esta nomenclatura, pelo fato de poder ter o seu conteúdo modificado durante a execução do programa, daí o nome Variáveis.

O programador antes de utilizar a variável dentro do código, deve primeiramente declará-la, ou seja, nas linhas iniciais do código deve-se definir o nome de todas as variáveis que serão utilizadas, bem como o conteúdo que será armazenado nesta, a esta definição damos o nome de Tipos de Dados.

Tipos de Dados é basicamente determinar para o programa qual o tipo do conteúdo que a variável irá armazenar, por exemplo: podemos definir que uma variável irá armazenar somente valores inteiros numa faixa de 0 a 250, ou podemos também definir que a variável irá armazenar caracteres de texto de tamanho variável ou ainda definir que

a variável poderá armazenar números com casas decimais. Esta

definição do tipo de dados da variável é extremamente importante, pois economizamos espaço na memória do computador.

Esta economia de espaço na memória através da definição do tipo

de dados mais adequado para uma variável se da pelo fato de que cada

tipo de dados ocupa um determinado espaço em memória, por exemplo:

uma variável do tipo de dados que armazena números inteiros ocupa na memória menos espaço que uma variável do tipo de dados que armazena caracteres de texto.

No VBA, não é obrigatório à declaração de variáveis. Porém é recomendável que as declaremos, para a economia de espaço mencionada anteriormente e também para que o código fique mais claro e de fácil compreensão.

DECLARAÇÃO DE VARIÁVEIS

Para a declaração de uma variável devemos sempre utilizar o comando Dim, que vem do termo Dimensão, seguido do nome da variável, conforme exemplo:

Dim x

Dim nome

Dim idade

Neste exemplo, estamos apenas declarando o nome da variável, sem declarar de que tipo (texto, número inteiro, data, decimal, etc.) é a variável. Deste modo a sintaxe completa de declaração de variáveis é a seguinte:

Dim nome_da_variável As tipo_da_variável

Podemos também em um único comando Dim, declarar mais que uma variável, sendo estas do mesmo tipo de dados, por exemplo:

Dim idade, quantidade As tipo_da_variável

Dim nome, produto, codigo As tipo_da_variável.

OPTION EXPLICIT

Embora a declaração de variáveis seja importante, também podemos utilizar variáveis que não foram, explicitamente, declaradas com o comando Dim. Com isso, a variável é criada na memória, no momento da sua utilização. Mas se desejar que toda variável tenha que estar declarada para poder ser utilizada, basta utilizar o comando Option Explicit na seção de declaração do módulo.

Ao definirmos este comando na seção de declaração do módulo, estamos definindo que toda variável deve ser declarada, antes de ser utilizada. Caso se utilize de uma variável não declarada, será gerado um erro de compilação e a execução dos comandos é interrompida.

Abaixo

temos

um exemplo de variáveis não explicitamente

declaradas:

Dim num1, num2 As tipo_da_variável

Soma = num1 + num2

Ao tentarmos executar este código, estando definido o comando Option Explicit, iremos obter uma mensagem de erro, pois utilizamos a variável soma que não foi declarada, conforme a figura abaixo:

soma que não foi declarada, conforme a figura abaixo: TIPOS DE VARIÁVEIS O tipo de uma

TIPOS DE VARIÁVEIS

O tipo de uma variável serve para determinar na memória o espaço que será alocado para armazenar uma informação.

O tipo de variável padrão do VBA é o tipo Variant, que é formado por pequenas unidades, chamadas de subtipos, onde cada subtipo identifica de que maneira os dados serão armazenados em uma variável do tipo Variant.

Não é indicado utilizar-se de variáveis com o tipo Variant, pois daí será difícil restringir ao usuário o tipo da informação que será armazenada, exemplo: Desejo que o usuário digite apenas números inteiros. Caso a variável que receberá este número tenha sido declara com o tipo Variant, o usuário poderá então digitar qualquer outra informação que não seja um número inteiro.

com o tipo Variant, o usuário poderá então digitar qualquer outra informação que não seja um

SUBTIPOS DO TIPO VARIANT

Subtipo

 

Significado

 

Tamanho

Empty

Valor zero para variáveis numéricas ou String de tamanho (“”), para variáveis de texto.

 

-

Boolean

Variáveis que só podem assumir dois valores: Verdadeiro ou Falso (True or False).

2

Bytes

Byte

Valor Inteiro, na faixa de 0 a 255.

 

1 Byte

 

Valor Inteiro,

na

faixa de -32768

a

 

Integer

32767.

2

Bytes

 

Valor

real

na

faixa

de

-

 

Currency

923.337.203.685.447,5808

até

8

Bytes

923.337.203.685.447,5807.

   
 

Valor

real

na

faixa

de

 

Double

1.79769313486232E308

até

8

Bytes

4.94065645841247E-324.

 
 

Valor Inteiro,

na

faixa

de

-

 

Long

2.147.483.648 até 2.147.483.647.

4

Bytes

Date

Número que representa a data entre 01 de janeiro do ano 100, até 31 de dezembro de 9999.

 

(Time)

8

Bytes

String

Texto de tamanho variável, pode conter, aproximadamente, 2 bilhões de caracteres.

1 Byte por caractere

Object

Pode conter um objeto qualquer, como Controle ActiveX.

4

Bytes

OPERADORES ARITMÉTICOS

Para podermos realizar cálculos entre as variáveis, devemos utilizar operadores.

aritméticos

disponíveis:

Abaixo

segue

uma

tabela

com

os

operadores

Operador

Símbolo

 

Descrição

 

Adição

+

Soma o valor das variáveis.

 

Subtração

-

Subtrai o valor das variáveis.

 

Multiplicação

*

Multiplica o valor das variáveis.

 

Divisão

/

Divide o valor das variáveis.

 

Inteiro da divisão entre 2 números

 

Parte

inteira

da

divisão

das

\

variáveis.

 

Exponenciação

^

x^y – número x elevado a potência

y.

Módulo

Mod

Resto da divisão de 2 números.

 

OPERADOR DE ATRIBUIÇÃO

Quando pretendemos atribuir valores as variáveis, devemos indicar o nome da variável, seguido do operador (=) e o valor a ser armazenado na variável.

Como exemplo observe o código a seguir:

Nome = “Fábio Abreu”

Qtd = 86

No código acima a variável Nome esta armazenando o texto “Fábio Abreu” e a variável Qtd esta guardando o número 86.

OPERADORES RELACIONAIS

Para podermos estabelecer relações entre as variáveis, devemos utilizar operadores.

Abaixo

segue

uma

tabela

com

os

operadores

relacionais

disponíveis:

Operador

Símbolo

Maior

>

Menor

<

Maior ou Igual

>=

Menor ou Igual

<=

Diferente

<>

Igual

=

EXERCÍCIO 1

Para utilizarmos os conceitos vistos até aqui, proceda da seguinte maneira:

1. Abra o arquivo Exercício 3.xls, localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Abra o módulo chamado Módulo1.

Com isso, irá aparecer uma macro chamada calcular.

Com isso, irá aparecer uma macro chamada calcular. Dentro desta macro, digite o seguinte código:

Dentro desta macro, digite o seguinte código:

Com isso, irá aparecer uma macro chamada calcular. Dentro desta macro, digite o seguinte código:

4.

Depois de digitado o código aperte a tecla de atalho F5, para executar a macro.

Será exibida uma caixa de mensagem:

para executar a macro. Será exibida uma caixa de mensagem: 5. Clique em OK . Será

5. Clique em OK.

Será exibida uma caixa de mensagem:

5. Clique em OK . Será exibida uma caixa de mensagem: 6. Clique em OK .

6. Clique em OK.

Será exibida uma caixa de mensagem:

mensagem: 6. Clique em OK . Será exibida uma caixa de mensagem: 7. Clique em OK

7. Clique em OK.

Será exibida uma caixa de mensagem:

8. Clique em OK . Será exibida uma caixa de mensagem: 9. Clique em OK

8. Clique em OK.

Será exibida uma caixa de mensagem:

8. Clique em OK . Será exibida uma caixa de mensagem: 9. Clique em OK .

9. Clique em OK.

Será exibida uma caixa de mensagem:

9. Clique em OK . Será exibida uma caixa de mensagem: 10. Clique em OK .

10. Clique em OK.

Será exibida uma caixa de mensagem:

10. Clique em OK . Será exibida uma caixa de mensagem: Neste exercício, utilizamos operadores aritméticos

Neste exercício, utilizamos operadores aritméticos para realizar operações com os valores das variáveis “num1” e “num2”.

Além disso, fizemos uso de uma função chamada Msgbox, que exibe mensagens em uma pequena janela, chamada de Pop-Up e utilizamos também o operador de concatenação (&).

VARIÁVEIS - ARRAYS

Uma variável que representa um conjunto de variáveis do mesmo

tipo.

Um array pode ser unidimensional ou bidimensional.

ARRAY UNIDIMENSIONAL

Constituído por uma única lista de elementos indexáveis, onde possuímos um elemento inicial e outro elemento final, sendo que cada elemento da lista corresponde a um único índice.

que cada elemento da lista corresponde a um único índice. 0 1 2 3 4 5

0

1

2

3

4

5

ARRAY BIDIMENSIONAL

Um pouco mais complexo que o unidimensional, é constituído por um conjunto de listas do mesmo comprimento, sendo que este formato é normalmente conhecido como array ou matriz.

Constituído, portanto de linhas e colunas, onde cada elemento é identificado por um índice composto pela interseção dos números das linhas e colunas.

0

1

2

0

1

2

3

dos números das linhas e colunas. 0 1 2 0 1 2 3 Note que o

Note que o primeiro elemento de qualquer array sempre possuí índice 0.

DECLARAÇÃO DE ARRAYS

A declaração de um array é semelhante a declaração de uma variável comum, com exceção de um índice que identifica quantas linhas e colunas este array deve possuir.

Em um array unidimensional, como temos apenas uma única lista correspondente a quantidade de elementos que a variável deve armazenar a sintaxe se dá da seguinte maneira:

Dim nome_array (índice) As tipo_da_variável

Onde, índice representa o número de elementos que farão parte do array, exemplo:

Dim ArrayNumerico(10) As Integer

Na declaração do array anterior, estamos declarando que o array terá 10 posições ou 10 elementos, do mesmo tipo Integer.

Com isso, ao invés de declararmos 10 variáveis, temos apenas uma, tornando assim o código mais legível e simples.

ArrayNumerico

0

1

2

3

4

5

6

7

8

9

Em que cada elemento é do tipo Integer.

Já em um array bidimensional, como a variável é composta por diversas listas correspondente a quantidade de elementos que esta deve armazenar a sintaxe se dá da seguinte maneira:

Dim nome_array (índice) As tipo_da_variável

Onde, índice representa o número de linhas e colunas que farão parte do array, exemplo:

Dim TabelaTextual (5, 4 ) As String

Na declaração do array anterior, estamos declarando que o array terá 5 linhas e 4 colunas, podendo assim armazenar 20 elementos, do mesmo tipo String.

Com isso, ao invés de declararmos 20 variáveis, temos apenas uma, tornando assim o código mais legível e simples.

TabelaTextual

0 1 2 3 0 1 2 3 4
0
1
2
3
0
1
2
3
4

Em que cada elemento é do tipo String.

EXERCÍCIO 1

1. Abra o arquivo Exercício 4.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Abra o módulo chamado Módulo1.

Com isso, irá aparecer uma macro chamada arrayuni.

Com isso, irá aparecer uma macro chamada arrayuni. Dentro desta macro, digite o seguinte código:

Dentro desta macro, digite o seguinte código:

Com isso, irá aparecer uma macro chamada arrayuni. Dentro desta macro, digite o seguinte código:

4.

Depois de digitado o código aperte a tecla de atalho F5, para executar a macro.

Será exibida uma caixa de mensagem:

para executar a macro. Será exibida uma caixa de mensagem: 5. Clique em OK . Será

5. Clique em OK.

Será exibida uma caixa de mensagem:

5. Clique em OK . Será exibida uma caixa de mensagem: 6. Clique em OK .

6. Clique em OK.

Será exibida uma caixa de mensagem:

mensagem: 6. Clique em OK . Será exibida uma caixa de mensagem: 7. Clique em OK

7. Clique em OK.

Será exibida uma caixa de mensagem:

Neste exercício, utilizamos um array unidimensional de 4 elementos para armazenar nomes dos alunos e

Neste exercício, utilizamos um array unidimensional de 4 elementos para armazenar nomes dos alunos e mostra-los na tela através da função msgbox.

EXERCÍCIO 1

1. Abra o arquivo Exercício 4.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Abra o módulo chamado Módulo2.

Com isso, irá aparecer uma macro chamada arraybi.

2. Abra o Editor do VBA . 3. Abra o módulo chamado Módulo2 . Com isso,

Dentro desta macro, digite o seguinte código:

Dentro desta macro, digite o seguinte código: 4. Depois de digitado o código aperte a tecla

4. Depois de digitado o código aperte a tecla de atalho F5, para executar a macro.

Será exibida uma caixa de mensagem:

F5, para executar a macro. Será exibida uma caixa de mensagem: 5. Clique em OK .

5. Clique em OK.

Será exibida uma caixa de mensagem:

F5, para executar a macro. Será exibida uma caixa de mensagem: 5. Clique em OK .

Neste exercício, utilizamos um array bidimensional com 2 linhas e 2 colunas totalizando assim 4 elementos para armazenar nomes e médias dos alunos e mostra-los na tela através da função msgbox.

Além disso, fizemos uso no código de uma função chamada Chr(número). Esta função envia como resultado para a função msgbox o caractere correspondente ao número digitado entre parênteses. Este número, é o número do caractere no padrão ASCll (American Standard Caracter Interchange Information).

No código ASCII, cada caractere possui um número associado, no caso do número 13, este se encontra associado ao <ENTER>, o que equivale a uma troca de linha. Assim utilizamos o Chr(13) para simular um <ENTER>, de tal maneira que os dados não apareçam todos “grudados” na mesma linha.

ESCOPO OU DOMÍNIO DAS VARIÁVEIS

O Escopo ou domínio de uma variável define a área de aplicação na qual a variável pode ser utilizada, ou seja, em qual área ela pode ser acessada.

Existem 3 níveis de escopo para as variáveis:

Escopo de Procedimento/Função

Escopo de Módulo

Escopo de Projeto

ESCOPO DE PROCEDIMENTO/FUNÇÃO

É uma variável que foi inicialmente declarada dentro de um procedimento ou função, sendo que esta variável somente pode ser utilizada dentro deste procedimento ou função. São variáveis criadas no momento da execução do procedimento ou função e destruídas automaticamente ao término da execução do procedimento ou função. Assim sendo, qualquer tentativa de se acessar uma variável dentro de um procedimento que foi declarada no corpo de um outro procedimento, esta não terá êxito.

Para melhor entendermos a utilização das variáveis com escopo de procedimento/função, proceda da seguinte maneira:

1. Abra uma nova pasta de trabalho.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

um novo módulo e dentro dele, digite o código a seguir: 4. Execute a sub-rotina proc1

4. Execute a sub-rotina proc1.

Com isso irá surgir uma caixa de mensagem com o valor da variável

var.

surgir uma caixa de mensagem com o valor da variável var. 5. Clique o botão OK.

5. Clique o botão OK.

Em seguida, surgirá uma nova caixa de mensagem em branco.

Neste exemplo, dentro do procedimento proc1, declaramos uma variável do tipo Integer chamada var, e

Neste exemplo, dentro do procedimento proc1, declaramos uma variável do tipo Integer chamada var, e atribuímos a ela o valor 5. Logo em seguida mostramos o valor desta variável na tela usando a função msgbox. Depois, ainda no procedimento proc1, chamamos o procedimento proc2 que também mostra o valor da variável var1 na tela através da função msgbox, mas perceba que na segunda caixa de mensagem o valor da variável não aparece, ou seja, a variável não contém valor. Isso acontece pelo fato da variável esta declarada dentro do procedimento proc1.

ESCOPO DE MÓDULO

É uma variável que foi inicialmente declarada na seção de declarações do módulo, fora de qualquer procedimento. Com isso a variável pode ser utilizada dentro de todos os procedimentos e funções existentes dentro do módulo.

Para melhor entendermos a utilização das variáveis com escopo de módulo, proceda da seguinte maneira:

1. Abra uma nova pasta de trabalho.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

4. Execute a sub-rotina proc1 . Com isso irá surgir uma caixa de mensagem com

4. Execute a sub-rotina proc1.

Com isso irá surgir uma caixa de mensagem com o valor da variável

var.

surgir uma caixa de mensagem com o valor da variável var. 5. Clique o botão OK.

5. Clique o botão OK.

Em seguida, surgirá uma nova caixa de mensagem novamente com o valor da variável var.

var. 5. Clique o botão OK. Em seguida, surgirá uma nova caixa de mensagem novamente com

Neste exemplo, dentro seção de declaração do módulo, declaramos uma variável do tipo Integer chamada var. Dentro do procedimento proc1 atribuímos a variável o valor 5. Logo em seguida mostramos o valor desta variável na tela usando a função msgbox. Depois, ainda no procedimento proc1, chamamos o procedimento proc2 que também mostra o valor da variável var1 na tela através da função msgbox. Perceba com isso que tanto no proc1 quanto no proc2, conseguimos ter acesso ao valor da variável var, justamente pelo fato de esta ser de escopo modular.

ESCOPO DE PROJETO

É uma variável que foi inicialmente declarada na seção de declarações do módulo, fora de qualquer procedimento, muito parecido com a declaração das variáveis de escopo modular com a diferença que antes do nome da variável deve-se utilizar a palavra chave Public. Com isso a variável pode ser utilizada dentro de qualquer módulo da pasta de trabalho, ou seja, do projeto.

Para melhor entendermos a utilização das variáveis com escopo de projeto, proceda da seguinte maneira:

1. Abra uma nova pasta de trabalho.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

um novo módulo e dentro dele, digite o código a seguir: 4. Em seguida, insira um

4. Em seguida, insira um novo módulo, digitando o seguinte código:

5. Retorne ao módulo anterior e execute o procedimento proc1 . Com isso irá surgir

5. Retorne ao módulo anterior e execute o procedimento proc1.

Com isso irá surgir uma caixa de mensagem com o valor da variável

var.

surgir uma caixa de mensagem com o valor da variável var. 6. Clique o botão OK.

6. Clique o botão OK.

Em seguida, surgirá uma nova caixa de mensagem com o novo valor da variável var.

nova caixa de mensagem com o novo valor da variável var . Pronto! Com isso aprendemos
nova caixa de mensagem com o novo valor da variável var . Pronto! Com isso aprendemos

Pronto! Com isso aprendemos sobre a declaração, utilização e escopo de variáveis.

MÓDULO 4 – SUB-ROTINAS E FUNÇÕES

Como visto em módulos anteriores, quando se grava uma macro no Excel, este tem um comportamento em background que realiza a respectiva codificação para Visual Basic for Applications, onde cada macro criada dá origem a um procedimento ou rotina.

Existem dois tipos de rotinas:

1. Sub-rotinas ou rotinas Sub.

2. Funções.

SUB-ROTINAS

Um grupo de comandos que podem ser executados, através da chamada do nome da sub-rotina, cuja definição é delimitada pelas palavras-chave Sub e End Sub.

As sub-rotinas podem possuir ou não argumentos, que são valores

passados para a sub-rotina, os quais serão utilizados internamente para

a realização de cálculos, por exemplo, se você vai criar um sub-rotina

para cálculo do desconto do cliente com base no seu valor de compra, você poderia definir um argumento para esta sub-rotina que irá informá-la

o salário do cliente.

Para criação de uma sub-rotina, devemos seguir a seguinte sintaxe:

Sub <nome_da_sub-rotina> (<lista_de_argumentos>)

<bloco_de_comandos>

End Sub

<bloco_de_comandos> End Sub Na <lista_de_argumentos> , cada argumento que

Na <lista_de_argumentos>, cada argumento que compor esta sub-rotina, deve estar associado a um tipo de dados, caso essa informação seja omitida, será considerado o tipo default para o argumento, no caso Variant.

As sub-rotinas são designadas pelo nome que lhe atribuímos, onde este nome pode ser qualquer, desde que não contenham espaços, nem comecem por caracteres numéricos.

Como visto anteriormente, as sub-rotinas podem ou não conter argumentos. Caso sejam necessários, estes devem ser passados quando a sub-rotina for chamada e devem estar na mesma ordem em que foram definidos.

Para ter a noção do que são parâmetros lembre-se do funcionamento das funções do Excel, que para executarem determinada função necessitam de receber parâmetros que colocamos entre parênteses separados por vírgulas.chamada e devem estar na mesma ordem em que foram definidos. Quando criar sub-rotinas, procure utilizar

Quando criar sub-rotinas, procure utilizar nomes que descrevem a função da sub-rotina. Com isso tornamos o código mais fácil de ser entendido.que colocamos entre parênteses separados por vírgulas. Uma vez criada a sub-rotina, sempre que fomos chamá-la

Uma vez criada a sub-rotina, sempre que fomos chamá-la dentro de um código, devemos digitar o nome da sub-rotina precedido da palavra Call.

Para melhor entendermos o funcionamento de uma sub-rotina, vamos ao um exemplo prático:

1. Abra uma nova pasta de trabalho.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

4. Execute o procedimento proc1. Com isso, surgirá na tela a seguinte caixa de mensagem:

4. Execute o procedimento proc1.

Com isso, surgirá na tela a seguinte caixa de mensagem:

Com isso, surgirá na tela a seguinte caixa de mensagem: No exemplo anterior, temos dois procedimentos,

No exemplo anterior, temos dois procedimentos, o primeiro chamado de proc1, onde temos duas variáveis declaradas. Em seguida, atribuímos valores a estas variáveis e as passamos como argumentos para o procedimento concatena, que esta declarada logo abaixo. No procedimento concatena, pegamos os valores das duas variáveis e mostramos na tela usando a função msgbox,

EXERCICIO

Em uma nova pasta de trabalho, abra o Editor do VBA e crie dois procedimentos:

Calcula_Desc: Este procedimento deverá receber como parâmetro, duas variáveis do tipo Currency chamadas respectivamente de Salario

1.

e Desconto. Dentro do procedimento devera ser declarada uma variável local do tipo Currency chamada Sal_Final, esta variável devera receber o valor do salário com desconto. Em seguida o valor da variável Sal_final deve ser mostrado na tela.

Proc1: Neste procedimento deve-se declarar duas variáveis locais do tipo Currency chamadas respectivamente de Salario e Desconto. Em seguida, atribua um valor qualquer a variável Salario, exemplo (2000), e outro valor a variável Desconto, exemplo (0.1) e passe estas duas variáveis como parâmetro para a função Calcula_Desc.

2. Por fim execute a função Proc1.

Calcula_Desc . 2. Por fim execute a função Proc1 . Com isso deverá ser exibida na

Com isso deverá ser exibida na tela uma caixa de mensagem informando o salário já descontado.

FUNÇÕES

Um grupo de comandos que podem ser executados, através da chamada do nome da função, cuja definição é delimitada pelas palavras- chave Function e End Function.

Toda função é identificada pelo nome, pelo número e tipo de parâmetros recebidos, e tem como objetivo executar um conjunto de instruções e produzir um valor final. Isto é, toda vez que se executar uma função, esta sempre produzirá um valor. Recorde-se como exemplo a função SUM, esta recebe por parâmetro um conjunto de valores que se pretende somar e sabe-se que o resultado da aplicação dessa função ao conjunto de valores será o respectivo somatório.

As funções podem ou não conter argumentos. Caso sejam necessários, estes devem ser passados quando a função for chamada e devem estar na mesma ordem em que foram definidos.

Para definir o valor produzido por uma função basta no seu interior, atribuir ao nome da função um determinado valor ou expressão.

Quando criar funções, procure utilizar nomes que descrevem a função da sub-rotina. Com isso tornamos o código mais fácil de ser entendido.CUIDADO! Não confundir Sub-rotina com função. Apesar de suas sintaxes serem parecidas, uma função sempre

CUIDADO! Não confundir Sub-rotina com função. Apesar de suas sintaxes serem parecidas, uma função sempre retorna um ou mais valores para o comando que a chamou.CUIDADO!

Para criação de uma função, devemos seguir a seguinte sintaxe:

Sub <nome_da_função> (<lista_de_argumentos>) As <Tipo>

<bloco_de_comandos>

End Function

Observe que além da <lista_de_argumentos>, onde cada argumento que compor esta função deve estar associado a um tipo de dados, temos também um Observe que além da <lista_de_argumentos> <tipo> . Este <tipo> esta associado à função e serve <tipo>. Este <tipo> esta associado à função e serve para especificar o tipo de dados que a função irá retornar, caso esteja omitido, será considerado o tipo default, no caso Variant.

Considere o exemplo a seguir:

default, no caso Variant . Considere o exemplo a seguir: No exemplo anterior, declaramos uma função

No exemplo anterior, declaramos uma função chamada converte_dolar, que espera receber dois argumentos do tipo Currency (valor_real, cotação_dolar) e definimos também que a função irá retornar um valor do mesmo tipo Currency.

No momento em que formos chamar esta função em algum código, devemos utilizar o operador de atribuição, isto é, o valor que a função irá retornar, deve ser atribuído a uma variável, ou exibido na tela através da função msgbox.

No próximo exemplo, estamos atribuindo a variável valor_dolar, o valor retornado pela função converte_dolar.

, o valor retornado pela função converte_dolar. Ao invés de atribuir o valor de retorno da

Ao invés de atribuir o valor de retorno da função a uma variável, poderíamos exibi-lo na tela usando a função msgbox.

poderíamos exibi-lo na tela usando a função msgbox . Para melhor entendermos o funcionamento de uma

Para melhor entendermos o funcionamento de uma função, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 6.xls localizado na pasta da turma.

o arquivo Exercício 6.xls localizado na pasta da turma. 2. Abra o Editor do VBA .

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

o Editor do VBA . 3. Insira um novo módulo e dentro dele, digite o código

4. Salve e feche o Editor do VBA.

Com isso, sua função já esta pronta. Vamos agora testá-la em uma célula dentro do

Com isso, sua função já esta pronta. Vamos agora testá-la em uma célula dentro do Excel.

EXECUTANDO A FUNÇÃO CRIADA, NO EXCEL

Para utilizar a função criada no VBA, dentro de uma célula em uma das planilhas do Excel, proceda da seguinte maneira:

1. Selecione a célula D4.

2. Clique o menu Inserir.

3. Clique a sub-opção Função.

Com isso, surgirá à janela Inserir Função.

Função. Com isso, surgirá à janela Inserir Função. 4. Selecione a categoria Definida pelo usuário .

4. Selecione a categoria Definida pelo usuário.

5. Selecione o nome da função calcula_desconto.

6. Clique o botão OK.

Com isso, surgirá a tela Argumentos da função.

7. No campo Salário, digite B4. 8. No campo Desconto, digite C4. 9. Clique o

7. No campo Salário, digite B4.

8. No campo Desconto, digite C4.

9. Clique o botão OK.

10. Copie a fórmula no intervalo de células D4:D10.

A planilha deverá ser exibida conforme a figura abaixo.

A planilha deverá ser exibida conforme a figura abaixo. MÓDULO 5 – FUNÇÕES INTERNAS DO VBA

MÓDULO 5 – FUNÇÕES INTERNAS DO VBA

Neste módulo apresentaremos algumas funções internas do VBA, funções estas que serão de extrema importância para a solução de algumas situações que encontraremos mais adiante no curso, pois diminuirão muito o tempo para solucionar tais problemas.

Para isto, dividiremos estas funções por categorias para melhor entendimento.

FUNÇÕES DE TIPO

Aqui veremos algumas funções para determinar o tipo de dados de uma variável.

FUNÇÃO ISDATE

Esta função recebe uma variável como argumento e determina se esta contém uma data válida. Caso o argumento passado seja uma data válida, a função retornará Verdadeiro, caso contrário, retornará Falso.

A sintaxe desta função é a seguinte:

IsDate(<variável>)

Abaixo, segue um exemplo que ilustra o uso desta função:

desta função é a seguinte: IsDate(<variável>) Abaixo, segue um exemplo que ilustra o uso desta função:

FUNÇÃO ISNUMERIC

Esta função recebe uma variável como argumento e determina se o valor atribuído a ela é um valor numérico. Caso o valor seja numérico, a função retornará Verdadeiro, caso contrário, retornará Falso.

A sintaxe desta função é a seguinte:

IsNumeric(<variável>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: FUNÇÕES PARA TRATAMENTO DE TEXTO Aqui

FUNÇÕES PARA TRATAMENTO DE TEXTO

Aqui veremos

programação VBA.

FUNÇÃO LEN

algumas funções

para tratamento de texto, via

Esta função determina o tamanho da String que foi passada como parâmetro para a função.

A sintaxe desta função é a seguinte:

Len(<variável>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá, mostrando o número de caracteres existente na variável.

mostrando o número de caracteres existente na variável. Espaços em branco também contam para o tamanho
mostrando o número de caracteres existente na variável. Espaços em branco também contam para o tamanho

Espaços em branco também contam para o tamanho da string.

FUNÇÃO LCASE

Esta função converte para minúsculas, a string que foi passada como parâmetro para a função.

A sintaxe desta função é a seguinte:

Lcase(<variável>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Na execução deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO UCASE Esta função converte para

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO UCASE Esta função converte para maiúsculas, a

FUNÇÃO UCASE

Esta função converte para maiúsculas, a string que foi passada como parâmetro para a função.

A sintaxe desta função é a seguinte:

Ucase(<variável>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

FUNÇÃO MID Esta função retorna um número especificado de caracteres, a partir de uma posição

FUNÇÃO MID

Esta função retorna um número especificado de caracteres, a partir de uma posição especificada dentro de uma string.Lembre-se que espaços em branco também devem ser considerados.

A sintaxe desta função é a seguinte:

Mid(<string>, <pos_inicial>, <num_caract>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa de

FUNÇÃO STRING

Esta

função

retorna

um

especificado de vezes.

determinado

caractere,

um

número

A sintaxe desta função é a seguinte:

String(<num_repet>, <caractere>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÕES DE DATA E HORA Aqui veremos algumas funções

FUNÇÕES DE DATA E HORA

Aqui veremos algumas funções para tratamento de data e hora, via programação VBA.

FUNÇÃO DATE

Esta função retorna a data atual do sistema operacional. Esta é uma função que não possui argumentos.

A sintaxe desta função é a seguinte:

Date()

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO TIME Esta função retorna a hora atual do

FUNÇÃO TIME

Esta função retorna a hora atual do sistema operacional. Esta é uma função que não possui argumentos.

A sintaxe desta função é a seguinte:

Time()

Abaixo, segue um exemplo que ilustra o uso desta função:

argumentos. A sintaxe desta função é a seguinte: Time() Abaixo, segue um exemplo que ilustra o

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO DAY Esta função retorna o dia do mês

FUNÇÃO DAY

Esta função retorna o dia do mês de uma determinada data passada como parâmetro.

A sintaxe desta função é a seguinte:

Day(<data>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa de

FUNÇÃO MONTH

Esta função retorna um número entre 1 e 12, indicando o mês de uma determinada data passada como parâmetro.

A sintaxe desta função é a seguinte:

Month(<data>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO YEAR Esta função retorna o ano de uma

FUNÇÃO YEAR

Esta função retorna o ano de uma determinada data passada como parâmetro.

A sintaxe desta função é a seguinte:

Year(<data>)

Abaixo, segue um exemplo que ilustra o uso desta função:

A sintaxe desta função é a seguinte: Year(<data>) Abaixo, segue um exemplo que ilustra o uso

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO MONTHNAME Esta função recebe como parâmetro um

FUNÇÃO MONTHNAME

Esta função recebe como parâmetro um número, que indica o mês

do ano (1-Janeiro 2-Fevereiro

).

A sintaxe desta função é a seguinte:

MonthName(<Num_mês>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO HOUR Esta função recebe como parâmetro uma hora

FUNÇÃO HOUR

Esta função recebe como parâmetro uma hora e retorna um número entre 0 e 23, indicando a hora atual.

A sintaxe desta função é a seguinte:

Hour(<hora>)

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. Ao clicar OK , uma nova caixa de mensagem

Ao clicar OK, uma nova caixa de mensagem surgirá.

Ao clicar OK , uma nova caixa de mensagem surgirá. FUNÇÃO DATEDIFF Esta função é utilizada

FUNÇÃO DATEDIFF

Esta função é utilizada para determinar um intervalo entre duas datas, podendo este intervalo ser entre dias, trimestres, semestres, anos e etc.

A sintaxe desta função é a seguinte:

DateDiff(<intervalo>,<data1>,<data2>)

O argumento <intervalo>, é uma string que indica o tipo de intervalo que iremos calcular.

O argumento <intervalo>, é uma string que indica o tipo de intervalo que iremos calcular. Para sabermos como calcular um intervalo entre duas datas devemos conhecer a tabela seguinte:

<Intervalo>

Descrição

yyyy

Anos

q

Trimestres

m

Meses

d

Dias

w

Semanas

h

Horas

n

Minutos

s

Segundos

Abaixo, segue um exemplo que ilustra o uso desta função:

w Semanas h Horas n Minutos s Segundos Abaixo, segue um exemplo que ilustra o uso

Na execução deste procedimento, uma caixa de mensagem surgirá.

deste procedimento, uma caixa de mensagem surgirá. FUNÇÃO DATEADD Esta função é utilizada para determinar

FUNÇÃO DATEADD

Esta função é utilizada para determinar uma data futura, com base em uma data fornecida, o tipo de intervalo a ser acrescentado e o número a ser acrescentado. Este intervalo pode ser entre dias, trimestres, semestres, anos e etc.

A sintaxe desta função é a seguinte:

DateAdd (<intervalo>,<acréscimo>,<data>)

O argumento <acréscimo>, é a ser acrescentado a data para achar a nova data final.O argumento <acréscimo>,

O argumento <intervalo>, é uma string que indica o tipo de intervalo que iremos calcular. Para sabermos como calcular um intervalo entre duas datas devemos conhecer a tabela seguinte:O argumento <intervalo>,

<Intervalo>

Descrição

yyyy

Anos

q

Trimestres

m

Meses

d

Dias

w

Semanas

h

Horas

n

Minutos

s

Segundos

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa de

FUNÇÃO WEEKDAY

Esta função é utilizada para determinar o dia da semana correspondente a uma data. Esta função recebe como argumento uma data e um valor opcional que indica o primeiro dia da semana, sendo que se este valor for omitido, o primeiro dia da semana considerado será Domingo. O valor para indicar o primeiro dia da semana deve ser definido assim: 1 – Domingo, 2 – Segunda e assim por diante.

A sintaxe desta função é a seguinte:

WeekDay (<data>,[<1º_dia_semana>])

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa de

FUNÇÃO WEEKDAYNAME

Esta função é utilizada para determinar o nome do dia da semana. Esta função recebe como argumento um número que indica o dia da semana e outro argumento opcional que pode ser Verdadeiro ou Falso. Se o segundo argumento for Verdadeiro, o nome do dia da semana será exibido abreviado. Caso seja omitido o valor Falso será considerado por padrão.

A sintaxe desta função é a seguinte:

WeekDayName (<num_dia_semana>,[<abreviar>])

Abaixo, segue um exemplo que ilustra o uso desta função:

Abaixo, segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa

Na execução deste procedimento, uma caixa de mensagem surgirá.

segue um exemplo que ilustra o uso desta função: Na execução deste procedimento, uma caixa de

OUTRAS FUNÇÕES ÚTEIS

Aqui segue uma lista de algumas funções também importantes para programação VBA.

Função

Descrição

Shell

Roda um programa executável.

Rnd

Retornar um número aleatório entre 0 e 1.

Sqr

Retorna a raiz quadrada de um número.

EXERCÍCIO 1

1. Abra o arquivo, Exercício 12.xls, localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e digite o código abaixo:

da turma. 2. Abra o Editor do VBA. 3. Insira um novo módulo e digite o

4. Execute o procedimento data.

Pronto! Com isso, ficamos conhecendo algumas funções internas do VBA, que serão de extrema importância

Pronto! Com isso, ficamos conhecendo algumas funções internas do VBA, que serão de extrema importância para a solução de alguns problemas.

MÓDULO 6 – TRATAMENTO DE ERROS

Nos códigos podemos nos deparar com determinados erros a depender de determinadas condições. Podemos nos deparar com um erro de sintaxe, quando um comando do código é digitado incorretamente, por exemplo, ao invés de uma vírgula, você digita ponto e vírgula.

Podemos encontrar também erros de lógica, erros estes mais difíceis de serem identificados, pelo fato do usuário ter falhado no teste de alguma condição do código.

Temos também os erros chamados de erros em tempo de execução, onde o erro somente será identificado durante a execução da rotina, como por exemplo, tentamos acessar um aplicativo em um diretório onde este foi movido para outro local.

Por isso, devemos sempre utilizar o comando para tratamento de possíveis erros que podem acontecer durante a execução do código.

A sintaxe para utilização deste comando é a seguinte:

On Error Resume Next

Neste comando caso um erro seja encontrado o código é deslocado para um bloco especifico onde ocorre o tratamento deste erro, logo em seguida ao término deste tratamento, o código retorna para a primeira instrução após a instrução que gerou o erro.

Se não usarmos a instrução On Error, ou seja, caso não façamos os tratamentos dos possíveis erros que venham a acontecer, qualquer erro em tempo de execução que ocorrer, será fatal, isto é, será exibida uma mensagem de erro e a execução do procedimento será encerrada.

Abaixo, segue um exemplo que ilustra o uso desta função:

Neste exemplo, declaramos duas variáveis do tipo Double , logo em seguida definimos que em

Neste exemplo, declaramos duas variáveis do tipo Double, logo em seguida definimos que em caso de erro, a execução será deslocada para o bloco de comandos para tratamento do erro chamado trata_erro.

Logo após forçamos um erro, usando o número 0 (zero) como denominador de uma divisão, na qual resultará em um erro, daí então a execução é deslocada para o bloco do código chamado trata_erro. Lá uma caixa de mensagem surge informando que um erro foi encontrado.

Ao finalizar o tratamento do erro, a execução do código retorna para a próxima instrução logo após a instrução que gerou o erro, no caso uma variável x recebe o valor 10 (dez), que é logo imprimido na tela. Isto acontece, pois logo após o tratamento do erro temos o Resume Next. Com isso encontra-se o End Sub, finalizando assim a execução do código.

Caso após a instrução de tratamento do erro não tivéssemos o Resume Next, o tratamento seria feito e o código seria imediatamente encerrado, pois encontraria um End Sub.

EXERCÍCIO 1

1. Abra o arquivo, Exercício 13.xls, localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e digite o código abaixo:

do VBA. 3. Insira um novo módulo e digite o código abaixo: 4. Execute o procedimento

4. Execute o procedimento calc.

Neste procedimento temos declarado uma variável RetVal, logo após definimos que em caso de erro a execução será deslocada para o bloco de comandos chamado tratar_erro.

A depender do sistema operacional a primeira atribuição a variável RetVal pode ou não gerar um erro, na verdade esta atribuição faz com que a RetVal pode ou não gerar um erro, na verdade esta atribuição faz com que a variável receba o caminho onde encontra-se a calculadora e logo em seguida a execute.

Pronto! Com isso, ficamos conhecendo como tratar possíveis erros que venham a acontecer no código.esta atribuição faz com que a variável receba o caminho onde encontra-se a calculadora e logo

MÓDULO 7 – ESTRUTURAS DE CONTROLE

Além da declaração de variáveis e cálculos básicos, o VBA fornece uma serie de comandos conhecidos como estruturas de controle. Estas são utilizadas no código para a realização de testes, por exemplo, verificar se o valor de uma variável é maior que x, se for, execute estes comandos, caso contrário execute outros comandos. Estes testes são muito utilizados em programação, sendo praticamente impossível não utiliza-los no seu código.

Controle VBA

Objetivo

IF

Then

Testa uma condição e executa um determinado conjunto de instruções de acordo com o resultado dessa avaliação.

For

Next

Executa uma determinada tarefa um determinado número de vezes.

Do

Loop

Executa uma tarefa, enquanto que a avaliação de uma condição seja ou torne-se verdadeira.

A ESTRUTURA IF

THEN

Uma das estruturas de controle mais conhecidas. Praticamente toda linguagem de programação implementa esta estrutura, sendo utilizada para executar determinados comandos, caso uma condição seja verdadeira.

A sintaxe desta estrutura é a seguinte:

If <condição> Then

<bloco_de_comandos>

End If

Neste caso a <condição> é testada, caso esta seja verdadeira, o <bloco_de_comandos> é executado.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 7.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

Abra o Editor do VBA . 3. Insira um novo módulo e dentro dele, digite o

4. Execute a rotina lógica.

Com isso, a depender do valor das variáveis num1 e num2, uma caixa de mensagem poderá ou não surgir, definindo que o valor de num1 é maior do que o de num2, logo em seguida será exibido uma outra caixa de mensagem informando o valor destas variáveis.

Neste exemplo além dos recursos já conhecidos, fizemos uso da função Rnd () , esta função retorna como resultado um número aleatório. No nosso caso como Rnd (), esta função retorna como resultado um número aleatório. No nosso caso como fizemos Rnd * 50, estamos solicitando um número aleatório entre 0 e

50.

Utilizamos também a função Int (), que retorna apenas a Utilizamos também a função Int () parte inteira do valor obtido pela função Rnd * 50 parte inteira do valor obtido pela função Rnd * 50.

A ESTRUTURA IF

THEN

ELSE

Esta estrutura de controle é muito interessante, pois acrescenta a

estrutura IF

executar comandos, caso uma condição seja verdadeira, ou outros comandos, caso a condição seja falsa.

THEN mais uma possibilidade. Muito utilizada para

A sintaxe desta estrutura é a seguinte:

If <condição> Then

<bloco_de_comandos_1>

Else

<bloco_de_comandos_2>

End If

Neste caso a <condição> é testada, caso esta seja verdadeira, o <bloco_de_comandos_1> é executado, senão o <bloco_de_comandos_2> é que será executado.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 8.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

um novo módulo e dentro dele, digite o código a seguir: 4. Execute a rotina pontuacao.

4. Execute a rotina pontuacao.

Com isso, a depender do valor da variável pontos, uma caixa de mensagem irá surgir, definindo se o valor de pontos esta acima ou abaixo da média.

Logo em seguida será mostrada uma nova caixa de mensagem que conterá o valor da variável pontos.

A ESTRUTURA IF

THEN

ELSEIF

Esta estrutura nos da um maior poder, para testarmos diversas possibilidades, isto é, podemos fazer vários testes e executar diferentes comandos com base no resultado destes testes. Muito utilizada sempre que necessitarmos realizar mais do que um teste lógico, onde em cada novo teste, utilizamos o ElseIf.

A sintaxe desta estrutura é a seguinte:

If <condição_1> Then

<bloco_de_comandos_1>

ElseIf <condição_2>

<bloco_de_comandos_2>

ElseIf <condição_3>

<bloco_de_comandos_3>

ElseIf <condição_n>

<bloco_de_comandos_n>

Else

<bloco_de_comandos_final>

End If

Neste caso a <condição_1> é testada, caso esta seja verdadeira, o <bloco_de_comandos_1> é executado, senão a <condição_2> é testada, caso esta seja verdadeira, o <bloco_de_comandos_2> será executado, senão a <condição_3> é testada, caso esta seja verdadeira, o <bloco_de_comandos_3> será executado, senão a <condição_n> é testada, caso seja verdadeira, o <bloco_de_comandos_n> será executado, senão o <bloco_de_comandos_final> é que será executado, pois todas as condições falharam.

Somente um dos <bloco_de_comandos> é que será executado. Onde uma condição sendo verdadeira, o <bloco_de_comandos> associado a esta condição será

que será executado. Onde uma condição sendo verdadeira, o <bloco_de_comandos> associado a esta condição será

executado, ao término a execução segue para o End If, isto é, as demais condições da estrutura não serão testadas.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 9.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

um novo módulo e dentro dele, digite o código a seguir: 4. Execute a rotina idade.

4. Execute a rotina idade.

Com isso, a depender do valor armazenado na variável idade, uma caixa de mensagem surgirá informando a classe etária pertencente à idade. Ao término da estrutura If, aparecerá uma outra caixa de mensagem informando o valor da variável idade.

Na instrução Elseif, sempre que uma condição for avaliada como falsa, uma outra condição é avaliada. Caso todas as condições sejam falsas, a condição da instrução Else, é que será executada. Já se uma condição for avaliada como verdadeira, as instruções pertencentes a esta condição será executada e a estrutura If, é finalizada.

será executada e a estrutura If , é finalizada. EXERCICIO 1 1. Criar um procedimento chamado

EXERCICIO 1

1. Criar um procedimento chamado Aposta.

1.1. No procedimento Aposta, declarar duas variáveis inteiras

chamadas naposta e nsorteio.

1.2. Naposta recebe o valor 30.

1.3. Nsorteio recebe o resultado da função Sorteio.

. 1.3. Nsorteio recebe o resultado da função Sorteio. Formatado: Fonte: Não Negrito 1.4. Comparar o

Formatado: Fonte: Não Negrito

1.4. Comparar o valor de naposta com nsorteio, caso sejam

iguais, surgirá uma mensagem informando que os números são

iguais, senão, surgirá uma mensagem informando que os números são diferentes.

2. Criar uma função chamada Sorteio.

2.1. Esta função deverá retornar um número randômico inteiro

entre 0 e 50.

3. Execute o procedimento Aposta.

A ESTRUTURA FOR

NEXT

Um comando muito utilizado para repetir um determinado trecho do código um determinado número de vezes.

Utilizamos esta estrutura, quando já conhecemos o número de vezes que devemos repetir determinado trecho de código.

Nesta estrutura utiliza-se uma variável como contador, onde este varia de um valor inicial até um valor final.

A sintaxe desta estrutura é a seguinte:

For

contador

=

<incremento>]

<valor_inicial>

<bloco_de_comandos>

Next

To

<valor_final>

[

Step

Nesta estrutura a variável contador, tem seu valor inicial definido. Em cada passagem do laço, o <bloco_de_comandos> será executado e esta variável é incrementada pelo valor definido em <incremento>, sendo que se este <incremento> tiver sido omitido, o valor será o padrão 1.

Assim todo o <bloco_de_comandos> vai sendo executado toda vez que o laço for repetido até que o valor da variável contador seja igual ao <valor_final>.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 10.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

4. Execute a rotina somanum. Com isso, surgirá uma caixa de mensagem informando o valor

4. Execute a rotina somanum.

Com isso, surgirá uma caixa de mensagem informando o valor da variável soma.

uma caixa de mensagem informando o valor da variável soma. Neste exemplo, a variável i inicia
uma caixa de mensagem informando o valor da variável soma. Neste exemplo, a variável i inicia

Neste exemplo, a variável i inicia com o valor 1 e em cada passo, o valor de i é somado com o valor existente na variável soma. Note também que neste exemplo o incremento não foi definido, daí o valor será o padrão 1. Com

Next, a variável soma, conterá a

soma dos dez primeiros números maiores que zero e este valor será

mostrado em uma caixa de mensagem.

isso, ao final de todos os laços do For

EXERCICIO

1. Crie um procedimento que mostre na tela, a soma dos 10 primeiros números ímpares.

A ESTRUTURA DO

LOOP

Esta estrutura deve ser utilizada para repetir um trecho do código, enquanto uma condição seja verdadeira, ou até que ela torne-se verdadeira. Para isto, podemos utilizar dois operadores condicionais diferentes: While ou Until.

Estes operadores podem ser utilizados de duas maneiras diferentes: no inicio ou no final do laço. Com isso teremos quatro situações diferentes.

DO WHILE <condição>

LOOP

Neste método, estamos utilizando o operador While no inicio do laço. Para esta estrutura, devemos seguir a seguinte sintaxe:

Do While <condição>

<bloco_de_comandos>

Loop

Neste tipo de estrutura, enquanto <condição> for Neste tipo de estrutura, enquanto <condição> verdadeira , o <bloco_de_comandos> será executado, caso verdadeira, o <bloco_de_comandos> será executado, caso esta seja falsa, o próximo comando após o laço será executado. Caso <condição> seja falsa na primeira análise, o <bloco_de_comandos> não será executado nenhuma vez.

CUIDADO! Dentro do laço do While, deve existir algum código capaz de alterar a condição para que esta se torne CUIDADO! falsa , em algum momento, pois caso contrário a condição sempre estará verdadeira e o falsa, em algum momento, pois caso contrário a condição sempre estará verdadeira e o <bloco_de_comandos> dentro do laço ficará em execução infinitamente ou até que o programa trave. A criação de laços infinitos é uma causa comum de erros e travamentos.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 11.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3.

Insira um novo módulo e dentro dele, digite o código a seguir:

um novo módulo e dentro dele, digite o código a seguir: 4. Execute o procedimento soma.

4. Execute o procedimento soma.

Com isso, irá aparecer uma caixa de mensagem informando o valor da variável.

uma caixa de mensagem informando o valor da variável. DO LOOP WHILE <condição> Nesta estrutura, temos

DO

LOOP WHILE <condição>

Nesta estrutura, temos a condição do teste no final do laço, com isso, o código dentro do laço será executado pelo menos uma vez, pois a condição somente será testada no final do laço, voltando a ser executado, caso a condição seja verdadeira.

Para esta estrutura, devemos seguir a seguinte sintaxe:

Do

<bloco_de_comandos>

Loop While <condição>

Neste tipo de estrutura, enquanto <condição> for Neste tipo de estrutura, enquanto <condição> verdadeira , o <bloco_de_comandos> será executado, caso verdadeira, o <bloco_de_comandos> será executado, caso esta seja falsa, o próximo comando após o laço será executado. Caso <condição> seja falsa na primeira análise, o <bloco_de_comandos> será executado uma única vez.

CUIDADO! Dentro do laço do While, deve existir algum código capaz de alterar a condição para que esta se torne CUIDADO! falsa , em algum momento, pois caso contrário a condição sempre estará verdadeira e o falsa, em algum momento, pois caso contrário a condição sempre estará verdadeira e o <bloco_de_comandos> dentro do laço ficará em execução infinitamente ou até que o programa trave. A criação de laços infinitos é uma causa comum de erros e travamentos.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 11.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

4. Execute o procedimento soma. Com isso, irá surgir uma caixa de mensagem informando o

4. Execute o procedimento soma.

Com isso, irá surgir uma caixa de mensagem informando o valor da variável soma.

uma caixa de mensagem informando o valor da variável soma. Neste exemplo, a condição contador <=
uma caixa de mensagem informando o valor da variável soma. Neste exemplo, a condição contador <=

Neste exemplo, a condição contador <= x é falsa logo no primeiro teste, pois contador = 12 e x = 10. Neste caso o laço será executado uma única vez, pois o teste da condição encontra-se no final do laço.

DO UNTIL <condição>

LOOP

Nesta estrutura, estamos utilizando o operador condicional Until, no ínicio do laço.

Para esta estrutura, devemos seguir a seguinte sintaxe:

Do Until <condição>

<bloco_de_comandos>

Loop

Neste tipo de estrutura, enquanto <condição> for falsa, o tipo de estrutura, enquanto <condição> for falsa <bloco_de_comandos> será executado, caso esta seja <bloco_de_comandos> será executado, caso esta seja verdadeira, o próximo comando após o laço será executado. Caso <condição> seja verdadeira na primeira análise, o <bloco_de_comandos> não será executado nenhuma vez.

CUIDADO! Dentro do laço do Until, deve existir algum código capaz de alterar a condição para que esta se torne CUIDADO! verdadeira , em algum momento, pois caso contrário a condição sempre estará falsa e o verdadeira, em algum momento, pois caso contrário a condição sempre estará falsa e o <bloco_de_comandos> dentro do laço ficará em execução infinitamente ou até que o programa trave. A criação de laços infinitos é uma causa comum de erros e travamentos.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 11.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

4. Execute o procedimento soma. Com isso, irá aparecer uma caixa de mensagem informando o

4. Execute o procedimento soma.

Com isso, irá aparecer uma caixa de mensagem informando o valor da variável.

uma caixa de mensagem informando o valor da variável. DO LOOP UNTIL <condição> Nesta estrutura, temos

DO

LOOP UNTIL <condição>

Nesta estrutura, temos a condição do teste no final do laço, com isso, o código dentro do laço será executado pelo menos uma vez, pois a condição somente será testada no final do laço, voltando a ser executado, caso a condição seja falsa.

Para esta estrutura, devemos seguir a seguinte sintaxe:

Do

<bloco_de_comandos>

Loop Until <condição>

Neste tipo de estrutura, enquanto <condição> for falsa, o tipo de estrutura, enquanto <condição> for falsa <bloco_de_comandos> será executado, caso esta seja <bloco_de_comandos> será executado, caso esta seja verdadeira, o próximo comando após o laço será executado. Caso <condição> seja verdadeira na primeira análise, o <bloco_de_comandos> será executado uma única vez.

CUIDADO! Dentro do laço do Until, deve existir algum código capaz de alterar a condição para que esta se torne CUIDADO! verdadeira , em algum momento, pois caso contrário a condição sempre estará falsa e o verdadeira, em algum momento, pois caso contrário a condição sempre estará falsa e o <bloco_de_comandos> dentro do laço ficará em execução infinitamente ou até que o programa trave. A criação de laços infinitos é uma causa comum de erros e travamentos.

Para melhor entendermos o funcionamento desta estrutura, vamos ao um exemplo prático:

1. Abra o arquivo Exercício 11.xls localizado na pasta da turma.

2. Abra o Editor do VBA.

3. Insira um novo módulo e dentro dele, digite o código a seguir:

o Editor do VBA . 3. Insira um novo módulo e dentro dele, digite o código

4. Execute o procedimento soma.

Com isso, irá aparecer uma caixa de mensagem informando o valor da variável.

uma caixa de mensagem informando o valor da variável. Neste exemplo, a condição contador >= x
uma caixa de mensagem informando o valor da variável. Neste exemplo, a condição contador >= x

Neste exemplo, a condição contador >= x é verdadeira logo no primeiro teste, pois contador = 12 e x = 10. Neste caso o laço será executado uma única vez, pois o teste da condição encontra-se no final do laço.

EXERCICIO 1

1. Crie um procedimento chamado Loteria. Neste procedimento uma variável do tipo Integer, deverá receber um número randômico inteiro entre 0 e 15. Crie um laço de repetição que compara o valor da variável com o número 10, caso sejam iguais, devemos mostrar na tela uma mensagem informando que o número foi encontrado e informar também o número de tentativas até localizar o número.

também o número de tentativas até localizar o número. Pronto! Com isso, aprendemos a trabalhar com

Pronto! Com isso, aprendemos a trabalhar com as estruturas de controle, que nos serão muito úteis na resolução de diversos problemas.

REVISÃO 1

1. Na pasta da turma, abra o arquivo chamado Revisão 1.xls, abra o Editor do VBA e insira um novo módulo. Dentro dele, crie uma função chamada de IRPF que deverá calcular o Imposto de renda pessoa física. Para isto a função deverá receber como parâmetro uma variável do tipo Currency, que será à base de cálculo para o cálculo do imposto. Esta função deverá retornar o valor do imposto a ser pago. O cálculo a ser feito, deverá seguir as condições da tabela oficial para o cálculo de imposto de renda no exercício de 2008, conforme tabela a seguir:

Base de cálculo anual em R$

Base de cálculo anual em R$

Até 15.764,28

De 15.764,29 até

31.501,44

Acima de 31.501,44

Alíquota

%

-

15,0

27,5

Parcela a deduzir do imposto

em R$

-

2.364,60

6.302,28

2. Depois de criada a função IRPF, teste-a na planilha chamada IRPF, para calcular o imposto de cada pessoa.

REVISÃO 2

1. Na pasta da turma, abra o arquivo chamado Revisão 1.xls, abra o Editor do VBA e insira um novo módulo. Dentro dele, crie uma função chamada de CPF que deverá receber como parâmetro um valor de CPF no formato 111.111.111-11 ou a referência de uma célula que contém um CPF nesse formato. A função irá retornar a palavra Válido se este for válido, caso contrário retornar Inválido.

A seguir, temos um exemplo de como se calcular o dígito verificador do CPF:

Considere o seguinte CPF (sem o DV): 333.444.555

Posição

1

2

3

4

5

6

7

8

9

Número

3

3

3

4

4

4

5

5

5

Deve-se multiplicar os dígitos do CPF, a partir da posição 9, ou seja, de trás para a frente, por 2,3,4 e assim por diante, conforme a tabela a seguir

Posição

1

2

3

4

5

6

7

8

9

Número

3

3

3

4

4

4

5

5

5

Multiplica

10

9

8

7

6

5

4

3

2

por:

Resultado

30

27

24

28

24

20

20

15

10

Depois, devemos somar os resultados obtidos na quarta linha da tabela anterior:

Soma 1 = 30+27+24+28+24+20+20+15+10

Soma 1 = 198

Faço a divisão desta soma por 11 e verifico o resto da divisão:

Ex: 198/11 – Resulta em uma divisão exata, com resto 0.

Agora, deve-se seguir a seguinte regra:

Quando o resto é zero ou um, o DV é zero

Quando o resto é diferente de zero ou um, o DV é obtido fazendo-se: 11-resto.

Neste caso, como o resto foi zero, o primeiro DV é zero:

DV1 = 0

Este primeiro dígito verificador (DV1) passa a fazer parte do CPF, conforme a tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

10

Número

3

3

3

4

4

4

5

5

5

0

Agora, devemos repetir o mesmo processo feito anteriormente, porém já considerando o DV1 como parte integrante do CPF, conforme mostrado na tabela a seguir:

Posição

1

2

3

4

5

6

7

8

9

10

Número

3

3

3

4

4

4

5

5

5

0

Multiplica

11

10

9

8

7

6

5

4

3

2

por:

Resultado

33

30

27

32

28

24

25

20

15

0

Depois, devemos somar os resultados obtidos na quarta linha da tabela anterior:

Soma 2 = 33+30+27+32+28+24+25+20+15+0

Soma 2 = 234

Faço a divisão desta soma por 11 e verifico o resto da divisão:

Ex: 234/11 – Resulta em 21, com resto 3.

Agora, deve-se seguir a seguinte regra:

Quando o resto é zero ou um, o DV é zero

Quando o resto é diferente de zero ou um, o DV é obtido fazendo-se: 11-resto.

Neste caso, como o resto foi 3, o segundo DV é:

DV2 = 11-3

DV2 = 8

Com isso, temos o CPF com os dois dígitos verificadores:

Posição

1

2

3

4

5

6

7

8

9

10

11

Número

3

3

3

4

4

4

5

5

5

0

8

Ou seja: 33.444.555-08

2. Depois de criada a função CPF, teste-a na planilha chamada CPF, para verificar se cada cpf da lista é válido ou não.

REVISÃO 3

1. Na pasta da turma, abra o arquivo chamado Revisão 1.xls, abra o Editor do VBA e insira um novo módulo. Refazer todo a revisão anterior utilizando Vetores.

2. Depois de criada a função CPF, teste-a na planilha chamada CPF, para verificar se cada cpf da lista é válido ou não.

MÓDULO 8 – MSGBOX E INPUTBOX

Para haver interação entre o usuário e o programa, é necessário que exista uma interface de comunicação. Para isto, temos dois elementos básicos para estabelecer esta ligação: o InputBox e o MsgBox .