• Nenhum resultado encontrado

Centro de Formação em Tecnologia

N/A
N/A
Protected

Academic year: 2021

Share "Centro de Formação em Tecnologia"

Copied!
16
0
0

Texto

(1)

Financiado pelo FSE Pág: 1

A forma mais comum de comunicação de um sistema com o utilizador é por meio de uma caixa de diálogo, na qual o utilizador define as opções desejadas, através de controlos interactivos, clica em um botão para confirmar ou cancelar a entrada.

Esse interface é criado em UserForms (formulários). Para aprender a criar formulários, vamos desenvolver um sistema de um sistema de registo de vendas. Crie uma nova pasta de trabalho e guarde com o nome FormVend.xlsm.

Renomeie a primeira folha como Dados, a segunda como Clientes e a terceira como Produtos. Os dados das folhas, respectivamente, são os das figuras que se seguem:

Dessa forma temos duas tabelas: de clientes e de produtos. Essas tabelas servirão como fonte de dados para registar, na folha de Dados, as vendas realizadas pela empresa.

(2)

Financiado pelo FSE Pág: 2

Nomeie os intervalos de células conforme tabela seguinte:

Folha Intervalo Nome

Clientes A2:A6 Clientes

Clientes B2:B6 Mails

Clientes C2:C6 Sites

Produtos A2:A5 Produtos

Produtos B2:B5 Precos

Uma vez estruturada a pasta de trabalho, aceda ao VBA para criar um formulário pelo qual o utilizador realizará o registo das vendas.

Para inserir um formulário, escolha Insert/UserForm. No Project Explorer surgiu uma nova pasta de formulários, na qual serão armazenados os formulários do projecto. Por ser o primeiro, esse formulário tem o nome de UserForm1. Do lado direito da janela, há o formulário completamente vazio.

Antes de gerar código para os controlos de formulário, é conveniente nomear todos os objectos adequadamente.

(3)

Financiado pelo FSE Pág: 3

É importante adoptar um padrão para os nomes dos controlos.

Controlo Identificação Exemplo

CheckBox (caixa de selecção) chk chkTransporte ComboBox (caixa de combinação) cmb cmbClientes CommandButton (botão de comando) cmd cmdOK

Form (formulário) frm frmRegisto Frame (moldura) fram framTipo Image (imagem) img imgFunc Label (rótulo) lbl lblNome ListBox (caixa de listagem) lst lstCidade OptionButton (botão de opção) opt optVenda Page (multipágina) pge pgeGeral

RefEdit rfd rfdValores

ScrollBar (barra de rolagem) scr scrPeriodos SpinButton (botão de rotação) spi spiTaxa

TabStrip (faixa de tabulação) tst tstPortugal TextBox (caixa de texto) txt txtProduto ToggleButton (botão de activação) tgb tgbAtivar

Vamos inserir um Label (rótulo) para identificar uma caixa de listagem com a lista de clientes.

(4)

Financiado pelo FSE Pág: 4

Agora vamos inserir objectos para digitar a quantidade e fornecer informações sobre o preço e o valor total. Insira uma moldura (Frame) com o nome frmPreco. Na propriedade Caption digite “Informações sobre o preço”. Dentro da moldura coloque estes controlos:

Controlo Nome Caption

Label lblQtde Quantidade: TextBox txtQtde

Label lblRotPreco Preço Label lblPreco 0,00 Label lblRotTotal Total: Label lblTotal 0,00

Na parte de baixo do formulário, fora da moldura, insira mais estes dois rótulos para informar quantos registos estão registados:

Controlo Nome Caption

Label lblRotRegistos Número de registos: Label lblRegistos 0

Do lado direito insira mais um moldura (Frame) para definir a forma de pagamento. Se precisar, aumente a largura do formulário.

Controlo Nome Caption

OptionButton optPronto A pronto OptionButton optPrazo A prazo

Na parte de baixo do formulário, insira estes dois botões de comando:

Controlo Nome Caption

CommandButton cmdRegistar Registar CommandButton cmdFechar Fechar

Para ativar as caixas de listagem, a caixa de texto e os botões de opções pelo teclado é preciso definir uma tecla de atalho, que é a letra sublinhada no texto do controlo. Então defina o valor dessa propriedade dos controlos seguintes com os respectivos valores:

Controlo Accelerator lblClientes C lblProdutos P lblQtde Q optPronto P optPrazo R

(5)

Financiado pelo FSE Pág: 5

