VBA - Formulários de usuário
UMA User Formé uma caixa de diálogo personalizada que torna a entrada de dados do usuário mais controlável e fácil de usar para o usuário. Neste capítulo, você aprenderá a projetar um formulário simples e adicionar dados ao Excel.
Step 1- Navegue até a janela VBA pressionando Alt + F11 e navegue até o menu "Inserir" e selecione "Formulário do usuário". Ao selecionar, o formulário do usuário é exibido conforme mostrado na imagem a seguir.
Step 2 - Projete os formulários usando os controles fornecidos.
Step 3- Após adicionar cada controle, os controles devem ser nomeados. A legenda corresponde ao que aparece no formulário e o nome corresponde ao nome lógico que aparecerá quando você escrever o código VBA para esse elemento.
Step 4 - A seguir estão os nomes de cada um dos controles adicionados.
Ao controle | Nome Lógico | Rubrica |
---|---|---|
De | frmempform | Formulário de Funcionário |
Caixa de etiqueta de identificação de funcionário | vazio | ID do Empregado |
caixa de etiqueta de nome próprio | primeiro nome | Primeiro nome |
caixa de rótulo de sobrenome | último nome | Último nome |
caixa de etiqueta dob | dob | Data de nascimento |
Mailid Label Box | mailid | Identificação do email |
Caixa de etiqueta para portador de passaporte | Portador do passaporte | Portador de passaporte |
Caixa de Texto Emp ID | txtempid | Não aplicável |
Caixa de Texto do Primeiro Nome | txtprimeiro nome | Não aplicável |
Caixa de Texto do Sobrenome | txtlastname | Não aplicável |
Caixa de Texto de ID de Email | txtemailid | Não aplicável |
Caixa de combinação de datas | cmbdate | Não aplicável |
Caixa de combinação do mês | cmbmês | Não aplicável |
Year Combo Box | cmbyear | Não aplicável |
Sim botão de rádio | rádio sim | sim |
Sem botão de rádio | radiono | Não |
Botão de envio | btnsubmit | Enviar |
Botão Cancelar | cancelar | Cancelar |
Step 5 - Adicione o código para o evento de carregamento do formulário, clicando com o botão direito do mouse no formulário e selecionando 'Exibir código'.
Step 6 - Selecione 'Formulário de usuário' na lista suspensa de objetos e selecione o método 'Inicializar' conforme mostrado na imagem a seguir.
Step 7 - Ao carregar o formulário, certifique-se de que as caixas de texto estejam desmarcadas, as caixas suspensas sejam preenchidas e os botões de opção sejam redefinidos.
Private Sub UserForm_Initialize()
'Empty Emp ID Text box and Set the Cursor
txtempid.Value = ""
txtempid.SetFocus
'Empty all other text box fields
txtfirstname.Value = ""
txtlastname.Value = ""
txtemailid.Value = ""
'Clear All Date of Birth Related Fields
cmbdate.Clear
cmbmonth.Clear
cmbyear.Clear
'Fill Date Drop Down box - Takes 1 to 31
With cmbdate
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
.AddItem "7"
.AddItem "8"
.AddItem "9"
.AddItem "10"
.AddItem "11"
.AddItem "12"
.AddItem "13"
.AddItem "14"
.AddItem "15"
.AddItem "16"
.AddItem "17"
.AddItem "18"
.AddItem "19"
.AddItem "20"
.AddItem "21"
.AddItem "22"
.AddItem "23"
.AddItem "24"
.AddItem "25"
.AddItem "26"
.AddItem "27"
.AddItem "28"
.AddItem "29"
.AddItem "30"
.AddItem "31"
End With
'Fill Month Drop Down box - Takes Jan to Dec
With cmbmonth
.AddItem "JAN"
.AddItem "FEB"
.AddItem "MAR"
.AddItem "APR"
.AddItem "MAY"
.AddItem "JUN"
.AddItem "JUL"
.AddItem "AUG"
.AddItem "SEP"
.AddItem "OCT"
.AddItem "NOV"
.AddItem "DEC"
End With
'Fill Year Drop Down box - Takes 1980 to 2014
With cmbyear
.AddItem "1980"
.AddItem "1981"
.AddItem "1982"
.AddItem "1983"
.AddItem "1984"
.AddItem "1985"
.AddItem "1986"
.AddItem "1987"
.AddItem "1988"
.AddItem "1989"
.AddItem "1990"
.AddItem "1991"
.AddItem "1992"
.AddItem "1993"
.AddItem "1994"
.AddItem "1995"
.AddItem "1996"
.AddItem "1997"
.AddItem "1998"
.AddItem "1999"
.AddItem "2000"
.AddItem "2001"
.AddItem "2002"
.AddItem "2003"
.AddItem "2004"
.AddItem "2005"
.AddItem "2006"
.AddItem "2007"
.AddItem "2008"
.AddItem "2009"
.AddItem "2010"
.AddItem "2011"
.AddItem "2012"
.AddItem "2013"
.AddItem "2014"
End With
'Reset Radio Button. Set it to False when form loads.
radioyes.Value = False
radiono.Value = False
End Sub
Step 8- Agora adicione o código ao botão Enviar. Ao clicar no botão enviar, o usuário deverá ser capaz de adicionar os valores na planilha.
Private Sub btnsubmit_Click()
Dim emptyRow As Long
'Make Sheet1 active
Sheet1.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = txtempid.Value
Cells(emptyRow, 2).Value = txtfirstname.Value
Cells(emptyRow, 3).Value = txtlastname.Value
Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
Cells(emptyRow, 5).Value = txtemailid.Value
If radioyes.Value = True Then
Cells(emptyRow, 6).Value = "Yes"
Else
Cells(emptyRow, 6).Value = "No"
End If
End Sub
Step 9 - Adicione um método para fechar o formulário quando o usuário clicar no botão Cancelar.
Private Sub btncancel_Click()
Unload Me
End Sub
Step 10- Execute o formulário clicando no botão "Executar". Insira os valores no formulário e clique no botão 'Enviar'. Automaticamente, os valores irão fluir para a planilha, conforme mostrado na imagem a seguir.