CURSO DE VBA - jhonnylopes.com.br · O VBA (Visual Basic for Applications), é uma linguagem de...

38
CURSO DE VBA PARA EXCEL

Transcript of CURSO DE VBA - jhonnylopes.com.br · O VBA (Visual Basic for Applications), é uma linguagem de...

CURSO DE VBA PARA EXCEL

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

2 .

......

......

......

......

......

......

......

......

......

......

......

......

......

INTRODUÇÃO

O QUE É VBA?

O VBA (Visual Basic for Applications), é uma linguagem de programação incor-

porada em todos os programas do Microsoft Office e alguns aplicativos terceiros, co-

mo AutoCAD, SolidWorks e CorelDraw, que tem como função realizar rotinas de repe-

tição através de comandos da aplicação podendo ser muito útil na automação de

tarefas. Apesar de ser útil em desenvolvimento de ferramentas dos aplicativos da fa-

mília office ele não uma ferramenta que funciona como uma aplicação única, ou se-

ja, ele depende de outro programa para funcionar.

COMO UTILIZAR VBA NO EXCEL

Para usar o VBA no Excel precisamos primeiramente habilitar a guia desenvolve-

dor, que por padrão vem desabilitada, para isso vamos seguir o seguinte passos:

1

2

1) Selecione a guia “Arquivo”;

2) Selecione a faixa de Opções;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

3 .

......

......

......

......

......

......

......

......

......

......

......

......

......

INTRODUÇÃO

3

4

5

3) Clique na opção “Personalizar Faixa de Opções”;

4) Selecione a guia “Desenvolvedor”;

5) Clique em “OK” para ativar a faixa “Desenvolvedor”;

6) A guia “Desenvolvedor irá ser ativada no Excel.

6

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

4 .

......

......

......

......

......

......

......

......

......

......

......

......

......

INTRODUÇÃO CONHECENDO A GUIA DESENVOLVEDOR

Para iniciar vamos aprender um pouco sobre as opções que estão disponíveis na

guia desenvolvedor, principalmente na parte de código e controles que será o foco

deste curso.

1

Visual Basic: Abre o editor de códigos;

Macros: Abre caixa de seleção das macros disponíveis;

Gravar Macros: Abre a janela de seleção para iniciar uma gravação de

macros a partir das ações que o usuário fazer com o cursor;

Usar Referências Relativas: Ativa o modo de posição relativa de origem e

destino quando usar a gravação de macros;

Segurança de Macro: Abre a janela de configurações para definição dos

parâmetros de macros e a confiabilidade do projeto;

Inserir: Caixa de controle onde é possível inserir botões e controles de for-

mulários dentro da planilha;

Modo de Design: Ativa/Desativa o modo Design que possibilita a edição

de controles de formulário;

Propriedades: Abre a caixa de propriedade da planilha, podendo reno-

mear e habilitar visualizações personalizadas dos controles, aba, imagens

entre outros elementos que estiverem ativos na planilha;

Exibir Código: Abre o código do controle / Planilha ativa;

Executar Caixa de Diálogo: executa a caixa de diálogo personalizada

que estiver sendo editada na folha de diálogo.

1) Selecione a guia Desenvolvedor;

2) Explicação dos principais comandos das faixas de “Código” e “Controles”.

2

Vamos focar em algumas dos controles apresentados que são mais usuais afim

de aprofundar e cada tópico, iniciando por gravação de macros que é o primeiro

passo para que está iniciando no campo de desenvolvimento para Excel.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

5 .

......

......

......

......

......

......

......

......

......

......

......

......

......

GRAVADOR DE MACROS TRABALHO COM O GRAVADOR DE MACROS

O gravador de macros é uma das ferramentas mais utilizadas, principalmente pa-

ra que está iniciando a programação em VBA e não conhece alguns comandos que o

Excel utiliza, é uma boa forma de aprende como é realizando este tipo de configura-

ções via programação.

Para começar o uso vamos utilizar uma planilha que já tenha dados para realizar-

mos algumas gravações simples com de rotinas que pode ser feitas diretamente pela

gravação de macros sem a necessidade de edição.

1

2

2

1) Clique na guia Desenvolvedor;

2) Clique em um dos campos, ou da guia ou no

canto da página, ambos funcionam para abrir a

janela de gravação de macros;

Este atalho no canto da página é um acesso rápido de gravação de macros

que só tem no Excel, observe que o ícone é o mesmo para os 2 controles. Nos outros

aplicativos da Microsoft o mesmo foi retirado, em versões anteriores do pacote Office

esta função era disponível.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

6 .

......

......

......

......

......

......

......

......

......

......

......

......

......

GRAVADOR DE MACROS

1) Escreva um nome para a macro que

será gravada;

2) É possível atribuir um atalho para

executar a macro sempre que o usu-

ário realizar o comando pelo teclado;

3) Escolha onde deseja gravar a macro,

isso é interessante quando tem várias

planilha abertas, geralmente deixa-

se na pasta de trabalho;

4) Descrição da macro, é interessante

