VBA - Moduli utente

UN User Formè una finestra di dialogo personalizzata che rende l'immissione di dati utente più controllabile e più facile da usare per l'utente. In questo capitolo imparerai a progettare un modulo semplice e ad aggiungere dati in Excel.

Step 1- Passa alla finestra VBA premendo Alt + F11 e vai al menu "Inserisci" e seleziona "Modulo utente". Dopo la selezione, il modulo utente viene visualizzato come mostrato nella seguente schermata.

Step 2 - Progettare i moduli utilizzando i controlli forniti.

Step 3- Dopo aver aggiunto ogni controllo, i controlli devono essere denominati. La didascalia corrisponde a ciò che appare nel modulo e il nome corrisponde al nome logico che apparirà quando scrivi il codice VBA per quell'elemento.

Step 4 - Di seguito sono riportati i nomi rispetto a ciascuno dei controlli aggiunti.

Controllo Nome logico Didascalia
A partire dal frmempform Modulo dipendente
Etichetta di identificazione del dipendente empido ID Dipendente
Firstname Label Box nome di battesimo Nome di battesimo
Lastname Etichetta Box cognome Cognome
dob Etichetta Box dob Data di nascita
Mailid Etichetta Box mailid E-mail identificativo utente
Etichetta porta passaporto Porta passaporto Porta passaporto
Casella di testo ID Emp txtempid Non applicabile
Casella di testo del nome txtfirstname Non applicabile
Casella di testo del cognome txtlastname Non applicabile
Casella di testo ID e-mail txtemailid Non applicabile
Casella combinata data cmbdate Non applicabile
Casella combinata mese cmbmonth Non applicabile
Casella combinata anno cmbyear Non applicabile
Sì pulsante di opzione radio sì
Nessun pulsante di opzione radiono No
Pulsante Invia btnsubmit Invia
Pulsante Annulla btncancel Annulla

Step 5 - Aggiungere il codice per l'evento di caricamento del modulo facendo clic con il pulsante destro del mouse sul modulo e selezionando "Visualizza codice".

Step 6 - Seleziona "Modulo utente" dal menu a discesa degli oggetti e seleziona il metodo "Inizializza" come mostrato nello screenshot seguente.

Step 7 - Al caricamento del modulo, assicurarsi che le caselle di testo siano deselezionate, le caselle a discesa siano riempite e i pulsanti di opzione siano ripristinati.

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- Ora aggiungi il codice al pulsante Invia. Facendo clic sul pulsante di invio, l'utente dovrebbe essere in grado di aggiungere i valori nel foglio di lavoro.

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 - Aggiungere un metodo per chiudere il modulo quando l'utente fa clic sul pulsante Annulla.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Esegui il modulo facendo clic sul pulsante "Esegui". Immettere i valori nel modulo e fare clic sul pulsante "Invia". Automaticamente i valori fluiranno nel foglio di lavoro come mostrato nello screenshot seguente.