Visual Basic é uma magnífico linguagem para automatizar tarefas repetitivas no Excel. Imagine soerguer sua automação criando formulários de usuário altamente funcionais que também parecem organizados para os usuários finais.
Os formulários de usuário no VBA apresentam uma tela em branco; você pode projetar e organizar os formulários para atender às suas necessidades a qualquer momento.
Neste guia, você aprenderá a fabricar um formulário de ingressão de dados fundamentado no aluno que conquista informações relevantes em planilhas do Excel vinculadas.
Criando um formulário de usuário com Excel VBA
Abra uma novidade pasta de trabalho do Excel e execute algumas etapas preliminares antes de encetar a fabricar seu formulário de ingressão de dados.
Salve sua pasta de trabalho com o nome desejado; não se esqueça de modificar o tipo do registro para um Pasta de trabalho habilitada para macro do Excel.
Adicione duas planilhas a esta pasta de trabalho, com os seguintes nomes:
- Folha1: Lar
- Folha2: Banco de dados do aluno
Sinta-se à vontade para modificar esses nomes conforme suas necessidades.
No Lar planilha, adicione um botão para controlar a macro de formulário do usuário. Vou ao Desenvolvedor guia e clique no botão Botão opção do Inserir lista suspensa. Coloque o botão em qualquer lugar da folha.
Depois de colocar o botão, renomeie-o. Clique com o botão recta do mouse sobre ele e clique em Novo para atribuir uma novidade macro para mostrar o formulário.
Digite o seguinte código na janela do editor:
Sub Button1_Click()
UserForm.Show
End Sub
Uma vez o Lar e Banco de dados do aluno as planilhas estão prontas, é hora de projetar o formulário do usuário. Navegue até o Desenvolvedor guia e clique em Visual fundamental para terebrar o Editor. Alternativamente, você pode pressionar ALT+F11 para terebrar a janela do editor.
Clique no Inserir guia e selecione Formulário de usuário.
Um formulário de usuário em branco está pronto para uso; uma caixa de ferramentas acompanhante é ocasião junto com o formulário, que possui todas as ferramentas essenciais para projetar o layout.
Na caixa de ferramentas, selecione o Quadro, Armação opção. Arraste isso para o formulário do usuário e redimensione-o.
No (nome) opção, você pode modificar o nome do quadro. Para exibir o nome no front-end, você pode modificar o nome no Rubrica pilar.
A seguir, selecione o Rótulo opção da caixa de ferramentas e insira duas etiquetas dentro deste quadro. Renomeie o primeiro uma vez que Número do aplicativo e o segundo uma vez que Identidade estudantil.
A mesma lógica de renomeação se aplica; modificar os nomes através do Rubrica opção dentro do Propriedades janela. Certifique-se de selecionar o respectivo rótulo antes de modificar seu nome.
Em seguida, insira duas caixas de texto ao lado das caixas de rótulo. Estes serão usados para conquistar as entradas do usuário. Altere os nomes de duas caixas de texto através do (Nome) pilar dentro do Propriedades janela. Os nomes são os seguintes:
- Caixa de texto1: txtApplicationNo
- Caixa de texto2: txtStudentID
Projetando o quadro de detalhes do aluno
Insira um quadro vertical e adicione 10 rótulos e 10 caixas de texto. Renomeie cada um deles da seguinte maneira:
- Etiqueta3: Nome
- Etiqueta 4: Idade
- Etiqueta 5: Endereço
- Etiqueta6: Telefone
- Etiqueta 7: Cidade
- Etiqueta8: País
- Etiqueta9: Data de promanação
- Etiqueta10: Código postal
- Etiqueta11: Nacionalidade
- Etiqueta12: Gênero
Insira as caixas de texto correspondentes ao lado desses rótulos; insira dois (ou mais) botão de opção caixas da caixa de ferramentas do formulário do usuário ao lado do Gênero sexual rótulo. Renomeie-os Masculino e Fêmea (junto com Custom), respectivamente.
Projetando o quadro de detalhes do curso
Adicione outro quadro vertical e insira seis rótulos e seis caixas de texto correspondentes a cada rótulo. Renomeie os rótulos da seguinte maneira:
- Etiqueta13: Nome do curso
- Etiqueta14: Identidade do curso
- Etiqueta15: Data de início da letreiro
- Etiqueta16: Data de término da letreiro
- Etiqueta17: Duração do curso
- Etiqueta18: Departamento
Projetando o Quadro de Detalhes de Pagamento
Insira um novo quadro; adicione um novo rótulo e renomeie-o uma vez que “Deseja atualizar os detalhes do pagamento?” Insira dois botões de opção; renomeá-los sim e Não.
Da mesma forma, adicione um novo quadro contendo dois rótulos adicionais e duas caixas de combinação. Renomeie os rótulos da seguinte maneira:
- Etiqueta19: Pagamento recebido
- Etiqueta20: Modo de pagamento
Projetando o pintura de navegação
No quadro final, adicione três botões da caixa de ferramentas, que conterá o código para a realização dos formulários.
Renomeie os botões da seguinte maneira:
- Botão1: Salvar detalhes
- Botão2: Forma limpa
- Botão3: Saída
Escrevendo o código de formulário automatizado: botão Salvar detalhes
Clique duas vezes no Salvar detalhes botão. No módulo seguinte, insira o seguinte código:
Private Sub CommandButton2_Click()‘declare the variables used throughout the codes
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long
'Add validations to check if character values are being entered in numeric fields.
If VBA.IsNumeric(txtApplicationNo.Value) = False Then
MsgBox "Only numeric values are accepted in the Application Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtStudentID.Value) = False Then
MsgBox "Only numeric values are accepted in the Student ID", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtAge.Value) = False Then
MsgBox "Only numeric values are accepted in Age", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtPhone.Value) = False Then
MsgBox "Only numeric values are accepted in Phone Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(Me.txtCourseID.Value) = False Then
MsgBox "Only numeric values are accepted in Course ID", vbCritical
Exit Sub
End If
'link the text box fields with the underlying sheets to create a rolling database
Set sht = ThisWorkbook.Sheets("Student Database")
'calculate last populated row in both sheets
lastrow = sht.Range("a" & Rows.Count).End(xlUp).Row + 1
'paste the values of each textbox into their respective sheet cells
With sht
.Range("a" & lastrow).Value = txtApplicationNo.Value
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName.Value
.Range("d" & lastrow).Value = txtAge.Value
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress.Value
.Range("h" & lastrow).Value = txtPhone.Value
.Range("i" & lastrow).Value = txtCity.Value
.Range("j" & lastrow).Value = txtCountry.Value
.Range("k" & lastrow).Value = txtZip.Value
.Range("l" & lastrow).Value = txtNationality.Value
.Range("m" & lastrow).Value = txtCourse.Value
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart.Value
.Range("p" & lastrow).Value = txtenrollmentend.Value
.Range("q" & lastrow).Value = txtcourseduration.Value
.Range("r" & lastrow).Value = txtDept.Value
End With
sht.Activate
'determine gender as per user's input
If optMale.Value = True Then sht.Range("g" & lastrow).Value = "Male"
If optFemale.Value = True Then sht.Range("g" & lastrow).Value = "Female"
'Display a message box, in case the user selects the Yes radio button
If optYes.Value = True Then
MsgBox "Please select the payment details below"
Else:
Exit Sub
End If
End Sub
Se você não tiver certeza do que significa segmento ou qualquer segmento do código, não se preocupe. Explicaremos isso detalhadamente na próxima seção.
Código de formulário automatizado explicado
As caixas de texto conterão uma mistura de texto e valores numéricos, portanto, é forçoso restringir a ingressão do usuário. O Número do aplicativo, Identidade estudantil, Idade, Telefone, Identidade do cursoe Duração do curso deve moderar somente números, enquanto o restante conterá texto.
Usando um E SE instrução, o código acionará pop-ups de erro se o usuário inserir um caractere ou valor de texto em qualquer um dos campos numéricos.
Uma vez que as validações de erro estão em vigor, você precisa vincular as caixas de texto às células da planilha.
O última fileira variáveis calcularão a última risco preenchida e armazenarão os valores nelas para uso dinâmico.
Por termo, os valores são colados das caixas de texto na planilha do Excel vinculada.
Limpar formulário e códigos de botão de saída
No Evidente botão, você precisa redigir o código para limpar os valores existentes do formulário do usuário. Isso pode ser feito da seguinte maneira:
With Me
.txtApplicationNo.Value = ""
.txtStudentID.Value = ""
..txtName.Value = ""
.txtAge.Value = ""
.txtAddress.Value = ""
.txtPhone.Value = ""
.txtCity.Value = ""
.txtCountry.Value = ""
.txtDOB.Value = ""
.txtZip.Value = ""
.txtNationality.Value = ""
.txtCourse.Value = ""
.txtCourseID.Value = ""
.txtenrollmentstart.Value = ""
.txtenrollmentend.Value = ""
.txtcourseduration.Value = ""
.txtDept.Value = ""
.cmbPaymentMode.Value = ""
.cmbPayment.Value = ""
.optFemale.Value = False
.optMale.Value = False
.optYes.Value = False
.optNo.Value = FalseEnd With
No saída botão, digite o seguinte código para fechar o formulário do usuário.
Private Sub CommandButton5_Click()
Unload Me
End Sub
Uma vez que último passo, você precisa inserir alguns pedaços finais de código para fabricar os valores suspensos para as caixas de combinação (dentro dos quadros de pagamento).
Private Sub UserForm_Activate()With cmbPayment
.Clear
.AddItem ""
.AddItem "Yes"
.AddItem "No"
End With
With cmbPaymentMode
.Clear
.AddItem ""
.AddItem "Cash"
.AddItem "Card"
.AddItem "Check"
End With
End Sub
A automação VBA facilita o trabalho
VBA é uma linguagem multifacetada que serve a muitos propósitos. Os formulários de usuário são somente um vista do VBA – há muitos outros usos, uma vez que solidar pastas de trabalho e planilhas, mesclar várias planilhas do Excel e outros usos de automação úteis.
Não importa o objetivo de automação, o VBA está à fundura da tarefa. Se você continuar aprendendo e praticando, não há vista do seu fluxo de trabalho que você não possa melhorar.
Leia a seguir
Sobre o responsável