quando se grava muitas macros para

saber o que cada uma faz;

5) Clique em “OK” para iniciar a grava-

ção;

6) Informações preenchidas, exemplo;

1

2

3

4

5

6

7

9

11

10

8

12

7) Clique na célula “A1”;

8) Pelo teclado faça o coman-

do Ctrl+Seta para Baixo (Vá

até última célula da coluna

com dados);

9) Selecione a célula “C12”;

10) Coloque na célula “C12” a

função “=SOMA(C2:C11)”;

11) Dê um “Enter”, para selecio-

nar a célula “C13”;

12) Clique em “Parar”, para fina-

lizar a gravação.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

7 .

......

......

......

......

......

......

......

......

......

......

......

......

......

GRAVADOR DE MACROS Vamos verificar como ficou a nossa macro gravada para analisar como o Excel

entende um gravação de forma geral. A 3 formas possíveis de verificar o código que foi

gravado, 2 pela aba “Desenvolvedor” e uma por atalho do teclado. Vamos apresentar

as 3 formas inicialmente para conhecimento da forma mais fácil para cada usuário.

Primeiro o atalho do teclado para abrir o editor de códigos utiliza-se o comando

do teclado “Ctrl+F11”.

4

5

1) Clique na aba “Desenvolvedor;

2) Selecione o comando “Visual

Basic”, para abrir o editor de

códigos, após vá par a etapa

6;

3) Clique no comando “Macros”

para abrir a caixa de diálogos

das macros gravadas;

4) Clique sobre a macro gravada;

5) Clique sobre o botão Editar;

6) Editor de códigos com a macro

gravada.

2

3 1

6

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

8 .

......

......

......

......

......

......

......

......

......

......

......

......

......

GRAVADOR DE MACROS Vamos conhecer o depurador de códigos para depois analisar como o Excel re-

alizou a gravação e o que significa da linha gravada;

1) Botões de controle e depuração de

código;

2) Área de Objetos, Pasta de Trabalho;

Planilhas, Módulos e Classes;

3) Área de escrita do código de progra-

mação;

4) Propriedades, delimitado valores, no-

mes tamanho fonte, etc;

2 3

4

1

Vamos analisar um pouco o código que realizando através do gravador de

macros para entender o que ele está fazendo.

1

1) Ao iniciar uma gravação o Excel sempre abre uma “Sub”, que representa uma ro-

tina que vai executar, passando linha por linha até chegar ao final. Observe que

após o “Sub” tempo o nome que demos para macro “SomarTudo” e logo em se-

guida tempo a abertura e fechamento de parênteses ”()”, é necessário abrir e fe-

char parênteses, pois indica que é uma rotina, caso fosse feito manualmente e es-

tivesse sem os mesmo ocorreria um erro e o excel não iria executar a rotina;

Observe que as seguintes linha tem um apóstrofo (’) e depois está o nome da macro

e a descrição que foi realizada no início da gravação da macro, este apostrofo (’),

significa que está linha não será lida pelo Excel, deixando a mesmo como um co-

mentário dentro do código de programação, muito últil para rotinas complexa e para

manutenção de códigos;

3) Função “Selection”, verifica a célula que está

ativa, a função “End(xlDown)”, faz o Excel ir até a última linha da coluna atual com

dados, e após utiliza o comando “Select”, para selecionar a célula;

3

2) Função “Range”, ela é responsável em apresentar

a posição do cursor do Excel, neste caso estamos se-

lecionando a célula “A1”, como o comando “Select”; 2

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

9 .

......

......

......

......

......

......

......

......

......

......

......

......

......

GRAVADOR DE MACROS

4 4) Função para selecionar a célula (“C12”);

5

5) Aqui temos uma formula sendo colocada na célula ativa, usando o comando

“ActiveCell” (Célula Ativa) e “FormulaR1C1” (Formula usando de paramentros

de Linha (R) e Coluna (C); como a fórmula vai se escrita é necessário que a

mesma esteja dentro de “ “ pois o VBA não ente funções matemática sem de-

claração de objetos, assunto que abordaremos a frente.

Após temos a Função de Soma onde “Sum” significa “Soma”, lembrando que to-

dos os comandos em macros e em VBA são em inglês, “(R[-10]C”, “R”significa Li-

nha (Row) “[-10]” significa que a soma deve iniciar a em 10 linha a menos da li-

nha atual, ou seja na linha 2, “C” representa que é na mesma coluna, se houvesse

algum número dentro de colchetes aumentaria ou diminuiria o número de colu-

nas, no geral a função representa a função (“=Soma(C2:C11)”);

6 6) Seleciona a célula “C13”) e finaliza a macro;

7

7) Temos o código com comentários da função de cada linha;

Vamos agora ver como testar o código gravado, podemos fazer 2 formas um

pelo próprio editor de código e outro pelo Excel, vamos primeiro aprender a usar pelo

Excel e com código mais complexo vamos usar o próprio depurar;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

10

GRAVADOR DE MACROS

1

2 3

4 5

