Excel VBA

download Excel VBA

of 50

Transcript of Excel VBA

Excel VBA - Parte IV:Inserindo um formulrio e seus comandosdesenvolvendo VBA atravs de um exemplo prtico Nesta parte do artigo vamos ver como inserir formulrios e seus componentes.Contedo

O Editor do Visual Basic Inserindo um formulrio A caixa de ferramentas Criando o formulrio 1 Alterando as propriedades dos objetos Criando o formulrio 2

O Editor do Visual Basic Quem leu, ou assistiu ao filme, As crnicas de Nrnia de C.S. Lewis, pode imaginarque a porta do guarda roupas que separa os dois universos uma das opes do menu do Excel. Essa porta sempre esteve presente no aplicativo e tudo que temos que fazer para acessar essa outra dimenso descobri-la e transp-la. Faa isso atravs da seqncia: Ferramentas > Macro > Editor do Visual Basic.

Voc no ir encontrar seres mitolgicos e encantados, mas irencontrar um ambiente totalmente novo, onde impera a lgica e o desafio. Neste ambiente voc pode tudo e tudo o que imaginar pode se tornar realidade...

Como no conto, o primeiro contato sempre um mistrio, mas medida que nos aventurarmos nos comandos e painis iremos adquirir a confiana e o conforto necessrio para desenvolvermos nossos programas. os painis que utilizaremos com mais freqncia.

Por ora vamos apenas dar uma olhada nas partes essenciais e aprender como visualizar

Esse o mapa do universo onde iremos nos aventurar. Essencialmente, se no estivervendo os painis mostrados na figura acima, clique em Exibir e selecione:

Janela "Verificao Imediata" Project Explorer Janela "Propriedades"

Inserindo um formulrio Abra o Excel e acesse:

Ferramentas>Macro>Editor do VisualBasic, ou mais diretamente, segure a tecla ALT pressionada e tecle F11. J tivemos oportunidade de conhecer o painel do editor do Visual Basic quando utilizamos o gravador de macros na segunda parte deste artigo. Desta vez vamos criar um formulrio. Imagine um formulrio como sendo a imagem exibida por um programa qualquer quando o executamos. Por exemplo, o prprio Excel um formulrio composto por clulas e barras de menu. O Word tambm um formulrio.

Para inserir um formulrio utilizando o VBA do Excel, clique em: Inserir> UserForm Duas coisas devem ocorrer: Um formulrio de nome "UserForm1" ser exibido, uma nova janela, denominada "Caixa de ferramentas" deve aparecer.

Como dissemos, se a caixa de ferramentas no aparecer, selecione Exibir na barra demenu principal e clique sobre Caixa de ferramentas.

As ferramentas que aparecem na caixa de ferramentas so bastante conhecidas de todousurio de computador. Vamos olhar essa caixa um pouco mais de perto.

A caixa de ferramentas

A caixa de ferramentas um formulrio bem ao estilo do Visual Basic, contm vrioscones correspondentes aos diversos tipos de ferramentas que podemos utilizar ao desenvolver um programa. Em nosso exemplo iremos utilizar apenas algumas dessas ferramentas:

Melhor que descrever o que faz cada uma dessas ferramentas mostrar. As prximas

figuras indicam quais ferramentas foram utilizadas no programa exemplo para compor os formulrios UserForm1 e UserForm2:

Criando o formulrio 1 Insira um formulrio. Por padro ele ir receber o nome de UserForm1. Vamosmanter este nome. Label: Acesse a caixa de ferramentas. Clique sobre o cone label e clique e arraste no formulrio para desenhar um retngulo como mostrado a seguir:

ComboBox:Clique agora sobre a ferramenta caixa de combinao. Clique e arraste sobre o formulrio, conforme a prxima figura :

CommandButton:Introduza dois botes de comando da mesma forma como fez para o Label e para o ComboBox. O seu formulrio deve estar parecido com o apresentado a seguir. Se necessrio, clique sobre os objetos e ajuste o tamanho e posio dos mesmos.

Alterando as propriedades dos objetos

Existem algumas diferenas visveis entre o formulrio que acabamos de criar e oformulrio que queremos que o programa exiba.

Alm das descries dos objetos tambm queremos alterar o tamanho e formato do

texto, sublinhar o E em Encerrar e o A em Acessar. Essas alteraes so feitas acessando-se as propriedades de cada objeto, como veremos a seguir.

Cada um dos objetos contidos no formulrio possui propriedades que podem ser

alteradas. Vamos comear por Label1. Clique nesse objeto e examine o painel propriedades. Cada uma das propriedades mostradas configura a aparncia e o comportamento do objeto. Vamos alterar a propriedade Caption.

A propriedade Caption modifica o texto exibido no formulrio. Substitua a palavraLabel1 que aparece na coluna ao lado da palavra Caption por Selecione o seu nome:, como mostra a figura ao lado. Clique em qualquer lugar fora do texto que acabou de digitar para que o formulrio seja atualizado.

Para fazer com que a borda ao redor do texto ajuste-se ao seu tamanho, primeiro arrastea borda com o mouse at o ponto que julgar conveniente, arrumando o texto ao seu gosto. Depois localize a propriedade Autosize e altere para True.

Outra propriedade que utilizo com muita freqncia

Font. Essa propriedade permite alterarmos a maneira como o texto apresentado, tal como o seu tamanho, cor e tipo. Com o texto selecionado no formulrio, clique sobre a propriedade Font. D duplo clique sobre o boto que aparece ao lado direito para acessar o painel para alterao da fonte.

Para efeito deste artigo, sempre que tivermos que alteraruma propriedade, eu indicarei da seguinte forma:

Nome do Objeto (identificao na tela) Propriedade: novo valor

Adotando essa notao para o Label1, como vimosacima, a notao fica da seguinte forma:

Label1 (Selecione o seu nome:)

Caption: Selecione o seu nome: Font: Arial; Negrito;10

Para os outros elementos em UserForm1, altere as propriedades a seguir: UserForm1

Caption: Medio de peas Tela de acesso; Font: Arial; Negrito;14 (Name): cbx_Usuarios Font: Arial; Negrito;10 (Name): cmd_Encerrar Caption: Encerrar Font: Arial; Negrito;10 Accelerator: E (Name): cmd_Acessar Caption: Acessar Font: Arial; Negrito;10 Accelerator: A

ComboBox1

CommandButton1 (Encerrar)

CommandButton2 (Acessar)

Duas observaes so importantes neste ponto:

A propriedade Accelerator faz com que surja um sublinhado abaixo da letra que indicamos, portanto essa letra tem que estar contida na propriedade Caption do objeto. Esse sublinhado significa que se o usurio, ao rodar o

programa, segurar a tecla Alt e apertar a tecla destacada, o comando ser executado da mesma forma como se tivssemos clicado sobre o boto com o mouse.

A propriedade (Name) altera o nome do objeto, portanto ao mudarmos essa propriedade o objeto com o nome anterior deixa de existir e precisamos nos referenciar ao mesmo como o novo nome dado. Significa que se procurarmos o Commandbutton1 no iremos encontr-lo, em seu lugar teremos cmd_Encerrar.

Criando o formulrio 2

