Criando um formulário no VBA No dia-a-dia, não queremos nem ouvir falar em formulários: imediatamente nos vem à mente qualquer idéia relacionada com burocracia... Mas, na hora de criar interfaces de macros, inclusive no Excel, os formulários são essenciais. Eles funcionam, grosso modo, como caixas de mensagem turbinadas muito turbinadas. Com um formulário, você pode coletar dados do usuário, pedir que ele escolha entre opções pré-existentes, entre muitas outras atividades interativas. E as informações recolhidas podem ser usadas para preencher uma planilha, por exemplo. Neste capítulo você vai aprender a criar e configurar formulários, bem como associar os campos e controles deles com planilhas. Tudo isso, claro, com os recursos do nosso velho conhecido VBA. CRIANDO UM FORMULÁRIO No editor do Visual Basic do Excel, acesse o comando Inserir ir > UserForm. Você pode definir características como nome, cor, estilo de borda, fonte de textos, entre outras, para o seu formulário. Para facilitar essas configurações, ative a janela Propriedades com o comando Exibir > Janela Propr opriedades iedades, ou usando a tecla F4. 52 Treinamento avançado em Excel cap_07.p65 52 7/6/2004, 0:40
A BARRA DE FERRAMENTAS DE FORMULÁRIOS Para que o usuário possa interagir com o formulário, você deve incluir controles nele isto é, botões, caixas de textos etc. A maneira mais fácil de fazer isso é usar a opção Exibir > Caixa de ferramentas, na qual basta clicar sobre o controle desejado para que ele passe a fazer parte do formulário. A tabela a seguir apresenta os controles que podem ser incluídos no seu formulário: Controle Nome Selecionar objetos Rótulo Caixa de texto Caixa de combinação Utilidade Permite selecionar um ou mais objetos dentro do formulário. Insere títulos e textos explicativos dentro do formulário. Permite que o usuário insira dados em um campo. Utilizado para criar uma lista de dados, permitindo a escolha de um deles. Criando um formulário no VBA 53 cap_07.p65 53
Caixa de listagem Caixa de seleção Botão de opção Botão de ativação Moldura Botão de comando Faixa de tabulação Multipágina Barra de rolagem Barra de rotação Imagem RefEdit Semelhante à caixa de combinação, mas com a diferença de que os dados são exibidos em mais de uma linha ao mesmo tempo. Utilizado para criar uma opção de seleção. Utilizado para criar um botão que seleciona uma determinada opção. Utilizado para criar um botão que pode ser ativado ou não. Utilizado para criar uma moldura em volta de um conjunto de controles, agrupando-os. Utilizado para criar um botão de comando, como OK, Cancelar, Salvar etc. Utilizado para apresentar um conjunto de informações em faixas separadas. Utilizado para apresentar várias guias de dados, cada uma com informações diferentes. Você pode, por exemplo, visualizar os dados pessoais de um cliente em uma guia, e os dados comerciais em outra. Utilizado para criar uma barra de rolagem no sentido horizontal ou vertical. Utilizado para incrementar valores em controles de textos (como número de prestações, % de juros etc.). Utilizado para inserir imagens no formulário. São aceitos formatos como.jpg,.bmp,.ico, entre outros. Utilizado para exibir o endereço de um intervalo de células inserido ou selecionado em planilhas. 54 Treinamento avançado em Excel cap_07.p65 54
INSERINDO UM CONTROLE Agora que você já conhece os controles que podem ser inseridos em um formulário, veja como incluí-los: Na Caixa de ferramentas, dê um clique sobre o controle desejado. 2 Na janela UserForm, posicione o cursor sobre o ponto em que deseja inseri-lo. 3 Clique e arraste o mouse sobre a tela para desenhar o controle. Criando um formulário simples A Caixa de ferramentas facilita muito o trabalho de inserção de controles. Que tal colocar a mão na massa e partir para a criação de um formulário simples? Tente criar um modelo como o apresentado na figura a seguir: Depois de construir o formulário, guarde-o. Vamos voltar a usá-lo mais adiante. Criando um formulário no VBA 55 cap_07.p65 55
ALTERANDO O NOME DOS CONTROLES Para capturar os dados que o usuário inserir nos controles do seu formulário, é necessário nomear os controles. Do contrário, não será possível referir-se a eles mais tarde. O nome de um controle é definido por sua propriedade Name, como descrito nos passos a seguir: 2 3 Na janela UserForm, dê um clique sobre o controle desejado. Na janela Propriedades, dê um clique sobre a propriedade Name. Digite o nome que você quer dar ao controle. Uma dica: para facilitar a identificação dos controles, é interessante padronizar a nomenclatura. Um padrão muito utilizado é o de iniciar o nome com três letras indicando qual o tipo de controle criado. Por exemplo, lblveículo: nesse caso, as letras lbl indicam que o controle é do tipo rótulo (em inglês, label); e o nome específico desse controle do tipo rótulo está expresso logo em seguida (Veículo). A propriedade Caption Certos controles, como rótulo, botão de opção, caixa de texto, moldura e botão de comando, possuem a propriedade Caption, a qual permite acrescentar um texto de apresentação do controle. Suponha que você tenha uma caixa de texto na qual o usuário deva digitar o nome dele. Para que ele saiba o que deve fazer, é necessário que exista um texto explicativo, como Digite aqui o seu nome. Esse texto é definido na propriedade Caption. ALTERANDO OS CONTROLES DO FORMULÁRIO Agora chegou a hora de retomar o formulário que você criou há pouco. Você vai definir os nomes e os captions de alguns controles, seguindo a orientação da tabela a seguir: 56 Treinamento avançado em Excel cap_07.p65 56
Objeto Name Caption label lblnome Nome: Textbo xtbox x txtnome Commandbutton cmdok OK Commandbutton2 cmdcancelar Cancelar Label2 lblveículo Veículo: ListBox ltbveículo Frame frmpagamento Opções de pagamento OptionButton optvista À vista OptionButton2 optparcelado Financiado label3 lblparcelas Nº de parcelas TextBo xtbox2 x2 SpinButton txtparcelas spiparcelas Label5 Preço: CheckBox chknovo Cliente novo Label4 LBLPreço [em branco] Inserindo uma imagem Como fazer para incluir uma imagem em seu formulário? É simples. Você já sabe que o controle correspondente é o Imagem em. Aproveite o passo-a-passo a seguir para definir a imagem que deve ser associada ao controle Imagem que você já inseriu no seu formulário: No formulário que você criou, dê um clique sobre o controle de imagem. Criando um formulário no VBA 57 cap_07.p65 57
2 Na janela Propriedades, vá até a propriedade Picture e clique no botão com as reticências. 3 Será aberta uma janela de navegador, para que você escolha a imagem a ser inserida. Procure o arquivo de imagem desejado e dê um duplo clique sobre ele. 4 Para que a figura não apareça cortada, altere a propriedade PictureSizeMode esizemode. Assim, a figura vai se adaptar ao tamanho da caixa. Propriedades de texto Depois de alterar as propriedades Name e Caption dos controles, o seu formulário terá esta aparência (exceto pela figura, que será aquela que você tiver selecionado): Agora, você deve definir uma propriedade para o objeto do tipo caixa de texto txtnome. Para permitir que o nome do cliente seja digitado em mais de uma linha, defina a propriedade MultiLine como True ue. Para isso, basta dar um clique sobre o controle txtnome no seu formulário e alterar a propriedade desejada na janela Propriedades. Alterando a ordem dos controles Com o formulário já construído, você pode navegar pelos controles existentes usando a tecla Tab. Com ela, os objetos são selecionados de acordo com a ordem em que foram criados. Mas é possível alterar essa ordem, para, por exemplo, torná-la compatível com a das colunas de uma planilha. Para isso, vá ao menu Exibir > Ordem de tabulação. Preparando Preparando o ambiente ambiente dos dos dados dados Na janela que aparece, clique sobre o controle que deseja mudar de posição e, depois, sobre os botões Mover para cima ou Mover para baixo. 58 Treinamento avançado em Excel cap_07.p65 58
Nosso intuito é relacionar o formulário que criamos com planilhas do Excel. Só para ter uma idéia de como ele vai ficar sobre a planilha, clique sobre o botão. Depois, feche o formulário sobre a planilha para retornar ao editor do VBA. Na planilha, vamos preparar o ambiente em que os dados serão recebidos. Construa a seguinte planilha: 2 Nomeie a planilha como Cadastro. Preparando a tabela com os dados dos veículos Em Plan2 devemos digitar a tabela com os veículos que temos na revendedora: 2 Renomeie a planilha como Veículos. Selecione o intervalo A2:C9 e nomeie-o como VEÍCULOS. Associando a tabela de veículos com o controle No Editor do Visual Basic, selecione o objeto lbtveículos. Criando um formulário no VBA 59 cap_07.p65 59
2 Esse controle deverá apresentar a tabela de produtos que está na planilha Veículos. 3 Defina a propriedade RowSour wsource como Veículos (nome da área nomeada). 4 Para que sejam apresentadas as duas colunas com o modelo e o ano do veículo, altere a propriedade ColumnCount para 2. 5 Para exibir os títulos altere a propriedade ColumnHeads para True. Exibindo o formulário Agora que já fizemos a associação entre o formulário e a planilha, vamos fazer com que a planilha adequada seja selecionada, e o formulário, exibido. Isso será feito digitando-se algumas linhas de código no editor do VBA: Na janela Projeto, ative a janela de código com este botão: 2 Digite o seguinte código: Sub Cadastro() Sheets( Cadastro ).Select Selecionar a planilha Cadastro. frmveículos.show Exibir o formulário com os veículos. End Sub 3 Esse código vai posicionar o cursor sobre a planilha Cadastro (Plan) e abrir o formulário frmveículos. 4 Execute a macro para ver o formulário no centro da tela. 60 Treinamento avançado em Excel cap_07.p65 60
EXIBINDO O PREÇO DO VEÍCULO No formulário frmveículos existe um controle com o nome lblpreço. Ele vai servir para exibir o preço de determinado automóvel quando o usuário selecioná-lo a partir da lista de veículos. Portanto, vamos adicionar código ao controle ltbveículo. Dê um duplo clique no controle ltbveículo, para ir à janela de código. Digite estas linhas: Private Sub ltbveículo_click() Me.lblPreço.Caption = Sheets( Veículos ). Ao ser selecionado um veículo da lista, no formulário atual (Me), altere o caption no controle lblpreço Range( c & Me.ltbVeículos.ListIndex + _ 2).Value Acesse a coluna C da planilha Veículos, adicionando 2 ao índice, pois o índice inicial é zero. Coluna A + 2 = C. Exibe o valor do veículo. End Sub Descarregando o formulário da memória Quando o usuário clicar sobre o botão Cancelar, o formulário deverá ser removido da memória, ou, em outras palavras, descarregado. Para que isso aconteça, você deve associar um código a esse botão. Dê um clique duplo sobre ele para abrir a janela de código. Nela, digite: Private Sub cmdcancelar_click() Quando o botão Cancelar for pressionado, o formulário deverá ser descarregado. Unload Me Descarrega o objeto atual (Me). End Sub Você deve ter reparado que não associamos comandos a todos os controles do formulário. Isso porque controles como o botão de OK, por exemplo, exigem alguns conhecimentos que serão apresentados nos próximos capítulos. Mas não desanime! Ao terminar o livro, você terá um formulário totalmente funcional, e, o melhor, inteiramente feito por você. Criando um formulário no VBA 6 cap_07.p65 6