1) Primeiro, clique na célula “C12” e apague a fórmula de soma;

2) Clique na guia “Desenvolvedor”;

3) Clique na comando “Macros”;

4) Selecione a macro “SomarTudo”;

5) Clique em executar.

Assim como realizamos

esta pequena gravação é

possível realizar gravação pa-

ra qualquer ação que é reali-

zada no Excel desde a mu-

dar a fonte, cor e formata-

ção, até funções e gráficos.

Na próxima lição vamos aprender a editar as macros gravadas e conhecer um

pouco sobre os comandos para desenvolver macros sem gravação.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

11

EDITANDO MACROS EDITANDO MACROS GRAVADAS

Realizar rotinas com gravador de macros realmente ajuda muito no desenvolvi-

mento, mas quando os passos para executar uma ações é um pouco maior o grava-

dor de macro pode não retornar o melhor resultado, sendo que o mesmo grava cada

ação enquanto o gravador estiver ativo desde um clique no mouse até um edição fei-

ta errada ou clique desnecessário para atingir o resultado, vamos chamar isso de polui-

ção do código, e a edição tem por objetivo limpar este lixo e deixa somente o que é

necessário para executar o código mais rápido e sem etapas desnecessárias.

1

2

4

3 1) Clique no gravador para

inserir uma nova macro;

2) Clique em “OK” para iniciar

a gravação;

3) Selecione a giua “Pagina

Inicial;

4) Selecione os dados da li-

nha A1:D4 e escolha uma

cor;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

12

EDITANDO MACROS

5

7

6

5) Selecione a célula D20;

6) Insira a formula de soma de D2:D19;

7) Clique para encerrar a gravação.

Vamos abrir o editor de código para ver o código gerado e começarmos a ajusta-lo.

Observe que a algumas funções e passos são desnecessários para executar es-

tas gravação então vamos otimiza-los deixando de forma, mais simples conforme a

próxima imagem.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

13

EDITANDO MACROS

1

2

1) Macro gravada com destaque em amarelo do que não é necessário para rodar

a macro;

2) Macro editada com somente o que é possível para executar a macro;

O objetivo da macro gravada é pintar a linha titulo e após inserir a formula de

soma na célula especifica, entendendo isso vendo que só precisamos da informação

da região a ser pintada, a cor necessária e o local onde a função será inserida, va-

mos entender como a macro editada faz a mesma coisa que a gravação.

1

2

1) Executar a seguinte função, primeiro seleciona a região a ser pintando, após na

executa o comando “with” utilizado para chamar propriedade de célula poden-

do executar diversas formatações de um mesmo local sem precisar ser setado;

2) Executa o mesma função que da primeira imagem mais escrito de forma mais

suncinta, pois o objetivo é somente pintar de fundo as células, isso que o comna-

do faz, apresenta a células que será pintados (RANGE(“A1:D1”)), e realiza a pin-

tura do fundo da célula (.Interior.Color=65535).

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

14

EDITANDO MACROS

1

2

1) Aqui a macro seleciona a célula deseja e utiliza o comando que coloca a fun-

ção soma dentro da célula ativa, e após inserir seleciona a célula abaixo;

2) Já na edição da macro é setada a célula inserindo a função dentro da mesma

sem precisam de ficar selecionando.

Este é um exemplo de edição de macros onde se analisarmos como a grava-

ção é feita para conhecer os comandos podemos analisar o que realmente é neces-

sário deixando a execução do código mais rápida do que se fosse feita somente

com o gravador de macros, já que o gravador utiliza cada ação que o usuário faz

como uma etapa a ser executada.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

15

ATRIBUIR MACROS A UM BOTÃO COLOCANDO MACROS EM ELEMENTOS

Agora vamos aprender a colocar macros em elementos mais simples que fica

rápido a sua execução, sem a necessidade de ir toda a vez no editor de macros para

executa-la. É possível atribuir as macros gravadas a elementos gráficos que funcionam

como um link que ao clicar realiza a tarefa programada.

1

2

3

4

1) Selecione a guia “Inserir’”;

2) Clique em Formas;

3) Selecione a forma que deseja;

4) Selecione a forma inserida e clique com

o botão direito do mouse sobre a mesma

e selecione a opção “Editar Texto”;

5) Digite o nome para aparecer na forma;

5 6

7

8

9

6) Selecione a primeira linha;

7) Clique em Cor de Preenchimento;

8) Selecione “Sem Preenchimento;

9) Clique na célula D20 e apague os

dados da mesma.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

16

ATRIBUIR MACROS A UM BOTÃO

10

11

12

13

14

10)Clique com botão direito sobre o elemento gráfico adicionado;

11) Selecione a opção “Atribuir macro...”

12)Caixa de Atribuir macro é aberta;

13)Selecione a macro “EdicaoMacro2”;

14)Clique em “OK”

Com isso já temos nossa macro atribuída a um elemento gráfico onde podemos

testar clicando sobre o mesmo para verificar se está funcionando.

1) Clique no botão inse-

rido;

2) O resultado será a for-

matação e a soma