Completamos esta parte do artigo com a insero do segundo formulrio. Insira um

novo formulrio (Inserir > UserForm). Ele receber o nome padro de UserForm2. Examine a figura ao lado e crie os controles mostrados, alterando as suas propriedades conforme o indicado mais abaixo (para ver a imagem ampliada, clique sobre a mesma). UserForm2

Caption: Medio de peas - tela de dados BackColor: &H8000000A&Amp; Font: Arial; Negrito;14

Nota: a propriedade BackColor altera a cor do

formulrio. Ao acess-la selecione uma cor em uma das duas paletas que vo aparecer. O cdigo acima colocado na propriedade automaticamente, porm se preferir, pode digit-lo diretamente.

Altere a propriedade Font de todos os objetos para: Arial; Negrito; 10, exceto ondeindicado diferente.

Label2 (29/07/2009)> Caption: Data Caption: Nome Label1 (Joo Da Silva)>

Altere todos os outros Labels dando propriedade Caption o mesmo que aparecena tela. Selecione todos os Labels, para isso selecione um Label qualquer e

mantenha a tecla shift apertada enquanto clica sobre os demais. Altere a propriedade Font:

Labels (todos)>

Font: Arial; Negrito; 10 BackColor: &H8000000A&

Nota: ao alterarmos a cor de um formulrio temos que alterar tambm a cor de fundodos Labels, Frames e OptionButtons. Se no fizermos isso o aspecto do formulrio fica prejudicado.

ComboBox1 (abaixo de Selecione o local de trabalho:)

(Name): cbx_Local

ComboBox2

(Name): cbx_Equipamentos

Selecione todas as caixas de texto e altere a propriedade Font:

TextBox (todos)

Font: Arial; Negrito; 10 Caption: Tipo de medio BackColor: &H8000000A& Font: Arial; Negrito; 12 Caption: Setup BackColor: &H8000000A& Caption: Rotina BackColor: &H8000000A& Caption: Aprovado BackColor: &H8000000A& Caption: Reprovado BackColor: &H8000000A& Caption: Cancelar Accelerator: C

Frame1 (tipo de medio)

OptionButton1

OptionButton2

OptionButton3

OptionButton4

CommandButton1 (Cancelar)

CommandButton2 (Salvar)

Caption: Salvar Accelerator: S

Excel VBA Parte V: Adicionando cdigo aos controles: UserForm1desenvolvendo VBA atravs de um exemplo prtico Nesta parte do artigo vemos como encerrar o programa e popular os "ComboBox".Contedo Encerrando o programa Preenchendo um Listbox ou um ComboBox A sintaxe A estrutura lgica Do While Explicando o cdigo

Encerrando o programa Abra nosso programa exemplo no Excel, acesse o Editor do Visual Basic e d um cliqueduplo sobre o cone do UserForm1 , no painel do "Project Explorer". Clique sobre o formulrio para selecion-lo e em seguida clique no sinal de avanar, na barra de ferramentas do menu principal, conforme a figura a seguir:

Observe que o formulriodeve estar selecionado, se estiver, ao clicar no cone mostrado no destaque voc dever ver o programa em execuo mostrando o formulrio aguardando um comando, como mostrado ao lado.

Clique sobre os objetos, ou seja, boto Encerrar, boto Acessar e na seta do ComboBox e veja o que ocorre.

Perfeito. Voc acabou de aprender que os objetos necessitam de cdigos de programapara poderem funcionar, ou seja, no executam nada por si s. O primeiro cdigo que iremos inserir neste formulrio o cdigo para encerrar o programa, para isso siga os passos: Saia do modo de execuo clicando sobre o cone representado por um X no formulrio. D duplo clique sobre o boto Encerrar para abrir o painel de codificao.

Muita ateno nesta hora! Observe que quando damos um duplo clique sobre um objetono formulrio, aparece o painel de codificao e o cursor fica localizado no mtodo padro para o objeto selecionado. Esse mtodo o mtodo mais comum durante a programao do objeto, no significa que temos que aceit-lo. Vamos examinar o mtodo proposto pelo Visual Basic:

O mtodo identificado pelo nome Click que aparece na caixa de combinao direita do formulrio, como mostrado em destaque na figura. A outra forma de identificarmos o mtodo lendo o nome dado rotina onde o cursor est piscando, tambm mostrado em destaque. Existem muitos outros mtodos e cada um tem um comportamento diferente. Para nosso exemplo, o mtodo Click perfeito. Esse mtodo significa que o cdigo que est escrito entre as palavras Private Sub cmd_Encerrar_Click() e End sub ser executado sempre que Clicarmos com o mouse sobre esse objeto. Digite a palavra END no local onde o cursor est piscando. Clique novamente no cone de avanar para rodar o programa e clique sobre o boto Encerrar para ver o que ocorre.

A palavra End uma palavra reservada no Visual Basic e sua funo encerrar oprograma em execuo.

Preenchendo um Listbox ou um ComboBox

ComboBox e ListBox so caixas de listagem que contm uma srie de dados que podem ser selecionados atravs de um click. Duas coisas devem ser consideradas ao se utilizar esse tipo de objeto: Deve existir em algum lugar, a lista dos itens que ir popular o objeto, e... Os dados devem estar presentes e disponveis ao usurio assim que o formulrio for exibido, sem a necessidade de clicarmos em coisa alguma;

No Excel, a forma mais prtica de se definir a lista dos dados consiste em se deixar umadas planilhas especificamente para conte-los, definindo as clulas ou grupos de clulas que devem ser acessadas para obt-los. Com isso a manuteno tambm fica bastante simples, basta acessar a planilha e inserir, deletar ou alterar os dados. Acesse a planilha Plan2 e digite a seqncia de dados a seguir a partir da clula A1: UsrFrm1:Nomes dos Usuarios Joo dos Santos Jos Incio Francelino Gonalvez Jocimar da Cruz Ana Carina Bruna da Silva Dbora dos Santos Camila Dias

O segundo item, deixar os dados disponveis desde a abertura do formulrio,

facilmente obtido se declararmos o cdigo para populao do objeto no evento de abertura do prprio formulrio.

Vamos entender isso um pouco melhor. Quando um formulrio qualquer, em Visual

Basic, mostrado na tela uma parte do programa necessria para apresentar o formulrio processada instante antes do mesmo ser exibido. Por exemplo, se quisermos que a cor, o tamanho, o nome ou qualquer outra caracterstica seja ajustado ao exibi-lo, temos que declarar isso no evento Activate. Do mesmo modo, se quisermos que objetos do tipo ListBox ou ComboBox estejam preenchidos assim que o formulrio for exibido, temos que declarar o cdigo que ir preenche-los nesse mesmo evento. Vamos ver como fazer:

D um duplo clique sobre uma rea vazia do formulrio. Ver que ser exibido oseguinte cdigo: End Sub Private Sub UserForm_Click()

J vimos que o evento Click foi til ao definirmos o cdigo para o boto Encerrar,no entanto, no presente caso queremos inserir o cdigo para preencher o ComboBox cbx_Usurios antes que o formulrio seja exibido. Tambm vimos que temos que declarar esse cdigo no evento Activate, portanto, clique na caixa de listagem no

