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ì | 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.