realizado anterior-

mente conforme a

gravação da macro.

1 2

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

17

FORMULÁRIOS, CONTROLES E FUNÇÕES FORMULÁRIOS

Vamos imaginar que temos uma planilha que não queremos quem for alimentar

os dados tenha acesso a mesma, por conta de formulas e outras informações que a

pessoa não precisa ter acesso, uma das formas de fazer que a mesma preencha as in-

formações sem ter que ir diretamente é a utilização de formulários podendo fazer toda

a programação de cadastro no mesmo afim de facilitar o cadastro e edição de infor-

mações.

06 07

02

03

01

1) Crie uma planilha com os campos mostrados na imagem;

2) Clique na guia “Desenvolvedor”;

3) Clique em Visual Basic;

04

05

08

09

4) Clique no menu para inserir;

5) Selecione “Userform”;

6) Na caixa de Ferramentas, sele-

cione “Caixa de Texto”;

7) Redimensione e posicione a

caixa de texto da forma que

deseja;

8) Na caixa de Ferramenta clique em Rótulo para inserir;

9) Posicione acima da caixa de texto inserida, colocando o nome de

“Código”;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

18

FORMULÁRIOS, CONTROLES E FUNÇÕES

01

02

03

1) Volte para Excel e Clique para inserir

uma nova aba;

2) Renomeie a aba para “Dados”;

3) Insira os dados dos Estados para buscar

depois no formulário.

A vamos voltar para Visual Basic para continuar a construção dos elementos

de nosso formulário.

02

03

01

1) Copie e cole a caixa de texto e ro-

tulo para quantidade de elemento

que necessitamos para preencher a

tabela;

2) Clique na Caixa de Ferramenta em

“Caixa de Combinação”;

3) Insira a caixa de combinação abai-

xo do rótulo de UF;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

19

FORMULÁRIOS, CONTROLES E FUNÇÕES

PROPRIEDADE DOS OBJETOS

As propriedade dos controles é algo importante o que facilita na hora de atribuir

o código e saber qual elemento você está trabalhando por padrão o Visual Basic já

dá um nome ordenado para os controles que são criados, mas vamos atribuir nomes

que nos facilite a forma de identificação, para isso usaremos a barra de propriedades.

01

02

1) Na caixa de ferramentas

selecione “botão”;

2) Insira o botão e renomeie

colocando em alguma

posição no formulário;

03

04

3) Copie e Cole 5 vezes o botão;

4) Redimensione, posicione e renomeie os valores dentro de cada botão;

INSERINDO CONTROLE DE FORMULÁRIO

Até o momento inserimos os campos a serem alimentados para planilha, mas

não realizamos nenhuma programação. Vamos criar agora os botões responsáveis por

incluir, excluir e navegar entre os registros. O formulário ficará da mesma forma que

qualquer aplicativo que temos de cadastro de informações.

01

02

1) Clique dentro do formulário em uma parte que não tenha controle;

2) A guia de Propriedade muda para as informações pertinentes ao controle que tiver selecionado;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

20

FORMULÁRIOS, CONTROLES E FUNÇÕES

03

04

05

3) Altere a propriedade “Name” para frmCadastro;

4) Altere a propriedade “Caption” para “Cadastro | Cliente”

5) Observe que ao alterar no passo anterior automaticamente o título do formulário foi

atualizado;

05

06

07

08

5) Clique na caixa de texto do campo “Código”;

6) Vá em Propriedade (Name) e renomeei para “txtCodigo”, esta função altera o no-

me original do controle para um nome que o usuário definir;

7) Em “BackColor” altere para para &H8000000F&, esta função muda a cor de fundo

do controle, neste caso estamos alterando de “branco” para “cinza”;

8) Em “Enabled” altere de “True” para “False”, esta função e responsável em deixar o

campo editável, ou seja, ao executar o formulário este campo estará visível mas

não será possível editar a informação contida no mesmo;

09

10

9) Clique sobre os outros controles;

10) Renomeie todos conforme sua escolha;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

21

FORMULÁRIOS, CONTROLES E FUNÇÕES

01

02 1) Selecione o dados da planilha que obtém as informações

das siglas dos estados;

2) Altere o nome para “UF” para criar uma região nomeada;

03

04

3) Selecione o controle “UF”;

4) Altera a Propriedade “RowSource” para o nome do campo nomeado criado “UF”,

esta propriedade apresenta a região da planilha que ira aparece na caixa de sele-

ção do formulário;

FUNÇÕES EM VBA

Antes de continuar a desenvolver o formulário, precisamos compreender como

fazemos funções e como ela se comporta no ambiente de desenvolvimento, desta for-

ma vamos construir 3 funções, 1 para inserir e excluir, 1 para movimentar entre os regis-

tros, outra para linkar os campos do formulário com os campos da planilha.

As funções geralmente são atributos que são utilizados quando se repete a mes-

ma estrutura em várias partes do código, desta forma basta chama-la colocando os

campos de parâmetros sem a necessidade de reescrevê-la toda a vez que a mesma

aparecer, e ainda facilita a manutenção dos códigos caso necessário, pois editando

a função ao salvar irá automaticamente mudar para todos os locais que a mesma

aparecer.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

22

FORMULÁRIOS, CONTROLES E FUNÇÕES

01

02

1) Clique para selecionar um novo

objeto;

2) Selecione “Módulo” para iniciar

a criação de uma função;

3) Selecione o módulo criado;

4) Renomeie para “fncRegistro”

5) Insira os parâmetros da função;

03

04

05

Vamos entender como vai a função criada irá funcionar e o que representa ca-

da comando utilizado.

01 02 03 04 05

1) Toda função deve ter uma chamada “Function” que identifica que é uma função

que pode ser utilizada pelo código, seguida de um nome que deve ser sempre sem

espaço entre as palavras, uma dica, procure utilizar nome que identificam o que a

função irá fazer para facilitar o entendimento de quando a função for chamada

dentro de outra parte do código. Após o nome a funções de ter a abertura e fe-

chamento dos parênteses “( )” que podem ou não ter parâmetros delimitadores;

2) “Aba” é nome do parâmetro que foi dado que tem como delimitador “Worksheet”,

isso significa que o valor que for para identificar o campo aba deve ser uma aba

da planilha, caso não seja a função não funcionará;

3) “Linha” e “Coluna” as o número da célula que estiver o registro procurado, ou seja,

o número da linha e da coluna, lembrando que o Excel entende que a célula A1

como Linha=1 e Coluna=1;

4) “Controle” é o campo do formulário que vamos linkar com a planilha;

5) “Opção” é se faremos a conexão da planilha para o formulário ou do formulário

para planilha.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

23

FORMULÁRIOS, CONTROLES E FUNÇÕES

06

6) “Select Case” é uma função responsável de definir uma

determinada rotina caso o item seja selecionado, por

exemplo podemos ter 2 cores, mais 1 de cada vez, ca-

da cor tem um código caso este código seja escolhido

é definido a cor do código selecionado, o “Select Case”

funciona desta forma, onde ao escolher a opção é defi-

nida o que será realizado.

7) Case 1 e 2 são as opções, na primeira opção temos a função buscando dados do

formulário e inserindo na planilha, na segunda o inverso, pegando da planilha e

apresentando no formulário;

Vamos entender o que é cada elemento.

“Aba” é o nome da planilha que está os dodos;

.”Cells” é a propriedade para identificar o local de onde os dados estão sendo

chamados, a propriedade “Cells” trabalha com parâmetros numéricos de linha e

coluna, “.value” identifica que estamos buscando o valor que obtém na célula;

“Controle.Value” identifica o campo do formulário que estamos atribuído o valor.

07

08

8) “End Select” finaliza a o “Select Case”, ou seja após

definir qual “Case” vai ser usado é preciso finalizar

para que posso continuar a execução do código;

“End Function” fecha a função saindo da mesma, encer-

ra a função.

9) Função finalizada com comentários.

09

Este é um exemplo de criação de função todas funções são criadas pratica-

mente o critério de parametrização e depois o código lógico que deseja, de acordo

com necessidade, vamos inserir uma outra função de movimentação entre os regis-

tros antes de voltar para o formulário.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

24

FORMULÁRIOS, CONTROLES E FUNÇÕES

1) Código da função de movimentação comentado;

01

Vamos explorar cada parte ainda não conhecida da função escrita acima pa-

ra entendermos o que está sendo realizado pela função “Movimentação”.

02 2) Temos aqui a declaração das variáveis que não está

identificadas na planilha, elas são definidas por outros

parâmetros por isso precisamos declarar para compa-

rar os valores em outra parte da função;

03

3) Aqui estamos setando o valor da última linha com dados, a variável “Aba.Range

(“A1048576”)” seta que a busca deve ser iniciada na última linha, lembrando que

o Excel desde a versão 2007 tem como limite 1048576 linhas, por isso estamos se-

tando para iniciar na última linha e buscar a primeira linha com dados verificando

debaixo para cima.

“.End(xlUp)” responsável por ir para próxima linha com dados, esta função faz o mes-

mo se pelo atalho do teclado apertasse as teclas “Ctrl+Seta para Cima”;

“.Row” identifica que o valor numérico que estamos buscando é o número da linha.

04

4) “Aba.Activate” ativa a planilha que for definida pela chamada da função, esta

função poderia ser feita chamando “Aba.Select”, mas sempre que possível evite

utilizar o comando “.Select” quando se tem um grande volume de dados e sem-

pre utiliza o comando “.select” pode tornar a macro lenta, tente sempre usar o

“.activate” e só use o “.select” caso realmente seja necessário que o cursor pare

no determinado local.

“ActiveCell.Row” verifica qual é a linha da célula que está ativada / selecionada;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

25

FORMULÁRIOS, CONTROLES E FUNÇÕES

05

5) Seleciona o primeiro valor com dados da lista,

neste caso foi definido que será a linha 2 e

coluna 1, ou seja, a célula “A2”;