canto superior direito do painel de codificao e selecione a palavra Activate, como detalha a figura a seguir:

A sintaxe

A instruo do Visual Basic que insere um item em um ComboBox ou ListBox AddItem. A sintaxe deste comando : Objeto.Additem descrio do item

Nosso objeto o cbx_Usuarios, portanto para inserirmos o nome do Joo dos Santostemos que colocar na sintaxe: cbx_Usuarios.Additem Joo dos Santos

Note que o nome veio entre aspas. Sempre que utilizarmos sentenas em atribuies

elas devem vir entre aspas. Uma forma de memorizar isso: dados alfanumricos devem ser fornecidos entre aspas. Esse tipo de dado conhecido em Visual Basic como String, ou seja, uma cadeia de caracteres.

Para inserirmos os oito nomes que temos cadastrados em nossa planilha existem ao cbx_Usuarios.Additem Joo dos Santos cbx_Usuarios.Additem Jos Incio cbx_Usuarios.Additem Francelino Gonalvez cbx_Usuarios.Additem Jocimar da Cruz cbx_Usuarios.Additem Ana Carina cbx_Usuarios.Additem Bruna da Silva cbx_Usuarios.Additem Dbora dos Santos cbx_Usuarios.Additem Camila Dias

menos dois mtodos. O mais imediato a atribuio direta de todos os nomes, sendo assim, teramos que repetir a sentena acima para cada um dos itens do ComboBox:

Esse mtodo apresenta algumas desvantagens: trabalhoso, repetitivo e montono, alm disso... Se quisermos inserir novos nomes temos que alterar o cdigo do programa.

Felizmente existe outra maneira muito mais interessante para podermos popular o

ComboBox utilizando uma estrutura lgica que ir repetir sempre o mesmo comando

Additem. Uma segunda estrutura lgica ir indicar que os nomes existentes na planilha terminaram, encerrando a repetio dos comandos. Antes de fazermos isso vamos conhecer como essas estruturas lgicas funcionam.A estrutura lgica Do While

As estruturas lgicas permitem que se d inteligncia aos programas. atravs dessas estruturas que decidimos entre vrias opes, escolhemos um caminho, emitimos mensagens e claro, executamos comandos repetitivos. A estrutura Do While se presta exatamente a essa ltima tarefa.A sua sintaxe :

Do While CONDIO LGICA cdigo... Loop

Enquanto a condio lgica for satisfeita, tudo o que estiver entre o DoWhile e o Loop ser repetido. Podemos escrever o cdigo da seguinte forma:

A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso) Preencher = True Selecionar a planilha onde esto os itens que iro popular o ComboBox: Sheets(Plan2).select Selecionar a clula inicial da listagem dos itens que iro popular o ComboBox. Observe que selecionamos a clula que contm o cabealho e no o primeiro nome Range(A1).select Iniciar a execuo da estrutura lgica Do While Preencher = true Selecionar a clula que est na linha imediatamente inferior ActiveCell.offset(1,0) cbx_Usuarios.AddItem ActiveCell.value Loop

Obs: as linhas iniciadas com um apstrofe (cor verde) so linhas de comentrio. O Visual Basic ignora essas linhas durante a execuo do programa e elas auxiliam na compreenso da lgica.

Se tentarmos executar o cdigo do jeito que est, o programa entrar noque chamamos de lao perptuo, ou seja, o cdigo ir se repetir indefinidamente e o programa ficar travado. Caso isso ocorra, segure a tecla CTRL pressionada e aperte a tecla BREAK. Com isso a execuo ser interrompida.

O lao perptuo ocorre porque aps incluir o valor da clula nocbx_Usuarios, o Excel avana uma linha e repete o comando e vai fazendo isso eternamente porque a condio Preencher = True no alterada em nenhum momento. Para evitarmos que isso acontea, temos que avaliar o contedo da clula ativa. Se o contedo for vazio, ou seja, sem contedo, temos que alterar a condio lgica de True para False, fazendo com que o lao seja encerrado.

Private Sub UserForm_Activate() ' A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso) Preencher = True 'Selecionamos a planilha onde esto os dados a popularem o combobox: Sheets("Plan2").Select 'Selecinamos a clula onde est o ncio dos dados. 'Note que selecionamos o cabealho da lista e no o primeiro nome Range("A1").Select 'Iniciamos a execuo da estrutura lgica Do While Preencher = True 'Seleciona a clula que est na linha imediatamente inferior ActiveCell.Offset(1, 0).Select 'Testa o valor da clula e decide se o lao deve ou no continuar If ActiveCell.Value = vbNullString Then 'Se a clula estiver vazia, altera a condio lgica Preencher = FalseELSE

'se no estiver, acrescenta o item cbx_Usuarios.AddItem ActiveCell.Value End If Loop End Sub

Vamos testar nosso programa e fazer alguns comentrios teis. Clique na planilha

Plan2 e depois selecione: Ferramentas> Macro> Editor do Visual Basic. Dimensione a janela do editor de modo a poder ver a planilha ao fundo, para acompanhar a execuo do programa. Clique em qualquer lugar da rotina Private Sub UserForm_Activate(), acesse ento na barra do Menu Principal Depurar e Depurao Total, conforme mostra a figura a seguir:

Note que a primeira linha da rotina est em destaque e uma pequena seta amarela marcaa posio do cursor. Tecle [F8] uma vez. Veja que o destaque e a seta passam para a

prxima linha vlida, ignorando os comentrios que fizemos ao colocar uma aspa simples no incio da frase.

Continue teclando [F8] e observe na planilha ao fundo a clula ativa deslocar-se at

atingir a ltima posio preenchida, A9. Pressione [F8] novamente at que a leitura da clula A10, em branco, provocar a mudana do estado lgico, fazendo com que o lao termine.

Neste ponto, tecle [F5] devolvendo o controle do programa ao computador. Minimize a

janela do Visual Basic e clique na seta do ComboBox para ver os nomes adicionados, como a seguir:

Explicando o cdigo

Existem vrios tipos de dados no Visual Basic, neste exemplo tivemos a oportunidade

de conhecer o tipo Boolean. Este tipo de dado pode ter apenas dois valores: Verdadeiro ou Falso. Sempre que utilizarmos uma estrutura lgica do tipo Do While temos que iniciar uma varivel deste tipo como verdadeira e exatamente isso que faz a linha: Preencher = True

O nome da varivel, neste caso, Preencher e claro, o valor atribudo True ouverdadeiro.

No cdigo chamamos ateno para a seleo da planilha onde esto contidos os dadosque queremos obter para popular o ComboBox: Sheets(Plan2).Select

Essa regra muito importante porque se no fizer isso e testar a rotina com a planilha

selecionada por voc atravs do mouse, o programa ir funcionar normalmente, porm ao rod-lo a partir de um boto ele tentar executar a mesma coisa, qualquer que seja a planilha selecionada pelo usurio no momento, causando erros.

A instruo:Range(A1).Select remete o cursor do Excel para a primeira clula onde o contedo apenas o cabealho dos dados, ou seja, no um dado que queremos incluir no ComboBox por isso, ao iniciarmos o preenchimento do mesmo, avanamos uma linha. Esse avano dado pela instruo:

ActiveCell.Offset(1,0).Select

Esse comando muito til. Ele diz ao Excel que, partir da clula onde o cursor est

atualmente, deslocar-se em 1 linha e Zero colunas e ento selecionar essa posio, tornando-a ativa. A sintaxe deste comando ActiveCell.Offset(LINHAS,COLUNAS). Como no exemplo temos (1,0), a clula se desloca uma linha e nenhuma coluna. Nmeros negativos tambm podem ser utilizados. Veja as referencias na figura a seguir:

Finalmente, para este formulrio, vamos dar uma olhadinha na instruo:If condiao Then executa algo Else executa algo diferente End if

Essa estrutura lgica verifica se a condio logo aps a palavra chave IF verdadeira ou falsa. Se for verdadeira, executa a instruo logo abaixo, se no for verdadeira, executa a instruo abaixo da palavra ELSE. Em nosso exemplo a condio testada A clula que estamos examinando est vazia traduzida para ActiveCell.Value = vbNullString. Sendo isso verdadeiro, ou seja, se a clula estiver realmente vazia, atribudo o valor False para a varivel Preencher, encerrando a repetio dos comandos, caso contrrio, acrescenta o contedo da clula no ComboBox atravs do comando que j vimos: cbx_Usuarios.AddItem ActiveCell.Value.

Algumas observaes a respeito do ComboBox que acabamos de preencher:1. Os nomes no esto dispostos em ordem alfabtica.

Para resolver isso, coloque o cursor em qualquer lugar da planilha Plan3, inicie o gravador de macros, nomeie a macro como OrdenarNomes e ordene os nomes para que fique em ordem crescente. Finalize a gravao, acesse novamente o formulrio 1 atravs do Editor do Visual Basic e acrescente a seguinte linha de cdigo no evento UserForm_Activate(): 'Ordena os nomes da lista

Call Mdulo1.OrdenarNomes2. Ao apresentar o formulrio o ComboBox estar mostrando uma linha vazia at clicarmos na seta.

Para que ele inicie j mostrando o primeiro nome, aps o seu preenchimento inclua a seguinte linha aps a palavra Loop: cbx_Usuarios.ListIndex = 03. Para evitar que, durante programas mais complexos onde temos que acessar um mesmo formulrio varias vezes, o ComboBox seja populado com os mesmos dados repetindo-os, utilize a instruo Clear antes de iniciar o seu preechimento.

O cdigo completo para o formulrio exibido a seguir: --------------------------------------------------------------------------------------------------------Private Sub cmd_Encerrar_Click() End End Sub

--------------------------------------------------------------------------------------------------------Private Sub UserForm_Activate() ' A estrutura lgica ser denominada Preencher, que pode receber o valor de True (verdadeiro) ou False (falso) Preencher = True'Ordena os nomes

Call Mdulo1.OrdenarNomes'Esvazia o ComboBox,caso j esteja preenchido:

cbx_Usuarios.Clear'Selecionamos a planilha onde esto os dados a popularem o combobox:

Sheets("Plan2").Select'Selecinamos a clula onde est o ncio dos dados.

'Note que selecionamos o cabealho da lista e no o primeiro nome Range("A1").Select'Iniciamos a execuo da estrutura lgica

Do While Preencher = True 'Seleciona a clula que est na linha imediatamente inferior ActiveCell.Offset(1, 0).Select'Testa o valor da clula e decide se o lao deve ou no continuar

If ActiveCell.Value = vbNullString Then 'Se a clula estiver vazia, altera a condio lgica Preencher = False Else 'se no estiver, acrescenta o item cbx_Usuarios.AddItem ActiveCell.Value End If Loop'Coloca o ComboBox na primeira posio vlida:

cbx_Usuarios.ListIndex = 0End Sub ----------------------------------------------------------------------------------------------------------

Excel VBA Parte V: Adicionando cdigo aos controles: UserForm2

Contedo

Alterando as propriedades de "Labels" Iniciando uma macro automaticamente ao abrir o Excel Inserindo os dados para preenchimento dos "ComboBox" O cdigo para preencher os "ComboBox" Boto Cancelar Boto Salvar Inserindo dados Atualizando o relatrio Inserindo o cdigo A estrutura lgica "Select Case"

menosmais Link permanente para este knol:http://knol.google.com/k/francisco-peres-sanches/excel-vba-parte-v-adicionan

LinkFrancisco Peres Sanches. Excel VBA Parte V: Adicionando cdigo aos

Citao E-mailImprimir Favorito Colecionar esta pgina

Alterando as propriedades de "Labels"Abra o editor do VBA, selecione o UserForm1 e d dois cliques sobre o botoAcessar.

Digite o cdigo como mostrado a seguir:Private Sub cmd_Acessar_Click() UserForm2.Label1 = cbx_Usuarios.Text

UserForm2.Label2 = Date UserForm2.Show End Sub

O formulrio 1 est pronto para ser utilizado, no entanto necessitamos de um modo parafazer com que o mesmo seja exibido assim que a planilha do Excel for aberta, ou seja, quando o usurio clicar no cone da planilha, o Excel inicia e apresenta o formulrio sem interveno do usurio.

Iniciando uma macro automaticamente ao abrir o Excel Felizmente os desenvolvedores do Excel previram que isso seria interessante e criaram Abra o mdulo1, clique em: Inserir> Procedimento. D o nome de Auto_Open edigite a frase: UserForm1.show. O cdigo deve ficar como a seguir: Public Sub Auto_Open() UserForm1.Show End Sub

um mtodo bastante simples: Crie uma macro com o nome de Auto_Open(). Tudo o que estiver nesta macro ser executado automaticamente quando a planilha for exibida.

Salve a planilha. Feche o Excel. Localize o arquivo atravs do Windows Explorer e dduplo clique sobre o nome do mesmo. Voc ir notar que a planilha ir se abrir, apresentando o formulrio. apresentado conforme a figura ao lado:

Selecione um nome no ComboBox e clique no boto Acessar. O UserForm2 ser

Fica fcil de entender que ao fazermos referncia ao UserForm2, estando ainda no

UserForm1, podemos alterar as propriedades de seus componentes. Foi isso que fizemos com o Label1 e Label2 que agora apresentam o nome do usurio que acessou a rotina e a data de acesso: UserForm2.Label1 = cbx_Usuarios.Text UserForm2.Label2 = Date

Inserindo os dados para preenchimento dos "ComboBox"Vamos preencher os ComboBox referentes ao local de trabalho e aos equipamentos utilizados. Acesse a planilha onde colocou o nome dos usurios (Plan2). Siga cuidadosamente as instrues a seguir: Clula B1 B2 B3 B4 B5 Clula C1 C2 C3 C4 C5 C6 C7 C8 Digite UsrFrm2:Laboratrios Sala de Medies MHDT Gear Lab MHDT Sala de Medies LHDT Gear Lab LHDT Digite UsrFrm2:Equipamentos Circularmetro Estudo de deformaes Gear Lab Perfilmetro Quality Gate Parada de forno Batidas

