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.