Observe que aqui foi utilizado o comando

“.select”, pois desejamos que o cursor pare es-

pecificamente na célula para obter o valor que

estiver armazenado no mesmo.

06

6) Apartir do valor já definido da célula ativa, aqui precisamos selecionar a célula

anterior, então voltamos uma célula, temos um fator de verificação, com a função

“if”

A função “if” significa “se” é muito utilizado em avaliações de opções em programa-

ção, ela avalia se o valor é verdadeiro se for continua a execução senão pula para

próxima etapa caso tenha, no nosso caso estamos verificando se a célula ativa é

maior que 2 pois a linha 2 é nossa primeira linha com dados então temos que restrin-

gir paa parar nela a execução.

“then” significa “então”, ou seja caso seja verdadeiro continuei com a execução;

“End If” significa “Fim do Se”, que finaliza o bloco de verificação;

Temos mais um parâmetro para o bloco “If” chamado de “Else” que significa

“Senão”, que pode ou não ser utilizada, caso tivesse sido utilizado ficaria da seguinte

forma:

If CelulaAtiva-1 >2 then

Aba.Cells(CelulaAtiva-1,1).Select

Else

....

End If

Substituindo os “...” por código lógico de execução.

07

7) Similar o tópico anterior só que a

avaliação é para não deixar o

valor ser maior que o último valor

com dado.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

26

FORMULÁRIOS, CONTROLES E FUNÇÕES

08

8) Nesta opção estamos selecionando o últi-

mo valor com dados.

01

02

1) Selecione a árvore do projeto a aba “Cadastro”;

2) Vá na parte de propriedades e altere a Propriedade (Name) para

“PlanCadastro”;

Vamos voltar para alterar o nome da aba pela propriedade e chamar as fun-

ções dentro do formulário.

03

3) Clique 2 vezes no formulário de Cadastro

para exibi-lo;

05

04

06

4) Selecione o botão “Primeiro” e clique com botão di-

reito do mouse;

5) Clique sobre a opção “Exibir Código”

6) Digite o código na imagem.

07 7) “Call” é utilizando para chamar uma função (Function) ou um “sub”,

neste caso estamos chamando a função que criamos anteriormen-

te; “[PlanCadastro]” é o nome da aba como os dados, e o número

1 identifica qual opção do “select Case” estamos querendo excetu-

ar, neste caso queremos que selecione o primeiro dado da tabela

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

27

FORMULÁRIOS, CONTROLES E FUNÇÕES Vamos criar um “sub” que traz os valores para os seus respectivos controles e de-

pois vamos transferir para cada botão.

01

02

03

04

1) Crie um Novo “Sub Private”, sub private é um rotina privada, ou seja ela não pode ser

chamada fora do modulo original, como uma função que não está privada.

2) Coloque os argumentos para busca da célula atual;

3) Chame a função Para definir os valores do registros, perceba que ao abrir os Parênteses o

VBA já mostra todos os argumentos da função que criamos anteriormente;

4) Insira os parâmetros para cada elemento da seguinte forma:

Aba= Aba (Vai ser definida em outra função)

Linha= CelulaAtiva;

Coluna= Nº da coluna que dado requerido, no nosso exemplo 1, pois estamos buscando a

coluna “Código”

Controle= Nome do Controle do formulário, no exemplo estamos usando [txtCodigo]

Opção=Opção (Será definido em outra Função)

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

28

FORMULÁRIOS, CONTROLES E FUNÇÕES

5) Replique a função para todos os campos;

6) Chame a função “ValorCampos” dentro da ação do botão chamado a opção

2, onde faz link da da planilha com o controle, repita o processo para todos os

boões de movimentação.

06

07

7) Códigos incluídos em cada botão;

05

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

29

FORMULÁRIOS, CONTROLES E FUNÇÕES

01

1) Crie um novo botão e

renomeie como novo;

Vamos agora escrever o código que altera e inseri informações novas na plani-

lha. Começando pela Cadastro de nova informação.

02

03

2) Clique 2 vezes no módulo “fncRegistro” para exibir as funções;

3) Na função “Movimentacao” insirar um novo Case, para incluir quando for um item novo,

função vai levar o cursor para primeira linha em branco;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

30

FORMULÁRIOS, CONTROLES E FUNÇÕES

4) Clique com o botão direito do mouse sobre o

botão “Novo”;

5) Clique em “Exibir código”;

05

04

06

6) Coloque a chama de movimentação no botão “Novo” e

volte para o formulário.

07

08

7) Altere o nome do botão de “Incluir” para “Incluir/

Alterar” e clique com botão direito do mouse sobre o

botão;

8) Clique em “Exibir código.

09

9) Digite o código da chamada da função para colocar o valor dos controles na planilha ao

cli-

10

11

10) Volte para o formulário e clique com botão direito do

mouse sobre o botão “Excluir”;

11) Selecione a opção “Exibir código”;

12

12) Digite o código para excluir a linha com dados;

Aqui temos uma funções que ainda não vimos vamos explorar passo a passo