O cdigo para preencher os "ComboBox"Abra o Editor do Visual Basic e acesse o UserForm2. Selecione o mtodo Activate e digite o cdigo a seguir: Private Sub UserForm_Activate() 'Preenche o ComboBox cbx_Local: 'Esvazia o ComboBox,caso j esteja preenchido: cbx_Local.Clear 'Selecionamos a planilha onde esto os dados a popularem o combobox: Sheets("Plan2").Select 'Selecinamos a clula onde est o ncio dos dados. 'Note que selecionamos o cabealho da lista e no o primeiro nome Range("B1").Select Preencher = True 'Iniciamos a execuo da estrutura lgica Do While Preencher = True 'Seleciona a clula que est na linha imediatamente inferior

ActiveCell.Offset(1, 0).Select 'Testa o valor da clula e decide se o lao deve ou no continuar If ActiveCell.Value = vbNullString Then 'Se a clula estiver vazia, altera a condio lgica Preencher = False Else 'se no estiver, acrescenta o item cbx_Local.AddItem ActiveCell.Value End If Loop 'Coloca o ComboBox na primeira posio vlida: cbx_Local.ListIndex = 0 '========================================================= 'Preenche o ComboBox cbx_eqptos 'Esvazia o ComboBox,caso j esteja preenchido: cbx_eqptos.Clear 'Selecionamos a planilha onde esto os dados a popularem o combobox: Sheets("Plan2").Select 'Selecinamos a clula onde est o ncio dos dados. 'Note que selecionamos o cabealho da lista e no o primeiro nome Range("C1").Select Preencher = True 'Iniciamos a execuo da estrutura lgica Do While Preencher = True 'Seleciona a clula que est na linha imediatamente inferior ActiveCell.Offset(1, 0).Select 'Testa o valor da clula e decide se o lao deve ou no continuar If ActiveCell.Value = vbNullString Then 'Se a clula estiver vazia, altera a condio lgica Preencher = False Else 'se no estiver, acrescenta o item cbx_eqptos.AddItem ActiveCell.Value End If Loop 'Coloca o ComboBox na primeira posio vlida: cbx_eqptos.ListIndex = 0 End Sub

Se estiver curioso, pode rodar o programa atravs da macro Auto_Open() e ver ofuncionamento dos ComboBox.

Boto CancelarAcionando esse boto o usurio ir limpar todos os lanamentos feitos no formulrio2 e retornar ao formulrio 1.

Abra o Editor do Visual Basic, acesse o UserForm2 e d dois cliques sobre o botoCancelar. O evento padro Click e esse evento que iremos utilizar. Digite o cdigo a seguir : Private Sub CommandButton1_Click() 'Esse comando ir limpar os dados do UserForm2 e retornar ao UserForm1 'Faz com que as informaes dos text box sejam canceladas TextBox1.Text = vbNullString TextBox2.Text = vbNullString TextBox3.Text = vbNullString TextBox4.Text = vbNullString TextBox5.Text = vbNullString 'Desativa a exibio do UserForm2 Unload Me 'Ativa a exibio do UserForm1 UserForm1.Show End Sub

Boto SalvarA funo deste boto colocar toda a informao existente no UserForm2 em umaplanilha de modo a podermos acess-la quando for conveniente. Vamos utilizar a Plan3 para armazenar os dados.

Acesse a Plan3 e digite conforme a seguir:Clula A1 B1 C1 D1 E1 F1 G1 H1 Digite Data Usurio Local Equipamento Pea No Pea Desc Qtd Inicio

I1 J1 K1 L1

Fim Total Tipo Resultado

Abra o Editor do Visual Basic, acesse o UserForm2 e d dois cliques sobre o botoPrivate Sub CommandButton2_Click() 'Insere as informaes no banco de dados 'Seleciona a planilha Sheets("Plan3").Activate 'Posiciona o cursor na primeira linha da planilha Range("3:3").Select 'Insere uma nova linha de dados (registro) Selection.Insert Shift:=xlDown 'Seleciona a primeira clula da nova linha e informa a data Range("A3").Select ActiveCell.Value = Label2.Caption 'Informa o nome do usurio: ActiveCell.Offset(0, 1).Value = Label1.Caption 'Informa o local onde foi feito o trabalho: ActiveCell.Offset(0, 2).Value = cbx_Local.Text 'Informa o equipamento que foi utilizado ActiveCell.Offset(0, 3).Value = cbx_eqptos.Text 'Informa o nmero da pea ActiveCell.Offset(0, 4).Value = TextBox1.Text 'Informa a descrio da pea ActiveCell.Offset(0, 5).Value = TextBox2.Text 'Informa a quantidade de peas ActiveCell.Offset(0, 6).Value = TextBox3.Text 'Informa a hora de inicio ActiveCell.Offset(0, 7).Value = TextBox4.Text Inicio = CDate(TextBox4.Text) 'Informa a hora de fim ActiveCell.Offset(0, 8).Value = TextBox5.Text Fim = CDate(TextBox5.Text) 'Calcula o total

Salvar. O evento padro Click e esse evento que iremos utilizar. Digite o cdigo a seguir :

total = CDate(Fim - Inicio) ActiveCell.OffSet(0,9).Value = total 'Informa o tipo de trabalho If OptionButton1.Value = True Then ActiveCell.Offset(0, 10).Value = "Set-Up" Else ActiveCell.Offset(0, 10).Value = "Rotina" End If 'Informa o resultado da medio If OptionButton3.Value = True Then ActiveCell.Offset(0, 11).Value = "Aprovado" Else ActiveCell.Offset(0, 11).Value = "Reprovado" End If 'Limpa os dados para nova entrada 'Limpa as caixas de texto TextBox1.Text = vbNullString TextBox2.Text = vbNullString TextBox3.Text = vbNullString TextBox4.Text = vbNullString TextBox5.Text = vbNullString 'Posiciona cbx_local e cbx_eqptos na primeira posio cbx_Local.ListIndex = 0 cbx_eqptos.ListIndex = 0 End Sub

Inserindo dadosVamos executar alguns exemplos. Saia do Editor Do Visual Basic e acione a macroAuto_open.

Selecione um usurio e clique sobre o boto Acessar. Selecione ou digite os dadosabaixo, conforme o caso:

Clique no boto Salvar. Entre com novos exemplos a sua vontade. O importante testar todas as condies doComboBox cbx_Local e se estiver disposto, tambm todas as possibilidade do cbx_eqptos. Se preferir utilize os dados presentes na figura a seguir. Plan3 aps a insero dos dados de exemplo (clique para ampliar):

O programa, cada vez que um registro salvo, insere uma linha na posio 3,

deslocando as outras linhas para baixo. Deste modo, as inseres mais recentes ocupam as linhas de nmeros mais baixos.

Atualizando o relatrioJ temos os dados salvos, tudo o que temos que fazer para finalizar o programa atualizar o relatrio de sada. J colocamos um boto na planilha "Plan1", abaixo do relatrio, que ao ser clicado ir atualizar os lanamentos [Excel VBA - Parte III: Planejamento do sistema].

Vamos entender como a rotina neste boto ir atualizar o relatrio.

O relatrio est dividido em trs partes principais, a primeira corresponde ao local Vamos traar o fluxo passo a passo:

MHDT, a segunda ao local LHDT e a terceira parte o resumo, ou soma, dos tempos despendidos nesses locais e equipamentos. Selecionamos a planilha Plan3, onde esto os dados e colocamos o cursor na clula de referncia A3. Atribumos a uma varivel de controle o valor True. Iniciamos um lao lgico para atualizar o relatrio, at que encontremos uma linha vazia para mudar o estado da varivel lgica e encerrar o lao. medida que lemos os dados armazenados, verificamos o local, o tipo e o resultado do trabalho, em funo dessas leituras definimos duas linhas para o lanamento do total de horas gastas: Linha1 para o tipo de trabalho e Linha2 para o resultado. A data de execuo define a coluna. Como Janeiro corresponde coluna D, temos que somar 3 ao ms informado nos dados, por exemplo, se a medio foi feita em Fevereiro, ms 02, ento somamos 2+3 = 5, ou coluna E. Veja que o ms obtido atravs de uma funo especfica no Excel. Definidos as linhas e a coluna, antes de lanar as horas temos que verificar se j existe algum lanamento anterior. Fazemos isso atribuindo o valor que j esto nas clulas a uma varivel. Esse valor somado ao valor do registro e lanado novamente na clula.

Abra o Editor do Visual Basic, Mdulo1 para inserir essa rotina. Inserindo o cdigo O cdigo completo fica conforme a seguir:Public Sub Atualizar() 'Atualiza os lanamentos no relatrio 'Antes de iniciar os dados existentes no relatrio devem 'ser zerados para evitar que sejam somados novamente Sheets("Plan1").Select 'Limpa Rotinas e setup da Sala de Medio MHDT

Range("D11:O12").Select Selection.Clear 'Limpa Aprovadas e Reprovadas da Sala de Medio MHDT Range("D14:O15").Select Selection.Clear 'Limpa Rotinas e Setup da Sala de Gear Labs MHDT Range("D16:O17").Select Selection.Clear 'Limpa Aprovadas e Reprovadas da Sala de Gear Labs MHDT Range("D19:O20").Select Selection.Clear 'Limpa Rotinas e setup da Sala de Medio LHDT Range("D28:O29").Select Selection.Clear 'Limpa Aprovadas e Reprovadas da Sala de Medio LHDT Range("D31:O32").Select Selection.Clear 'Limpa Rotinas e Setup da Sala de Gear Labs LHDT Range("D33:O34").Select Selection.Clear 'Limpa Aprovadas e Reprovadas da Sala de Gear Labs LHDT Range("D36:O37").Select Selection.Clear 'Seleciona a planilha onde esto os dados (Plan3) Sheets("Plan3").Select 'Posiciona o cursor na clula de referncia (A3) Range("A3").Select 'Ajusta o valor da varivel lgica para True AtualizaDados = True 'Inicia o lao Do While AtualizaDados = True 'L o conteudo de "Local" LabLocal = ActiveCell.Offset(0, 2).Value 'Obtem o total de horas gastas Total = CDate(ActiveCell.Offset(0, 9).Value) Trabalho = ActiveCell.Offset(0, 10).Value Resultado = ActiveCell.Offset(0, 11).Value 'Em funo de LOCAL determina o nmero de Linha1 e Linha2

Select Case LabLocal '======================================================== Case Is = "Sala de Medies MHDT." 'Selecina por tipo de trabalho: rotina ou setup Select Case Trabalho Case Is = "Rotina" Linha1 = 11 Case Is = "Set-Up" Linha1 = 12 End Select 'Seleciona em funo do resultado: Aprovado ou reprovado Select Case Resultado Case Is = "Aprovado" linha2 = 14 Case Is = "Reprovado" linha2 = 15 End Select '======================================================== Case Is = "Gear Lab MHDT" 'Selecina por tipo de trabalho: rotina ou setup Select Case Trabalho Case Is = "Rotina" Linha1 = 16 Case Is = "Set-Up" Linha1 = 17 End Select 'Seleciona em funo do resultado: Aprovado ou reprovado Select Case Resultado Case Is = "Aprovado" linha2 = 19 Case Is = "Reprovado" linha2 = 20 End Select '======================================================== Case Is = "Sala de Medies LHDT" 'Selecina por tipo de trabalho: rotina ou setup Select Case Trabalho Case Is = "Rotina"

Linha1 = 28 Case Is = "Set-Up" Linha1 = 29 End Select 'Seleciona em funo do resultado: Aprovado ou reprovado Select Case Resultado Case Is = "Aprovado" linha2 = 31 Case Is = "Reprovado" linha2 = 32 End Select '======================================================== Case Is = "Gear Lab LHDT." 'Selecina por tipo de trabalho: rotina ou setup Select Case Trabalho Case Is = "Rotina" Linha1 = 33 Case Is = "Set-Up" Linha1 = 34 End Select 'Seleciona em funo do resultado: Aprovado ou reprovado Select Case Resultado Case Is = "Aprovado" linha2 = 36 Case Is = "Reprovado" linha2 = 37 End Select '======================================================== End Select 'Em funo da data, determina a coluna coluna = Month(ActiveCell.Value) + 2 'Lana dados no relatorio: 'Primeiro seleciona a planilha onde est: (Plan1) Sheets("Plan1").Select Linha1 = Linha1 - 1 linha2 = linha2 - 1 'Posiciona na clula de referncia A1 Range("A1").Select

'Obtem valor do tipo de trabalho = Linha1 Valor = CDate(ActiveCell.Offset(Linha1, coluna).Value) 'Atualiza ActiveCell.Offset(Linha1, coluna).Value = CDate(Valor + Total) 'Faz a mesma coisa para o resultado: Valor = ActiveCell.Offset(linha2, coluna).Value ActiveCell.Offset(linha2, coluna).Value = Valor + Total 'Retorna planilha onde esto os dados e avana uma linha Sheets("Plan3").Select ActiveCell.Offset(1, 0).Activate 'Verifica se a clula vazia. Se for altera a condio lgica If ActiveCell.Value = vbNullString Then AtualizaDados = False Else AtualizaDados = True End If 'Encerra o lao Loop 'Formata as clulas Sheets("Plan1").Select Range("D11:P48").Select Selection.NumberFormat = "h:mm;@" End Sub

A estrutura lgica "Select Case" Note a estrutura lgica Select Case. Essa estrutura mais verstil que a estruturaSelect Case VARIAVEL Case VARIAVEL is = Teste1 Codigo Case VARIAVEL is = Teste2 Codigo Case VARIAVEL is = Teste3 Codigo End Select

IF..Then...Else quando se tem muitas opes, como o caso. A sintaxe desta estrutura :

Se a varivel especificada coincidir com um dos valores testados, o cdigo que segue oteste ser executado e os outros ignorados. O cuidado aqui fazer com que os nomes

dados aos testes sejam exatamente iguais ao que a varivel ir receber porque se a coincidncia no for completa o cdigo ser pulado.

0

