Blog

Postado em em 9 de maio de 2019

Como criar formulário no Excel – Criando UserForm no VBA – 3/5

Caso prefira esse conteúdo no formato de vídeo-aula clique nesse link!

Para baixar a planilha utilizada nessa aula clique aqui!

O que é um formulário?

Formulário é uma opção do Excel que nos possibilita criar uma nova interface, dando uma cara de programa à planilha, diferente do que estamos habituados quando utilizamos o Excel. Iremos utilizar uma tela que chamaremos de formulário que se assemelha a um programa que efetua um cadastramento de um funcionário.

Esse formulário é como um comum em papel em que você preenche para que alguém possa ter essas informações gravadas, aqui irá funcionar da mesma forma, os dados serão preenchidos e serão salvos dentro do Excel.

Quando utilizar o Formulário?

O formulário é útil sempre que o usuário necessite de uma entrada ou pesquisa de dados de terceiros e não tem a intenção de que eles possam ver ou modificar todos os dados dentro do Excel. Portanto, os dados de busca e navegação serão limitados pelo programador do código.

O formulário pode ser utilizado também para facilitar a entrada desses dados sem que o usuário tenha que escolher célula por célula onde vai inserir cada um desses dados, portanto é uma outra facilidade que o formulário trás. Além de ficar mais agradável esteticamente acaba sendo mais eficiente na hora de utilizar o código programado através do formulário.

Neste caso iremos construir um formulário para obter algumas informações como: nome, sexo, área, CPF e salário dos funcionários. Portanto, a partir de duas macros atribuídas a dois botões de Criar e Excluir conseguiremos criar um novo cadastro e excluir um cadastro já existente.

Podemos observar que essa janela que é aberta dentro do Excel já não tem o aspecto de Excel e sim de um programa para cadastro. Então, basta o usuário colocar as informações e pressionar OK que esses dados serão gravados dentro do Excel de uma forma mais prática.

Como utilizar o Formulário?

Essa é a continuação do post de UserForm. É o terceiro post de uma sequência de cinco.

Até o momento é assim que temos o nosso formulário, lembrando que o usuário poderá modificar as cores, textos e as informações do formulário de acordo com sua necessidade.

Para que o formulário fique com uma cara melhor vamos modificar as cores de fundo do formulário e dos textos para preto como já fizemos antes modificando a opção BackColor.

Modificaremos apenas o fundo do formulário e dos nomes, não é necessário selecionar as caixas de texto.

Em seguida vamos selecionar a imagem da Hashtag que foi inserida e vamos modificar a cor da opção BorderColor para preta.

Desta forma teremos um formulário um pouco mais agradável de se ver e sem o quadro da imagem.

O que falta para o nosso formulário ficar completo é a lista da área de cada funcionário a ser cadastrado. Para isso vamos entrar no ambiente VBA utilizando o atalho ALT + F11 (ou ALT + Fn + F11).

Ao selecionar o formulário para abrir a caixa de ferramentas iremos selecionar a opção caixa de combinação. E novamente vamos inserir também um rótulo para indicarmos o que é aquela caixa para o usuário saber o que precisa ser preenchido.

Agora já temos o visual do formulário completo, no entanto para a caixa de combinação precisamos selecionar a lista de opções que vão aparecer para que o usuário possa escolher. Para isso vamos acessar o código VBA por trás do formulário para que possamos criar uma lógica para sempre que abrirmos o formulário ele buscar todos os dados que temos na nossa aba Fonte, que é onde temos a lista das áreas.

Esses são os dados que temos na aba Fonte, para que a nossa caixa de combinação tenha esses dados preenchidos de forma que o usuário possa escolher uma dessas opções na hora de efetuar o cadastro.

Para acessar o código por trás do formulário basta clicar com o botão direito no menu esquerdo em Registro_funcionarios e selecionar a opção exibir código.

Feito isso será aberto o ambiente para escrita do código do formulário.