13 13) Aqui estamos atribuindo a aba que está os dados que deseja-

mos excluir;

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

31

FORMULÁRIOS, CONTROLES E FUNÇÕES

14

14) Função tem como critério selecionar Linhas podendo ser 1 ou mais, como querendo só a

linha ativa usamos o comando “ActiveCell.Row” que traz o número na linha atual, tendo

que ser separado pelo símbolo “&” que significa em VBA concatenação de valores, va-

mos imaginar que a linha a ser exclída seja a 10, então o código estaria lendo da seguin-

te forma: “.Rows(“11:11”)”, sempre que colocamos valore entre aspas no VBA ele entende

como texto, como o valor deve ser setado, deixamos ele fora das aspas e somente os va-

lores textuais que deixamos entre aspas.

15 15) Deleta a linha selecionada;

Agora temos o formulários com todas as funções básicas prontas. Vamos ver co-

mo testar/Depurar o formulário.

DEPURANDO CÓDIGOS

A depuração é uma forma para avaliarmos se o código escrito está correto e se

nenhum erro ira ocorre quando o “programa” estiver rodando ai conseguimos avaliar

os pontos de erros na programação.

01

1) Vamos fazer o primeiro teste utilizando o formulário, para isso acima do formulário tem

um “play”, que significa “Executar”, clique para ver o que acontece;

02

2) Veja que o formulário entra em modo de execução, teste inserir algum dado nos cam-

pos para ver o que aparece.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

32

FORMULÁRIOS, CONTROLES E FUNÇÕES

Vamos conhecer um pouco dos comandos que temos na barra de tarefas editor

de códigos.

Volta para Excel

Cria módulos, formulários e módulos de classe

Salva o projeto

Recorta , Copiar e Colar

Desfazer e Refazer

Executar, Pausar e Parar o código

Modo de Criação do código

Explorer do Projeto: apresenta os objetos, formulários e módulos

Propriedades: apresenta a janela de propriedade do controle ativo

Pesquisar Objetos: Elementos que podem ser utilizados no código

Caixa de Ferramentas: Apresenta os componentes que podem ser usadas em

construção de formulários

Ajuda do VBA

Linha e Coluna ativa do código

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

33

VARIÁVEIS E ESTRUTURAS O QUE É VARIÁVEIS

Variáveis são objetos que o programador define que são pré-determinado um

tipo de dados especifico, por conta de alguma situação especifica, caso não saiba

qual tipo de dado vai ser preenchido o VBA permite deixa o item sem a especificação

do tipo de variável. Temos vários tipos de variáveis que podem ser atribuídas a objetos

ou para fim de cálculo e comparações.

Toda variável deve ser chamada dentro bloco da função ou da rotina e pode

esta em qualquer parte do código ou seja não precisa ser chamada no início.

Exemplo:

01

02

04

03

05

1) Selecione a aba “Desenvolvedor;

2) Clique em “Visual Basic” para abrir o editor de códigos;

3) Clique em opções de objetos;

4) Selecione “Módulo”;

5) Digite o código.

Temos diversos tipos de variaveis que podem ser utilizadas de acordo com tipo

de rotina que estiver sendo realizada, vamos apresentar algumas:

• Integer : armazena valores como números de 16 bits (2 bytes) com valo limite de –

32.768 a 32.767;

• Long: é uma variável do tipo “integer” só que armazena valores numéricos de 32

bits (4 byts) no intervalo de –2.142.483.648 a 2.147.483.647;

• String: é utilizado para caracteres de texto, dados que não é efetuado calculo,

quando atribuído esta variável o vba entende que o valor será um texto;

• Double: utilizada para número principalmente para cálculos que resultados podem

vir até casas decimais, já que o “integer” e “long” não aceitam casas decimais;

• Date: armazena valores de datas e horas;

• Variant: é uma variável usada quando não declaramos o tipo do dado, desta for-

ma ele aceita todos os tipos de dados. Este tipo de variável pode trabalhar com

grande volume de dados.

Esses são os principais e mais usados tipos de variáveis existem outros que são utilizados

em casos específicos.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

34

VARIÁVEIS E ESTRUTURAS ESTRUTURAS DE REPETIÇÃO

Esta é uma condição de busca ou verificação que pode ser feita de diversas for-

mas pelo vba, vai do programador escolher a melhor maneira e aplicar ao seu código.

Vamos conhecer algumas das estruturas:

1) Aqui temos uma estrutura utilizando o co-

mando “Do While”, que significa,

“Enquanto”. Nesta função ira executar um

loop, enquanto o número da linha for me-

nor ou igual a 10, alterado o valor da linha

da coluna 1 para “OK”;

O comando “Loop” fecha a sintaxe do coman-

do fazendo que o mesmo continue repetido

até a condição seja verdadeira.

01

02

2) Aqui temos um versão do

“Do” inversa do que utiliza-

mos no exemplo anterior,

veja que a condição

“while” está junto ao “loop”

e a escrita do comando foi

invertida, ou seja, aqui esta-

mos testando do fim para

inicio.

Aqui temos uma estrutu-

ra utilizando o comando

3) Neste comando tempo a con-

dição “Do Until” que é literal-

mente “Faça até que a linha

tenha valor maior que 10”, ou

seja no comando while sempre

verificava se o valor é menor

que 10 aqui o processo de veri-

fica é inverso; fazendo o loop

até o valor chegar a 11.

03

4) Aqui faz o mesmo que o comando anteri-

or só que busca do maior para menor; 04

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

35

VARIÁVEIS E ESTRUTURAS

05

5) Aqui temos o comando for que um dos

mais utilizados, aqui temos o parâmetro

“1 to 10” a sintaxe “to” significa o “de”

neste caso, ou seja ira variar da linha 1

até linha 10.

6) Aqui temos um for com incremento;

“Incremento é quando queremos

que ele verifique uma somente valo-

res a cada 1 ou 2 linha ou outro va-

lor. No exemplos estamos utilizando

o incremento (“step”) de 2, ou seja a

cada 2 passagem e soma 2.

Então neste exemplo a primeira linha

será a linha 1 e na próxima passagem

será a linha 3 e assim por diante.

06

07

7) Aqui temos uma condição bastante interessante do

VBA que é possibilidade de utilizar condição em

matrizes e não somente em vetores.

Primeiro precisamos declarar as condições que são:

“célula” que é a posição que o curso irá passar a cada

laço;

“Intervalo” é nossa matriz ou o conjunto de dados a ser

avaliado, no exemplo foi escolhido “A1:B15”

Neste caso especifico o for é realizado até finalizar todo

o conjunto de dados.

ESTRUTURAS DE DECISÃO

Agora vamos falar um pouco de estruturas de decisão que avaliam se um condi-

ção é verdadeira para continuar a execução do código.

01

1) Um dos comandos mais utilizado para

decisão de situações em programação é

o ‘if” ele a mesma função “Se” que utili-

zando no excel, aqui usando via código.

“IF”= representa o comando se;

“THEN” = faça;

“ELSE” = senão;

“END IF”= fim da instrução.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

36

VARIÁVEIS E ESTRUTURAS

Uma dos comando que podem auxiliar muito nas estruturas de decisão são os

operadores relacionais e os operadores lógicos, que precisam ser bem conhecido pelo

programador, vejamos os operadores que temos no VBA.

OPERADOR COMANDO SIGNIFICADO

Relacional = Igual a

Relacional <> Diferente

Relacional >= Maior ou Igual

Relacional > Maior

Relacional < Menor

Relacional <= Menor ou Igual

Lógico OR Ou

Lógico AND E

Lógico NOT Negação

Lógico NULL Nulo

Lógico Empty Vazio

02 2) Select Case é um outro exemplo de estrutura

de decisão onde temos uma variável com va-

lor que é verificada de acordo com o “Case”,

caso, ele entra na função correta a ser execu-

tada, caso nenhuma seja ele sai do comando,

esta função usamos no exemplo da constru-

ção de formulário.

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

37

PLANILHA E PASTA DE TRABALHO EVENTOS DE PASTA DE TRABALHO E PLANILHAS

O VBA possibilita realizar rotinas que interagem diretamente por ações que é rea-

lizada dentro da planilha, ou seja, ao fazer alguma ação que que está programada

ele irá executar uma função. Vamos apresentar somente alguns das possibilidades que

podemos ter neste tipo de trabalho.

01

02

03

04

05

06

07

1) Selecione a aba “Desenvolvedor”;

2) Clique no comando “Exibir Código”

3) Selecione na combox “(Geral”);

4) Clique em “Worksheet”;

5) Ira ser introduzido automaticamente um comando “Worksheet_SelectionChange”, altere clicando

em “SelectChange”

6) Selecione o comando “Activate”

7) Digite o comando;

8) Resultado do comando;

Este função básica será realizada toda a vez que ativarmos ou selecionarmos a “Planilha 1”, emitindo

a mensagem;

Todos os comando que aparecem no passo 5 e 6 são opções que temos de rotinas a partir de alguma

ação das planilhas, seja ao alterar célcula, ao calcular, ao inserir um tabela dinâmico, clicar 2 vezes

na céclula e ao atualizar, partir desse pode-se ativa funções que dentro deste comandos.

08

CU

RSO

DE V

BA

PA

RA

EX

CEL

Pági

na

38

PLANILHA E PASTA DE TRABALHO

01

02

03

04

1) Clique 2 vezes sobre “EstaPastaDeTrabalho;

2) Selecione “Workbook”;

3) Escolha a opção “Open”

4) Digite o código.

A grande diferença aqui que estamos executando operações

que vão impactar do a pasta de trabalho, no Worksheet, só é

executado na aba que estiver ativa;

No nosso exemplo foi executado um comando de espera de 5

segundos ao abrir a planilha.

Pode-se fazer vários comando como pode ser visto no passo 3

que nos mostra todas as possibilidade para realizar chamadas

de acordo com o parâmetro desejado.