Tutorial de Formulrios com VBA no ExcelPosted by Solano on 08:02 in Dicas de Programas Muitas pessoas acessam o Blog Coizaradas buscando informaes e tutoriais de Excel. A postagem que d um passo-a-passo como criar Formulrios no Excel 2007 fez bastante sucesso... Nessa postagem um tutorial que fiz sobre consulta em banco de dados usando o Excel 2007 e um pouco de programao em VBA e Formulrios. Podemos fazer acesso a um banco de dados em planilhas independentes usando os recursos de formulrio e alguns comandos em programao em VBA. Para utilizar esses recursos, ser necessrio exibir a Guia Desenvolvedor do Excel 2007. Clique no boto do Office no canto superior esquerdo do vdeo, clique em Opes do Excel, em Mais Usados, habilite a opo Mostrar Guia Desenvolvedor na Faixa de Opes. Vamos deixar apenas duas planilhas na pasta de trabalho do Excel. Se voc tem trs ou mais, clique boto direito do mouse sobre as excedentes e escolha Excluir no menu flutuante. Na primeira aba da planilha escreva Tabela e a segunda nomeie de Consulta. Digite os dados conforma a tabela abaixo na planilha Tabela. Eu utilizei nomes de cidades da regio para os locais da pesquisa de preos.

Voc pode alterar os nomes dos produtos e dos locais livremente. Na segunda planilha (Consulta), selecione e escolha uma cor para o fundo. Clique na Guia Desenvolver/Inserir e selecione a Caixa de Grupo dos Controles de Formulrio.

Desenhe uma caixa de grupo como mostrado na figura abaixo, comeando a partir da linha 5 da planilha Consulta.

Se voc precisar aumentar ou diminuir a caixa, clique numa ala de dimensionamento (bolinha) dos cantos da caixa e arraste para o centro da figura para diminuir ou para fora, para aumentar. No topo da caixa, digite um nome para ela. Pode ser Pesquisa por produtos ou outro que voc queira.

Digite os dados iniciais da planilha conforme mostrado abaixo. Produto em A7, Valor em A8 e Valor Revenda em A9, todos alinhados direita. As caixas brancas so apenas clulas com contorno preto e fundo branco.

Na linha Produto, vamos inserir uma Caixa de Combinao para o vendedor escolher o produto em uma lista suspensa, sem a necessidade de digitao. Clique na Guia Desenvolver/Inserir e selecione a Caixa de Combinao, que o segundo boto da primeira linha do Controle de Formulrio.

Desenhe o tamanho da Caixa de Combinao. Clique com o mouse e arraste para definir o tamanho apropriado.

Para aumentar ou diminuir a caixa, clique com o boto direito do mouse sobre ela e depois com o esquerdo nas alas de dimensionamento. Em breve ser feita a configurao adequada para exibio da lista.

Ao lado, crie mais uma caixa de grupo. D o nome de Locais de Pesquisa.

Insira nessa caixa de grupo, controles do tipo Boto de Opo.

Digite um nome de cidade para cada cidade onde ser feira a pesquisa por preos de produtos. Utilizei as cidades da regio do Vale do Taquari (Arroio do Meio, Lajeado, Estrela, Santa Cruz do Sul, Teutnia e Venncio Aires).

Voc pode alterar se achar conveniente. Para digitar o nome da cidade, clique sobre o item, quando abrir a caixa, digite o nome do local. Para movimentar, clique sobre a borda da caixa com o boto direito do mouse e use as setas de direo do teclado para deslocar em qualquer direo. Voc pode ainda personalizar as opes, dando um ar mais profissional como efeitos em 3D. Clique com o boto direito do mouse sobre o item e escolha Formatar Controle...

Na janela que abre, clique em Sombreamento em 3D. Crie agora mais uma Caixa de Grupo abaixo dos dados j digitados e nomeie de Valores.

Digite os dados conforma a figura abaixo. Texto alinhado direita e clulas vazias pintadas de branco com contorno em preto.

Agora vamos inserir outros elementos da planilha. So os controles ActiveX para escolher Quantidade de itens

comprados e tambm o nmero de parcelas da compra. Clique na Guia Desenvolvedor, escolha Inserir e nos Controles ActiveX clique em Barra de Rolagem.

Desenhe uma barra de rolagem ao lado do item Quantidade. Lembre-se que as bolinhas servem para dimensionar o tamanho da barra.

Repita o procedimento ao lado da clula Nmero de Parcelas para acrescentar mais uma barra de rolagem. Na prxima etapa iremos adicionar mais dois controles, desta vez sero botes que controlaro a visibilidade da planilha com a base de dados. Clique na Guia Desenvolvedor, escolha Inserir e nos Controles ActiveX clique em Boto de Comando.

Esse CommandButton deve ser desenhado ao lado da clula Valor Final.

Um detalhe importante: Para modificar ou programar o boto o Modo de Design dever estar habilitado. Quando desmarcado o boto se comporta como um boto do Windows e no h como editar seu cdigo nem aumentar ou diminuir seu tamanho. Para acrescentar comportamentos ao boto de Controle ActiveX clique no boto Propriedades.

O que deve ser modificado para atribuir comportamentos ao boto... Digite no primeiro boto as configuraes da janela abaixo:

Name: o nome pelo qual o boto ser referido na programao. Escolha um nome curto e sem espaos. BackColor: Permite escolher cor de fundo para o boto Caption: O nome que ser exibido em cima do boto Font: Permite escolher ou trocar a fonte para o texto do boto ForeColor: A cor da fonte mostrada no boto Height: Define a altura do boto em pontos Left: Distncia relacionada ao boto do lado esquerdo da tela Locked: Quando True, bloqueia o deslocamento do boto na tela Picture: Atribui uma figura ou foto na imagem do boto PrintObject: Quando True, imprime o boto com a planilha Shadow: Exibe uma sombra embaixo do boto Top: Distncia relacionada ao boto do topo da tela Visible: Aplica o atributo de visibilidade ao boto quando a planilha for aberta Width: Define a largura do boto em pontos WordWrap: Quando true, atribui uma quebra na linha quando o texto do boto for muito extenso. Repita o Procedimento para o segundo boto. Desenhe um novo boto e configure de acordo com essas sugestes:

Name: Ocultar BackColor: No mudar a cor do fundo Caption: Ocultar Planilha Font: Calibri ForeColor: No mudar a cor do texto Height: 22,5 Left: 203 Locked: True Picture: (nenhum) PrintObject: True Shadow: False Top: 261 Visible: True Width: 90,75 WordWrap: False Para algum ser um programador em VB so necessrias muitas horas de treinamento formal e de prtica. A ideia desse post s fazer uma pesquisa no Excel utilizando um pouco da programao em VB, por isso s tem mesmo o bsico. Maaassss....antes de iniciar a programao, vamos entender um pouco do Visual Basic: O VB permite criar aplicativos tanto para mquina local quanto para ambiente de rede. Estes aplicativos podem tanto compartilhar banco de dados quanto acessar um banco de dados cliente-servidor. Os programas desenvolvidos em Visual Basic so orientados a eventos. Eventos so aes geradas pelo usurio clicar o mouse ou pressionar uma uma tecla. Os eventos podem tambm ser gerados pelo prprio Windows. Existem eventos associados ao