Criar código para o formulário

Agora que o formulário está desenhado, vamos torná-lo funcional.

Primeiro criar uma macro para abrir o formulário, método show. No excel insira uma nova folha com o nome “Menu” e crie um botão com o CAPTION Registar.

(6)

Financiado pelo FSE Pág: 6

O evento click do botão cmdFechar terá o seguinte código:

(7)

Financiado pelo FSE Pág: 7

Vamos agora criar o código do botão Registar (cmdRegistar). Primeiro devemos verificar a consistência dos dados fornecidos: verificar se há um cliente e um produto seleccionado, se a quantidade é um número e se foi escolhido a forma de pagamento.

Se não houver nenhum cliente seleccionado, a propriedade ListIndex da lstClientes será igual a -1. Se for, vamos exibir uma mensagem, ativar a ListBox lstClientes pelo método SetFocus e sair do procedimento. Faça o mesmo para a ListBox lstProdutos. O código para as duas é:

Para dar consistência à quantidade:

Volte agora ao código do botão cmdRegistar, a seguir ao end if, digite:

Agora falta verificar se foi escolhida uma forma de pagamento:

A primeira está pronto.

Vamos à segunda etapa, que consiste em inserir os dados na folha. A seguir ao último end if, digite um apóstrofo ‘ Regista os dados na folha.

Primeiro é preciso seleccionar a folha Dados e depois seleccionar o ponto de partida, que é a próxima célula vazia da coluna A. As duas linhas de código para isso são:

(8)

Financiado pelo FSE Pág: 8

De agora em diante é só referenciar a célula e inserir o valor.

Vamos inicializar a variável lblRegistos, colocando o seguinte código:

Ainda no código do botão cmdRegistar, a seguir da última linha digite o comentário ‘ Redefinição do formulário.

Faltam alguns detalhes. Se quiser que o utilizador não tenha acesso às folhas Dados, Clientes e Produtos, é preciso ocultá-las e proteger o livro.

Seleccionar as folhas e ocultá-las de seguida proteger com a senha: “secreto”.

Coloque no inicio do cmdRegistar os comandos para desproteger o livro e mostrar a folha “Dados” para poder registar os dados:

(9)

Financiado pelo FSE Pág: 9

Para que não seja possível interromper a execução do código e para que não sejam exibidas as acções de registo acrescentamos as seguintes linhas:

No final, acima do end sub, digite:

Vamos criar agora um novo formulário para editar os dados do cliente, nome frmClientes, CAPTION “Gestão de clientes”.

Do lado esquerdo insira uma Label e uma ListBox com estas configurações:

Controlo Nome Caption Accelerator RowSource

Label lblClientes Clientes: C

ListBox lstClientes Clientes

Do lado direito insira uma moldura, frmCliente e em CAPTION digite “Dados do cliente”, insira nela os seguintes controlos:

Controlo Nome Caption Accelerator

Label lblNome Nome: N Label lblMail E-mail: M Label lblSite Site: S TextBox txtNome

TextBox txtMail TextBox txtSite

Na parte de baixo insira os quatro botões de comando da tabela seguinte:

Controlo Nome Caption

CommandButton cmdAlterar Alterar CommandButton cmdExcluir Excluir CommandButton cmdInserirNovo Inserir Novo CommandButton cmdFechar Fechar

(10)

Financiado pelo FSE Pág: 10

Botão cmdFechar:

Crie a seguinte Macro:

Coloque na folha menu um botão para chamar este procedimento:

Volte ao VBA e dê duplo-clique na ListBox lstClientes, para criar código desse controlo. Para exibir os dados, a variável linha é igual ao número do cliente escolhido +1. A partir desse número é feita a busca nos respectivos intervalos nomeados na folha. O código comentado é:

(11)

Financiado pelo FSE Pág: 11

Para alterar os dados, dê duplo-clique no botão cmdAlterar e digite as linhas para verificar a consistência das informações, etc.

Agora para registar os novos dados e redefinir o formulário, digite o código seguinte a seguir ao end if:

Uma vez alterado o dado, resta agora classificar a lista pelos nomes dos clientes. Desproteja os dados e atribua o nome DadosClientes ao intervalo A1:C10, torne a proteger os mesmos.

Como vamos usar a mesma rotina para classificar ao inserir um novo cliente na lista, vamos criar um procedimento à parte. No final da janela de código digite:

(12)

Financiado pelo FSE Pág: 12

Volte ao código do botão cmdAlterar e digite no final do procedimento a chamada para a classificação:

A rotina para alterar está pronta.

Para excluir um cliente, dê duplo-clique no botão cmdExcluir e digite este código:

Vamos agora gerar o código para registar um novo cliente. Antes de criar o código, exiba o formulário. Seleccione o botão cmdInserirNovo e defina a sua propriedade Visible como False. Ele não desaparecerá no modo de criação, mas somente quando o formulário for carregado. Insira um novo botão de comando do mesmo tamanho e em cima dele com esta propriedades:

Controlo Nome Caption

CommandButton cmdNovo Novo

->

Ao clicar no botão cmdNovo, nenhum cliente deve estar seleccionado, a variável linha será igual a zero, serão activas todos os controlos inclusive a frame, as caixas de texto ficarão vazias, os botões cmdAlterar e cmdExcluir, ficarão desativos, o botão cmdNovo ficará oculto e será exibido outro, cmdInserirNovo, o cursos ficará na textbox txtNome.

(13)

Financiado pelo FSE Pág: 13

No botão cmdInserirNovo digite este código:

A questão agora é como ocultar o botão cmdInserirNovo e reexibir cmdNovo. Devemos de fazer isso pela ListBox lstClientes. Então, no final do código desse controlo, que começa com Private Sub lstClientes_Click(), digite as duas linhas:

Nós códigos gerados para esse formulário, se pressionar CTRL+BREAK, a execução será interrompida. Então, para que isso não aconteça, faça como no formulário anterior, no ínicio de cada procedimento, digite:

Application.EnableCancelKey = xlDisable

(14)

Financiado pelo FSE Pág: 14

Vamos criar um novo formulário para que o utilizador digite uma senha para operar o sistema. Insira os seguintes controlos:

Controlo Nome Caption Accelerator

Label lblSenha Senha: S

TextBox txtSenha M

Label lblAviso Senha inválida CommandButton cmdOK OK CommandButton cmdCancelar Cancelar

Defina a propriedade Default do botão cmdOK como True e Cancel do botão cmdCancelar como True. Assim, ao pressionar ENTER, será executado o código do botão OK e, ao pressionar ESC, será executado o código do botão Cancelar.

Seleccione a caixa de texto txtSenha e, para mascarar a senha, na propriedade PasswordChar, digite *(esterisco). Na propriedade MaxLenght, digite 7.

Ocultar a lblAviso.

Crie uma nova folha com o nome “Folha” e na célula “A1” dê o nome Acesso e deixe em branco.

Proteja novamente o projecto, isto é, a folha e o livro.

No VBA, crie a seguinte macro:

(15)

Financiado pelo FSE Pág: 15

No botão cmdCancelar coloque o seguinte código:

A senha de acesso será “sistema”. Vamos programar o botão cmdOK:

Para que a label lblAviso seja oculto, digite o seguinte texto:

Agora, para que os formulários de registo de vendas e clientes sejam exibidos somente se o sistema estiver com acesso, ou seja a célula “Acesso” for igual a “Sim”, volte ao VBA e altere o respectivo código:

(16)

Financiado pelo FSE Pág: 16

É preciso fazer outro ajuste: se o sistema já estiver com o acesso ligado, para que, ao clicar no botão LOGIN, seja informado que o sistema já está com acesso e não exibir o formulário, na MACRO ExibirFrmAcesso altere para:

Agora vamos fazer a desconexão.

Reposicione os botões na folha para que fique como na figura seguinte.

Referências

Documentos relacionados

Contudo, não é possível imaginar que essas formas de pensar e agir, tanto a orientada à Sustentabilidade quanto a tradicional cartesiana, se fomentariam nos indivíduos

duplamente encadeada com este valor caso o mesmo ainda não exista na lista, em ordem CRESCENTE, ou seja, sempre entre um nó contendo um valor menor e outro contendo um valor

 São TADs representados através de listas sequenciais.. (fixas) ou encadeadas (dinâmicas), em que a seguinte regra deve

função recursiva, mais recursos de memória são necessários para executar o programa, o que pode torná-lo lento ou. computacionalmente

 Caminho simples que contém todas as arestas do grafo (e,. consequentemente, todos os

Por lo tanto, la superación de la laguna normativa existente en relación a los migrantes climático consiste en una exigencia para complementación del sistema internacional

O período de redemocratização foi consolidado com a edição da Constituição Federal, de 5 de outubro de 1988, instrumento jurídico democrático que restaura a

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição