Como criar formulário no VBA – Clique e acompanhe as aulas!
Caso prefira o conteúdo de formulários no formato de vídeo-aula clique nesse link!
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.
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?
Para começar temos que acessar o ambiente VBA, para isso basta utilizar o atalho ALT + F11 (ou Fn + ALT + F11, caso a primeira alternativa não funcione). Feito isso será aberta uma nova janela que é o ambiente VBA.
Dentro do ambiente VBA vamos na opção Inserir e depois em UserForm.
Feito isso teremos o modo de formulário aberto para edição juntamente com a caixa de ferramentas que nos possibilita inserir alguns módulos, como: rótulo, caixa de texto, botão de opção, botão de comando, barra de rolagem…
Caso a caixa de ferramentas não apareça basta clicar no botão caixa de ferramentas que ela irá aparecer.
Para iniciar devemos aumentar o tamanho do nosso formulário para que fique em um tamanho adequado para comportar todas as informações que queremos inserir. Para isso basta clicar e arrastar nos quadrados ao redor do formulário.
Em seguida devemos pintar o formulário, ou seja, modificar a cor de fundo. Para fazer essa modificação da cor de fundo iremos selecionar o formulário (clicando nele).
Após, vá até a janela de Propriedades na opção BackColor, clicar na seta para baixo que irá aparecer e em seguida ir na aba Paleta. Feito isso basta escolher a cor desejado para o fundo do formulário.
Agora iremos modificar o nome que aparece como título do formulário, pois está com o nome padrão de UserForm. Para isso vamos novamente selecionar o formulário e vamos modificar na janela de Propriedades a opção Caption de UserForm1 para Cadastro de Funcionários.
É possível verificar que existe outra propriedade que também possui o nome “UserForm1”. Essa propriedade é o Name.
A diferença entre o Name e o Caption é que o primeiro se refere ao nome que o VBA chama esse formulário, como se fosse um apelido, já o Caption se refere ao que vai aparecer como título do formulário.
Temos agora nosso formulário com o nome modificado para que fique mais intuitivo o propósito do mesmo.
Vamos selecionar novamente o formulário para que possamos utilizar as ferramentas para dar forma ao formulário. A primeira que vamos utilizar é chamada de Rótulo, que é representada pelo símbolo A.
Para utilizar basta clicar e arrastar dentro do formulário na posição desejada.
Por conta da cor utilizada de fundo podemos observar que o nome não aparece tão visível. Neste caso vamos alterar a cor do texto novamente utilizando a caixa de propriedades que fica no canto esquerdo inferior.
OBS: Vale lembrar que essa janela de propriedades se altera à medida que o usuário seleciona diferentes itens. Tanto que quando selecionamos o nosso formulário nós alteramos o Caption para Cadastro de Funcionários e este já tem um nome diferente.
Então cada item selecionado possui suas propriedades separadamente e só aparecem à medida que é selecionado, portanto para alterar as propriedades de um item é necessário selecioná-lo antes de fazer a alteração.
Para modificar a cor do texto basta ir a caixa de propriedades do texto e modificar a opção ForeColor para a cor desejada.
Desta forma já temos um texto mais visível. Para que fique ainda melhor vamos modificar o tamanho da fonte de texto, ainda na caixa de propriedades, mas agora na opção Font.
Clicando nos 3 pontos uma nova janela será aberta para que possamos fazer as modificações de fonte dentro do Excel.
Nesta janela o usuário poderá fazer as modificações que desejar em relação a fonte, pode escolher o tipo, o estilo e o tamanho.
Agora vamos alterar o texto de Label1 para Nome: que é a informação inicial que queremos no nosso cadastro de funcionários. Para isso, vamos alterar o texto da opção Caption de “Label1” para “Nome:”.
Desta forma temos o texto adequado e visível para a aplicação em questão.
OBS2: Para verificarmos se o formulário já está funcionando, vamos criar um código em VBA e atribuir a um botão. Desta forma poderemos abrir o formulário apenas com um atalho utilizando da programação em VBA.
Para que possamos criar esse código será necessário abrir um módulo dentro do VBA. Basta ir na opção Inserir e em seguida em Módulo.
Feito isso teremos uma janela em branco para começarmos a escrever nosso código. Esse código será nossa macro (sub rotina), ou seja, tudo que estiver dentro do código será executado quando pressionarmos o botão atribuído para essa macro.
Dentro desse código nós iremos utilizar os nomes que vimos dentro das propriedades de cada item, que estava definido pela opção (Name).
Vamos começar alterando o nome do nosso formulário para Registro_funcionarios (primeiro precisamos clicar no formulário, ir à janela de propriedades na opção Name e alterar para registro_funcionarios). Desta forma fica mais fácil saber com o que estamos trabalhando dentro do código.
A princípio teremos o seguinte código:
Sub abre_formulario()
Registro_funcionarios.Show
End Sub
Esse código é apenas para que possamos abrir o nosso formulário e verificarmos como ele está à medida que vamos progredindo.
Sub – Essa função é para iniciarmos a nossa sub rotina, isso indica que estamos começando a macro ali em seguida iremos colocar o nome da macro, no nosso caso ela se chama abre_formulario.
OBS3: Não se pode colocar funções ou variáveis dentro do VBA utilizando caracteres especiais, acentos ou separando por espaço. Por este motivo juntamos o nome da nossa macro com a utilização do underline (_).
Registro_funcionarios.Show – isso indica que queremos mostrar (.show) o nosso formulário (Registro_funcionarios), ou seja, temos o item ou objeto que vamos utilizar e após o ponto a ação que será feita.
End Sub – Indica o final da nossa sub rotina, ou seja, tudo que estiver entre o Sub e End Sub será executado dentro daquela macro abre_formulario.
Feito esse código podemos voltar ao ambiente do Excel para criarmos um botão e atribuir a nossa macro a ele.
Para criar o botão basta ir a guia Inserir, selecionar o menu de Ilustrações, em seguida o menu de Formas e por fim a forma que o usuário achar mais adequada para a utilização. Neste caso utilizaremos o Retângulo: Cantos Arredondados.
Em seguida basta clicar e arrastar para criar a forma escolhida. Para escrever dentro do botão basta começar a escrever e formatar da forma que achar mais adequado.
Para estilizar o botão o usuário tem a opção de utilizar os Efeitos de Forma, que se encontram na guia Formatar (só irá aparecer quando a forma em questão estiver selecionada).
Criado o botão podemos atribuir nossa macro a ele. Basta clicar com o botão direito em cima do botão e selecionar a opção Atribuir macro…
Feito isso será aberta uma nova janela onde o usuário poderá escolher qual macro deseja atribuir a este botão. No nosso caso iremos atribuir a macro que acabamos de criar, que é para abrir o formulário para podermos analisá-lo.
Feito isso quando clicarmos em cima do nosso botão nossa macro será executada automaticamente. Como aplicamos uma macro para abrir o formulário assim que clicarmos no botão ele irá nos mostrar o formulário dentro do ambiente Excel.
Agora podemos sempre verificar a visualização do nosso formulário utilizando o botão que acabamos de criar. Essa é uma forma prática de analisar como será a visualização de quem for utilizar este formulário.
Voltando ao ambiente VBA, vamos inserir mais informações ao formulário.
Neste momento vamos utilizar a ferramenta Caixa de Texto, que é a ferramenta responsável por criar uma caixa de texto para que o usuário possa inserir as informações para o cadastro do funcionário. Essa ferramenta funciona da mesma forma do Rótulo, ou seja, basta clicar e arrastar para deixar do tamanho adequado.
Feito isso notamos que nosso formulário já vai ganhando forma, temos o texto que indica a informação a ser inserida e temos a caixa que permite ao usuário preencher o nome.
Como temos mais duas informações que irão utilizar o mesmo formato utilizado até o momento que é a informação e a caixa para o usuário preencher, podemos selecionar esses dois itens segurando a tecla CTRL e copiando com o atalho CTRL + C e em seguida colando com o atalho CTRL + V.
Feito isso basta arrastar para alinhar os itens e renomear os rótulos.
Com isso o formulário vai ganhando forma e ficando cada vez mais completo para a aquisição dos dados para cadastro de um novo funcionário.
Para testar como está a visualização para o usuário podemos novamente ir ao ambiente Excel e clicar no botão que criamos para abrir o formulário utilizando nossa macro.
Nos próximos posts continuaremos a construção do nosso formulário de cadastro.
Para saber mais sobre formulários e outros assuntos de Excel e VBA, acompanhe que vamos enviar outros posts.
Caso prefira esse conteúdo no formato de vídeo-aula clique nesse link!
Para baixar a planilha utilizada nessa aula clique aqui!
Essa é a continuação do primeiro post de UserFrom.
Como criar formulário no VBA?
Até o momento já criamos o botão para visualizar como está o nosso formulário e dentro dele já colocamos os textos e as caixas para que os usuários preencham nome, CPF e salário.
Vamos voltar ao ambiente VBA para continuar com o formulário, para isso basta pressionar as teclas ALT + F11 ou ALT + Fn + F11. Feito isso teremos aberto o ambiente de onde paramos.
Caso não abra diretamente na parte do formulário basta clicar duas vezes no menu a esquerda em Registro_Funcionarios que foi o nome dado ao formulário.
Para exibir em nosso formulário “Sexo:” basta clicar em “Nome:” e copiar e colar. Depois disso, para que exiba “Sexo:” basta alterar o nome no menu esquerdo de propriedades na parte de Caption.
Feito isso teremos o nome da opção que o usuário irá preencher.
Agora para colocar as opções para que o usuário possa escolher entre o sexo masculino e feminino vamos utilizar novamente a caixa de ferramentas. Desta vez iremos utilizar a ferramenta Botão de Opção.
O procedimento para colocar no formulário é igual aos outros, basta clicar e arrastar para inserir a ferramenta dentro do espaço desejado.
Podemos observar que a cor da escrita está preta e que o tamanho da fonte também está menor. É possível fazer esses ajustes como foram feitos nos itens anteriores, selecionando o item em questão e indo até a janela de propriedades que fica à esquerda.
Vamos modificar as opções Font (tamanho 14) e ForeColor (branco) para alterar o tamanho da fonte e a cor da mesma para que fique melhor visualmente. Tendo modificado essas duas opções é necessário modificar a opção Caption para masculino.
É possível observar que o formulário agora possui uma opção de seleção para o sexo masculino. Como são duas opções, para a segunda que é do sexo feminino basta copiar o item e apenas modificar o nome da opção.
Feito isso vamos inserir dois botões de comando que ficam dentro da caixa de ferramenta (segunda opção da lista de baixo). Esses botões serão OK e X. O primeiro é para confirmarmos os dados que foram colocados e cadastrar o funcionário enquanto o segundo é para fechar o formulário de cadastro.
Os dois botões serão criados da mesma forma que foram criados os outros itens, basta selecionar dentro do formulário e arrastar para que fiquem em um tamanho adequado.
Os nomes dentro dos botões serão novamente alterados modificando a opção Caption (alterar para “OK” e “X”) dentro da janela de propriedades. E o tamanho do texto pode ser modificado na opção Font.
Para o fundo dos botões podemos alterá-los modificando a opção BackColor que é a cor de fundo do item selecionado. Para mais opções de cores vamos até a guia Paleta e nela vamos selecionar a cor Verde para que o botão “OK” fique mais visual. Para o botão “X” faremos o mesmo procedimento, porém com a cor Vermelha.
Modificando o texto e as cores dos botões temos o seguinte resultado.
Para inserirmos a logo da empresa no formulário vamos utilizar a opção Imagem dentro da caixa de ferramentas e colocar dentro do formulário (última opção da fileira de baixo).
Ao inserir a imagem teremos um quadrado de cor cinza.
Para inserir a imagem é necessário primeiramente alterar a opção PictureSizeMode de 0 para 1. Desta forma a imagem se adapta melhor ao tamanho previamente destinado a ela.
Para inserir a imagem basta selecionar a opção Picture e selecionar o arquivo de imagem no computador. Ao chegar na pasta onde se encontra a imagem pode ser que ela não apareça então é necessário modificar a opção de Todas as Figuras para Todos os Arquivos.
Feito isso basta selecionar a imagem que será inserida e clicar em OK.
Com isso temos o visual do formulário quase pronto! – Como criar formulário no VBA
Agora vamos começar a construir o código para os botões de comando, vamos começar pelo X, que terá o objetivo de apagar tudo que foi escrito no formulário e fechá-lo.
Para isso, podemos dar um duplo clique neste item. Feito isso será aberta uma janela de programação do VBA para que possamos escrever o código do que queremos que esse botão faça quando clicarmos nele.
O código para isso é bem simples:
Private Sub CommandButton2_Click()
Unload Registro_funcionarios
End Sub
Basta escrever Unload Registro_funcionarios, que é para descarregar o formulário chamado registro_funcionarios, desta forma quando clicarmos no botão X o formulário terá o conteúdo apagado e será fechado.
Para testar essa funcionalidade basta abrir o ambiente Excel, clicar no botão Novo e clicar no X que foi configurado. Desta forma o formulário será fechado e as informações contidas serão apagadas.
Caso prefira esse conteúdo no formato de vídeo-aula clique nesse link!
Para baixar a planilha utilizada nessa aula clique aqui!
Como criar formulário no VBA?
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.
Private Sub CommandButton2_Click()
Unload Registro_funcionarios
End Sub
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.
Private Sub UserForm_Initialize()
End Sub
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 opções e, por isso, vamos escrever uma fórmula mais completa que verifica quantas informações temos na aba Fonte.
Private Sub UserForm_Initialize()
ult_linha = Sheets("Fonte").Range("B2").End(xlDown).Row
CaixaCombinacao_Area.RowSource = "Fonte!B3:B" & ult_linha
End Sub
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.
Essa é a quarta de cinco aulas nas quais estamos te ensinando todo o passo a passo de como criar formulário no VBA do zero de forma fácil.
Caso prefira esse conteúdo no formato de vídeo-aula, assista abaixo:
Para baixar a planilha utilizada nessa aula clique aqui!
Como Criar Formulário no VBA?
Essa é a continuação do post de como criar formulário no VBA. É o quarto post de cinco da sequência.
Até o momento é assim que temos o nosso formulário.
É possível observar que já temos nossa interface toda pronta, ou seja, temos todos os rótulos, caixas de textos, botões de opção, caixa de combinação e botões de comando. Temos tudo que precisamos para que o usuário possa inserir as informações referentes ao cadastro de funcionários.
O objetivo desse formulário é depois que todas as informações forem preenchidas o usuário pressione OK e todos esses dados sejam gravados em uma planilha para que a pessoa responsável possa analisar futuramente todos os cadastros que foram feitos.
Antes de começar a programação em VBA para dizer o que tem que ser feito com cada uma das informações é importante criarmos a planilha que irá receber esses dados. É uma planilha bem simples que vai conter exatamente as informações do formulário.
Esses serão os cabeçalhos da planilha para que possamos futuramente indicar onde cada um dos dados serão alocados.
Voltando ao VBA vamos agora modificar os nomes dados pelo Excel as caixas de texto para que tenhamos nomes mais intuitivos e seja mais fácil na hora da programação de saber o nome de cada um dos objetos que estamos utilizando.
Ao selecionar a caixa de texto embaixo do rótulo de nome é possível observar que o nome dado a essa caixa é TextBox1, que é um nome padrão dado pelo Excel, no entanto para facilitar a programação e sabermos com qual objeto estamos trabalhando vamos substituir esse nome por caixatexto_nome.
Assim, fica mais fácil identificar que se trata de uma caixa de texto e que essa caixa é referente ao nome do funcionário.
Para as caixas de CPF e Salário será feito o mesmo procedimento, será colocado caixatexto em seguida o símbolo “_” e o nome a que se refere, o primeiro será CPF e o segundo salário.
Para a área do funcionário iremos colocar o nome de caixacombinacao_area, porque é uma caixa de combinação e não apenas uma caixa de texto, ela possui algumas opções a serem selecionadas.
Os botões de opção de sexo também terão seus nomes alterados para botaomasculino e botaofeminino.
Para que possamos pegar essas informações do formulário e colocar na planilha vamos utilizar um evento, que é uma ação que vai disparar uma consequência, ou seja, nossa ação irá ocorrer quando pressionarmos o botão OK, essa ação vai gerar uma consequência que é pegar esses dados e gravar eles na planilha.
Então, para começarmos o código relacionado ao botão de OK basta dar um clique duplo no botão de OK que será iniciado um novo código para esse botão.
Observe que abaixo do código do botão se encontram os outros códigos que já fizemos nas aulas anteriores que são referentes ao fechamento do formulário e a atualização automática da lista de área do cadastro de funcionários.
OBS: Para prosseguir com o código e ter o funcionamento correto é importante que se tenha pelo menos 1 cadastro efetuado, ou seja, será necessário escrever manualmente o primeiro cadastro para que na hora de utilizar a fórmula ele funcione corretamente e escreva os próximos cadastros corretamente.
Para isso vamos começar colocando um cadastro na nossa lista.
O próximo passo de como criar formulário no VBA é descobrir qual é a última linha preenchida, e colocar a nova informação na linha logo abaixo. Neste caso temos que a última linha preenchida é a linha 2, portanto nosso novo cadastro deverá ser colocado na linha 3, ou seja, é a última linha preenchida + 1.
linha = Range("A1").End(xlDown).Row + 1
Após encontrar a linha em que os novos dados serão inseridos está na hora de indicar qual dado será inserido em cada uma das colunas. Neste momento vamos utilizar as nomenclaturas dadas anteriormente para facilitar o processo. Então o nome vamos colocar na coluna A e na linha encontrada pela fórmula anterior.
Cells(linha, 1) = caixatexto_nome.Value
Para os botões de opção, como temos dois botões um de masculino e um de feminino é necessário saber qual dos dois está selecionado, ou seja, qual deles é verdadeiro. Para fazer essa verificação vamos utilizar a fórmula SE do VBA que é o IF.
Então teremos que verificar se o botão masculino é verdadeiro, se for verdadeiro vamos colocar na coluna de sexo “Masculino”, caso contrário será “Feminino”, pois temos apenas duas opções.
If botaomasculino = True Then
Cells(linha, 2) = "Masculino"
Else
Cells(linha, 2) = "Feminino"
End If
Os próximos passos de como criar formulário no VBA são similares ao primeiro passo de preencher o nome do funcionário, vamos informar em qual linha e coluna será preenchido e vamos informar, qual informação deverá ser colocada em cada uma dessas células.
Cells(linha, 3) = caixacombinacao_area.Value
Cells(linha, 4) = caixatexto_cpf.Value
Cells(linha, 5) = caixatexto_salario.Value
Portanto, o código completo ficará da seguinte maneira:
Private Sub CommandButton1_Click()
linha = Range("A1").End(xlDown).Row + 1
Cells(linha, 1) = caixatexto_nome.Value
If botaomasculino = True Then
Cells(linha, 2) = "Masculino"
Else
Cells(linha, 2) = "Feminino"
End If
Cells(linha, 3) = caixacombinacao_area.Value
Cells(linha, 4) = caixatexto_cpf.Value
Cells(linha, 5) = caixatexto_salario.Value
End Sub
Para testar o funcionamento basta irmos ao ambiente Excel e preencher com algumas informações.
E ao pressionar OK temos esses dados que foram preenchidos sendo inseridos na planilha em seus devidos lugares.
É possível observar que os dados foram preenchidos corretamente em cada uma das colunas e foram preenchidos em uma linha vazia não havendo a sobreposição de informações.
No próximo post será finalizado o formulário com os últimos detalhes para deixá-lo completo e totalmente funcional. Esse foi o post 4/5 do UserForm…
UserForm no VBA: Como criar um Formulário no Excel
Esse é o quinto e último post que vamos finalizar a criação de um formulário no Excel utilizando a ferramenta de UserForm no VBA.
Caso prefira esse conteúdo no formato de vídeo-aula clique nesse link!
Para baixar a planilha utilizada nessa aula clique aqui!
Como criar um UserForm no VBA? – Como criar formulário no VBA
Essa é a continuação do post de UserForm. É o quinto e último post de cinco da sequência.
Já temos a parte da interface do UserForm no VBA completa, com todas as caixas de texto e todas as opções para cadastro de funcionário. Nesta aula vamos aprender como formatar os dados que serão inseridos dentro da planilha após o cadastro. Até o momento estava sendo utilizada uma formatação de tabela, no entanto vamos remover essa formatação e mostrar como estão sendo cadastrados nossos dados na planilha.
Esses são nossos dados sem formatação, agora vamos adicionar mais um funcionário para verificar como o Excel está cadastrando cada informação.
Ao pressionar OK esse funcionário será cadastrado e podemos verificar como os dados estão sendo armazenados na nossa planilha.
Nosso novo funcionário foi adicionado a linha 4, podemos observar que não há formatação de alinhamento, não temos a formatação do CPF, formatação do salário e não temos as bordas. Nesta aula vamos aprender a colocar essas formatações utilizando o VBA.
Para podermos escrever o código com todas essas informações temos que entrar no ambiente VBA (pressionando as teclas ALT + F11), indo até o nosso formulário e dando um duplo clique na nossa caixa de OK, que foi dentro dela que criamos o código abaixo.
Private Sub CommandButton1_Click()
linha = Range("A1").End(xlDown).Row + 1
Cells(linha, 1) = caixatexto_nome.Value
If botaomasculino = True Then
Cells(linha, 2) = "Masculino"
Else
Cells(linha, 2) = "Feminino"
End If
Cells(linha, 3) = caixacombinacao_area.Value
Cells(linha, 4) = caixatexto_cpf.Value
Cells(linha, 5) = caixatexto_salario.Value
End Sub
Esse é o código que temos até o momento para o cadastro do funcionário, ou seja, neste código estamos atribuindo os valores que foram preenchidos no formulário as colunas específicas de cada um dos dados.
Para escrevermos esse código com formatação, colocar em ordem alfabética, acrescentar as bordas… Não é necessário decorar o código que faz isso tudo, pois o Excel nos permite utilizar a ferramenta de Gravar Macro para gravar tudo o que foi feito em forma de código. Desta maneira podemos aprender como escrever cada uma das operações e então utilizá-las dentro da nossa planilha.
Para iniciar vamos começar a gravar a macro, para isso temos que ir até a guia Desenvolvedor e selecionar a opção Gravar Macro ou na guia Exibir em Macros e Gravar Macro.
Feito isso será aberta uma nova janela para preenchermos algumas informações sobre a macro. No nosso caso, vamos preencher somente o nome da macro.
Ao clicar no botão OK tudo o que for feito no Excel será gravado até que o usuário clique em Parar Gravação (que é a opção que aparece ao clicar em gravar macro).
Se considerarmos que a nossa primeira linha de dados já possui toda a formatação que queremos, vamos gravar a macro copiando (atalho CTRL + C) a primeira linha da planilha.
Em seguida vamos selecionar todos os dados da nossa tabela (atalho CTRL + SHIFT + SETA PARA BAIXO). Desta forma o Excel irá selecionar da primeira linha até a última linha com conteúdo da nossa planilha.
Feita a seleção, vamos até a guia Página Inicial e vamos selecionar o menu Colar e por fim selecionar a opção de Colar Formatação.
Para finalizar e retirar a seleção de cópia da primeira linha vamos pressionar a tecla ESC e parar a gravação da macro (clicar na mesma opção que utilizamos para começar a gravação de macro). Desta forma teremos os formatos da primeira linha copiado para toda a planilha, ou seja, todos os nossos dados ficarão formatados corretamente inclusive o dado que acabou de ser adicionado.
Agora podemos voltar ao ambiente VBA e no menu a esquerda vamos ir à pasta de módulos e selecionar o último módulo, que foi o que a gravação de macro acabou de criar.
Por fim, temos o seguinte código criado com a gravação da macro:
Sub formatar_tabela()
'
' formatar_tabela Macro
'
'
Range("A2:E2").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Como mencionado anteriormente, não precisamos decorar os códigos que fazem coisas muito específicas no Excel, basta gravar a macro que o próprio VBA escreve esse código mais específico.
Vamos copiar esse código e colar ao final do nosso código que coloca todos os dados do formulário dentro da planilha.
Private Sub CommandButton1_Click()
linha = Range("A1").End(xlDown).Row + 1
Cells(linha, 1) = caixatexto_nome.Value
If botaomasculino = True Then
Cells(linha, 2) = "Masculino"
Else
Cells(linha, 2) = "Feminino"
End If
Cells(linha, 3) = caixacombinacao_area.Value
Cells(linha, 4) = caixatexto_cpf.Value
Cells(linha, 5) = caixatexto_salario.Value
Range("A2:E2").Select
Selection.Copy
Range(Selection, Selection.End(xlDown)).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Para deixar os cadastros dos funcionários mais organizados precisamos para finalizar apenas ordená-los em ordem alfabética. Para fazer isso vamos repetir o procedimento de gravar uma macro, mas agora nossa ação será a organização dos cadastros em ordem alfabética.
Vamos até a opção Gravar Macro novamente, vamos nomear essa macro como ordenar_funcionarios. Inicialmente vamos selecionar as colunas de A até E.
Feito a seleção de todas as colunas que serão utilizadas, o próximo passo é selecionar a guia Dados e em seguida a opção Classificar.
Ao selecionar essa opção uma nova janela será aberta para podermos escolher a forma com que vamos classificar esses dados.
Nesta janela basta escolhermos para classificar por Nome, e pressionar OK. Feito isso nossa tabela será organizada em ordem alfabética e podemos parar a gravação da macro.
É possível observar que nossos funcionários estão organizados em ordem alfabética. Novamente, para ver como é escrito o código, vamos voltar ao ambiente VBA e abrir o último módulo que foi criado.
Neste caso a gravação ocorreu no módulo 2 também, juntamente com a primeira gravação que foi feita. A quantidade de macros em um mesmo módulo não influencia a execução delas, elas irão funcionar independentemente caso não haja ligação entre elas normalmente.
Sub ordenar_funcionarios()
'
' ordenar_funcionarios Macro
'
'
Columns("A:E") .Select
ActiveWorkbook.Worksheets("Cadastro") .Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Cadastro") .Sort.SortFields.Add2 Key:=Range("A2:A4"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Cadastro").Sort
.SetRange Range ("A1:E4")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Da mesma forma como fizemos com o código anterior vamos copiar e colar dentro do nosso código principal.
Nessa gravação de macro vamos precisar nos atentar a alguns pontos. Podemos notar que em dois pontos desse código temos uma limitação que é “A2:A4” e “A1:E4”, ou seja, como temos apenas 4 linhas o Excel pegou apenas esse intervalo para fazer nossa organização em ordem alfabética. Como no nosso código já temos uma variável que pega o valor da última linha preenchida da nossa tabela (variável linha). Logo, vamos substituir essas duas opções pelas duas a seguir, respectivamente: “A2:A” & linha e “A1:E” & linha. Utilizamos o & para juntar texto com número. Com isso, o intervalo que o código vai ler para ordenar alfabeticamente começa nas primeiras linhas e vai até a última linha preenchida da tabela, independente do número de linhas que a nossa tabela tiver.
Para deixar nosso formulário ainda mais completo vamos colocar uma opção para fechar o formulário após um funcionário ser cadastrado e mostrar uma caixa com o nome e área do funcionário que acabou de ser cadastrado.
Para isso vamos acrescentar um pequeno código ao final do que já temos para finalizar.
nome = caixatexto_nome.Value
area = caixacombinacao_area.Value
Unload Registro_funcionarios
MsgBox (" O funcionário(a) " & nome & " foi cadastrado na área " & area)
Neste código, estamos atribuindo tanto o nome do funcionário quanto sua área a duas variáveis (variável nome e área), em seguida estamos descarregando (Unload) o formulário, ou seja, estamos fechando o formulário. Por fim, estamos criando uma caixa de mensagem (MsgBox)falando que o funcionário foi cadastrado em uma área específica.
Vamos agora efetuar o cadastro de um novo cliente para verificar a funcionalidade de tudo que foi feito. Para isso, vamos voltar ao Excel e clicar no botão Novo Funcionário.
Ao pressionar OK temos o seguinte resultado.
Temos que o funcionário em questão foi adicionado na planilha, está com os dados formatados corretamente e já está organizado em ordem alfabética. Podemos notar que a caixa de mensagem apareceu corretamente com o nome do funcionário e a área cadastrada.
Feito isso nosso formulário está completo e pronto para ser utilizado.
Encerramos aqui a série dos 5 posts para a criação do formulário passo a passo. Neste ponto o usuário deve ser capaz de construir um formulário do 0 com todas as opções que foram abordadas e poderá também explorar as outras opções para conhecimento pessoal.
EXTRA: Podemos observar que a coluna de CPF não ficou formatada quando colocamos os números todos juntos, somente quando separamos manualmente. É possível criar uma “máscara” para toda vez que digitarmos os 11 números do CPF ele ficar automaticamente formatado. Para isso basta selecionar o primeiro CPF e selecionar a opção Mais Formatos de Número dentro da caixa de formatação.
Uma nova janela será aberta. Dentro dessa janela vamos selecionar a opção Personalizado.
Dentro da guia personalizado basta escrever manualmente abaixo do nome Tipo o seguinte código: ###”.”###”.”###-##
Desta forma o CPF ficará com uma máscara e toda vez que um CPF for escrito ele irá separar da forma que foi escrito. É possível ver essa separação na parte de exemplo que é exatamente como é a formatação de um CPF.
Para continuar recebendo conteúdo sobre esse e outros assuntos de Excel e VBA, acompanhe os nossos posts.
Para acessar outras publicações de VBA, clique aqui!
Sócio fundador e especialista em Python da Hashtag Treinamentos. Criador do Método Impressionador para ensinar pessoas comuns a crescerem na carreira e se destacarem na empresa usando o Python.