formulrio, e cada controle inserido neste. Agora vamos s linhas de cdigo.Veja se o boto Modo de Design est habilitado e d dois clicks rpidos sobre o boto Exibir tabela. Isso dever abrir o mdulo de programao do Visual Basic. Digite as linha de cdigo abaixo. Private Sub exibir_Click() Dim Exibir As String Exibir = MsgBox("Deseja exibir a planilha tabela?", vbYesNo, "Confirmao") If Exibir = vbYes Then Sheets("tabela").Visible = True Sheets("tabela").Select Else Exit Sub End If End Sub O que significa: Private Sub exibir_Click() - Inicia o procedimento Dim Exibir As String - Declara Exibir como uma varivel do tipo String (Uma sequncia de Caracteres). Uma varivel algum tipo de dados ao qual reservado um espao fsico na memria do computador. Para declarar variveis, voc precisa dar a uma varivel tanto um nome (Exibir) quanto um tipo (String). Os nomes de variveis podem ter at 40 caracteres, e precisam comear com uma letra. Declarando com o Comando Dim Sintaxe: Dim As Exemplo: Dim Exibir As String - Exibir = MsgBox("Deseja exibir a planilha tabela?", vbYesNo, "Confirmao") Aqui declaramos que a varivel recebeu uma MSGBox com a informao contida nos parnteses. - VbYesNo define os tipos de botes que aparecero na Caixa de Mensagem: Sim ou No A palavra Confirmao aparecer na barra de ttulo da caixa de mensagem (MessageBox). - If Exibir = vbYes Then - Aqui iniciam os procedimentos lgicos com os laos de repetio. SE Exibir for igual a SIM, ou seja se o usurio clicar no boto SIM, ento... - Sheets("tabela").Visible = True - Muda a propriedade de visibilidade da planilha Tabela e torne-a Visvel. - Sheets("tabela").Select - Nessa linha estamos ainda informando para torn-la ativa.

- Else - Seno - Exit Sub - Fecha da janela - End If - Aqui Fechamos os procedimentos lgicos - End Sub - No final sempre necessrio fechar ou encerrar o procedimento. Veja se o Modo de Design ainda est habilitado e d dois clicks rpidos sobre o boto Ocultar Tabela. Isso dever abrir o mdulo de programao do Visual Basic. Digite as linhas de cdigo abaixo: Private Sub ocultar_Click() Sheets("tabela").Visible = False End Sub Na linha de cdigo: Sheets("tabela").Visible = False, mudamos a propriedade de visibilidade da planilha Tabela e tornando-a Invisvel ou oculta. Desligue o Modo de Design e teste os botes para confirmar a programao. Para que o Excel calcule a margem de lucro em cada produto, crie uma Caixa de Seleo...

e ao lado digite Lucro.

Na parte superior da planilha, onde existem as linhas vazias, digite Cidade em A2, Lucro em A3 e Produto em C2, todos alinhados direita.

Clique com o boto direito do mouse sobre a primeira cidade listada no Formulrio e escolha Formatar Controle.

Na guia Controle, no campo Vnculo de clula, digite $B$2 (com $ para Referncias Absolutas). Essa clula deve exibir um nmero que indica qual cidade est selecionada na rea Local de Pesquisa no Formulrio.

Observe que selecionando outra cidade, o valor da B2, tambm muda.

A Caixa de Combinao onde o produto ser pesquisado, tambm deve ser configurada a fim de exibir os produtos da lista da planilha Tabela. Acesse a planilha Tabela e d um nome para o intervalo dos produtos. Veja no exemplo abaixo. Selecione de A2 at A12 e na Caixa de nome digite Prod e pressione Enter para nomear.

Repita o mesmo processo para nomear o intervalo do Local da Pesquisa. Selecione de B2 at G12, clique na Caixa de Nome e digite para esse intervalo o nome de Base.

Volte planilha Consulta, clique com o boto direito do mouse sobre a Caixa de Combinao e escolha Formatar controle...

Na Guia Controle, digite Prod no Intervalo de entrada. O Excel reconhecer o intervalo nomeado na planilha Tabela. Em vnculo com a clula escolha $D$2, em Linhas Suspensas no h necessidade de alterao e para um efeito mais elegante marque Sombreamento 3D. Clique OK.

Agora, clicando na seta da Caixa de Combinao, os produtos j aparecem listados.

Para continuar nosso trabalho, vamos configurar a Caixa de Seleo Lucro. Clique com o boto direito sobre ela e escolha Formatar controle.

Em Vnculo de clula escreva $B$3. Assim, a clula B3 ir exibir a resposta VERDADEIRO quando a caixa de seleo estiver marcada e FALSO quando estiver desmarcada. E para concluir nosso trabalho, as frmulas! Para que o valor do produto seja encontrado, ser necessrio utilizar uma funo do Excel que faz um cruzamento entre o local da pesquisa selecionado na caixa de Grupo de Formulrio Locais da Pesquisa e o item selecionado na Caixa de Combinao dos Produtos. A funo apropriada para esse caso a INDICE que busca uma informao num banco de dados pela interseo de informaes atravs de linha e coluna. Na clula para o valor: digite a frmula: =NDICE(base;D2;B2). - Indice a funo que executa a pesquisa - base o local ou a base de dados para a pesquisa - D2 a clula onde est relacionado o vnculo com o produto escolhido na Caixa de Combinao - B2 a clula onde est relacionado o vnculo com o local escolhido no Boto de Opo do Formulrio Na clula para o Valor de Revenda: digite a frmula: =B8*150% O valor contido em B8 ser multiplicado por 150% dando uma margem de 50% sobre o valor original Na clula para o Lucro: digite a frmula: =SE(B3=VERDADEIRO;B9-B8;"") - Se o valor da clula B3 for VERDADEIRO, ento calcule o Valor de revenda MENOS o valor da compra, SENO deixe a clula VAZIA. A clula da Quantidade ter o valor definido pela barra de rolagem. Clique no boto Modo de Design e depois um clique na Barra de Rolagem da Quantidade e aps em Propriedades. Vamos configurar a rolagem da barra.

Clique no boto Modo de Design e depois um clique na Barra de Rolagem da Quantidade e aps em Propriedades. Apenas mude o valor Max para 20 para limitar em 20 peas por cliente e o valor Min em 1, que a quantidade mnima da compra. Para o nmero de parcelas, repita todo o procedimento para tornar a barra ativa, clique no boto Modo de Design e depois um clique na Barra de Rolagem das parcelas e aps em Propriedades. Mude o valor Max para 12 para limitar as parcelas e o valor Min em 2. O Valor Total ser a multiplicao da quantidade pelo Valor Unitrio: =B13*B9 A porcentagem de juros depende do nmero de parcelas, da voc digita essa frmula com a funo SE que calcula os juros dependendo da quantidade de parcelas =SE(B1510;3,5%;2,5%)) O valor final da Parcela calculado assim: =(B14/B15)*B16+B14/B15 O valor final da compra: =B15*B17 Para finalizar a planilha, voc poder acrescentar uma barra com o nome do trabalho sobrescrevendo as clulas de controle usadas no formulrio e na funo ndice. Poder tambm realizar pequenos ajustes de alinhamentos, exibindo a grade do Excel (Guia Layout da Pgina, grupo Opes de Planilha, Linha de Grade, Exibir).

Espero que seja til a quem gosta de aprender mais sobre o Excel que uma fabulosa ferramenta de trabalho. I hope you enjoy it.