Podemos observar que já temos algo escrito das aulas anteriores, que é o código para quando clicarmos no X ele fechar o formulário. Dentro desse ambiente temos duas opções logo acima do código que são CommandButton2 e Click. Vamos alterar essas opções para criarmos um evento no VBA, ou seja, uma ação que vai ocorrer sempre que abrirmos o formulário.

Na primeira opção vamos alterar de CommandButton2 para UserForm, que é o objeto que vai disparar essa ação, ou seja, esse objeto é o nosso formulário, então sempre que for aberto vai disparar uma ação.

Na segunda opção vamos escolher a ação que vai disparar o código para podermos preencher a nossa caixa de combinação, neste caso será a inicialização do nosso formulário, portanto a opção a ser escolhida é Initialize. Ou seja, toda vez que o formulário for aberto, o código que vamos escrever será executado.

Então, agora temos um início de código que é onde iremos indicar ao programa onde serão obtidos os dados e onde iremos colocar esses dados da área de atuação para cadastro.

O primeiro passo é irmos até o formulário novamente e modificarmos o nome da caixa de combinação em (Name). O nome padrão dessa ferramenta é ComboBox, então vamos modificar esse nome para CaixaCombinacao_Area.

Isso é para que possamos nomear melhor e lembrar do que se trata na hora de escrevermos o código.

Vamos agora escrever o código abaixo para preencher a nossa caixa de combinação com todas as opções que estiverem na aba Fonte. Seria possível simplesmente informar que os dados da caixa de combinação seria o intervalo de B3 a B8 da aba Fonte, mas estamos levando em consideração que podemos acrescentar mais opções e, por isso vamos escrever uma fórmula mais completa que verifica quantas informações temos na aba Fonte.

Na primeira linha temos os seguintes códigos:

Ult_linha – Essa é a nossa variável que vai receber um valor.

Sheets(“Fonte”) – É a opção para selecionar a aba (sheets em inglês) Fonte, então o Excel está selecionando a aba Fonte que é de onde vamos extrair as informações que queremos.

Range(“B2”) – É a opção para selecionar uma célula ou conjunto de células, neste caso a célula B2 que é a primeira célula preenchida da nossa lista de área.

End(xlDown) – É a opção que funciona como o atalho CTRL + SETA PARA BAIXO, ou seja, é um atalho que leva a seleção da célula até a última célula que contém algum conteúdo, portanto é uma fórmula essencial para descobrirmos qual é a última linha, pois podemos ter mais ou menos opções de Área para cadastrar os funcionários.

Row – É a opção que indica que estamos pegando apenas o valor da linha, ou seja, vamos pegar o valor da última linha preenchida, começando da célula B2 da aba Fonte.

Desta forma essa primeira linha do código vai retornar o número da última linha para a variável ult_linha.

Agora vamos analisar a segunda linha do código:

CaixaCombinacao_Area.RowSource – Isso quer dizer que vamos atribuir algum valor a nossa caixa de combinação na opção RowSource. Essa propriedade RowSource é onde colocamos o intervalo que contém os dados que queremos exibir na caixa de combinação.

“Fonte!B3:B” & ult_linha – Isso quer fizer que vamos pegar os valores da aba Fonte, da célula B3 até a célula B com o valor da última linha, ou seja, se a última linha for 10 o código vai obter os valores da célula B3 até a célula B10. Então sempre que os dados forem atualizados na aba Fonte eles serão atualizados na caixa de combinação.

Vamos agora acrescentar mais uma opção na aba Fonte e vermos o resultado dentro do formulário de forma automática. O mesmo acontece se excluíssemos uma área.

Podemos observar que o a área foi atualizada automaticamente, sem a necessidade o usuário ter que alterar o intervalo das áreas manualmente.

Para continuar recebendo conteúdo sobre esse e outros assuntos de Excel e VBA, acompanhe os nossos posts.



Quer aprender tudo de Excel para se tornar o destaque de qualquer empresa?