Å bruke skjemaer i VBA gir deg et tomt lerret for å designe og ordne skjemaer for å passe dine behov når som helst. La oss lære med Download.vn hvordan du lager automatiske dataregistreringsskjemaer i Excel VBA !
Lag et brukerskjema ved hjelp av Excel VBA
Åpne en ny Excel-arbeidsbok og utfør noen få innledende trinn før du begynner å lage dataregistreringsskjemaet.
Lagre arbeidsboken med ønsket navn, ikke glem å endre filtypen til Excel Macro-Enabled Workbook.
Legg til 2 ark i denne arbeidsboken med følgende navn:
- Ark 1 : Hjem
- Ark2 : Studentdatabase
Selvfølgelig kan du endre navnene deres som du ønsker.
I Hjem- arket legger du til en makrokontrollknapp for brukerskjema. Gå til Utvikler- fanen > klikk Knapp fra Sett inn-rullegardinlisten . Plasser denne knappen hvor som helst på regnearket.
Etter å ha plassert knappen, gi den nytt navn. Høyreklikk på den > klikk Ny for å legge ved en makro som viser skjemaet.
Skriv inn følgende kode i redigeringsvinduet:
Sub Button1_Click()
UserForm.Show
End Sub
Med hjemmearket og studentdatabasen klar, er det på tide å designe brukerskjemaet. Naviger til kategorien Utvikler > klikk på Visual Basic for å åpne redigeringsprogrammet . Alternativt kan du trykke ALT+F11 for å åpne redigeringsvinduet.
Klikk på Sett inn- fanen og velg UserForm . Et brukerskjema er klart til bruk. En tilhørende verktøykasse åpnes med dette skjemaet, som inneholder alle verktøyene som trengs for å designe layouten.
Fra denne verktøykassen velger du Ramme . Dra den til brukerskjemaet og endre størrelsen på den.
I (navn) kan du endre navnet på denne rammen. For å vise navnet på front-end, kan du endre navnet i tekstkolonnen .
Deretter velger du Etikett fra verktøykassen og setter inn 2 klistremerker i denne boksen. Gi nytt navn til søknadsnummer og det andre navnet til student-ID .
Bruk den samme endringsprosessen via bildetekst i egenskaper . Pass på at du velger den tilsvarende etiketten før du gir den nytt navn.
Deretter setter du inn 2 tekstbokser i klistremerkeboksen. De vil bli brukt til å fange opp brukerinndata. Endre navnene på de 2 tekstboksene via kolonnen (Navn) i Egenskaper som følger:
- Tekstboks1 : txtApplicationNo
- Tekstboks2 : txtStudentID
Utforme et studentinformasjonsrammeverk
Sett inn en vertikal ramme og legg til 10 etiketter og 10 tekstbokser. Gi nytt navn til etiketten som følger:
- Etikett3 : Navn
- Etikett 4 : Alder
- Etikett5 : Adresse
- Etikett 6 : Telefon
- Etikett 7 : By
- Etikett8 : Land
- Etikett9 : Fødselsdato
- Etikett 10 : Postnummer
- Etikett11 : Nasjonalitet
- Etikett12 : Kjønn
Sett inn den tilsvarende tekstboksen ved siden av disse etikettene, og sett inn fra to alternativknappbokser fra brukerskjemaverktøykassen ved siden av kjønnsetiketten. Endre navnene deres til henholdsvis mann og kvinne (med tilpasset).
Design detaljert kursrammeverk
Legg til en annen ramme vertikalt og sett inn 6 klistremerker, 6 tekstbokser som tilsvarer hver etikett. Gi nytt navn til klistremerket som følger:
- Etikett13 : Kursnavn
- Etikett14 : Kurs-ID
- Label15 : Startdato for påmelding
- Label16 : Sluttdato for registrering
- Label17 : Kursets varighet
- Etikett18 : Avdeling
Design betalingsdetaljramme
Sett inn en ny ramme, legg til en ny etikett og gi den nytt navn "Ønsker du å oppdatere betalingsdetaljene?" Sett inn 2 alternativknapper ; gi dem nytt navn til Ja og Nei .
På samme måte legger du til en ny ramme som inneholder 2 ekstra etiketter og 2 kombinasjonsbokser. Gi nytt navn til etiketten som følger:
- Label19 : Betaling mottatt
- Label20 : Betalingsmåte
Design av navigasjonsbrett
I den siste rammen legger du til 3 knapper fra verktøykassen, som inneholder kode for å distribuere skjemaene. Gi knappene nytt navn som følger:
- Knapp1 : Lagre detaljer
- Knapp 2 : Fjern skjema
- Knapp 3 : Avslutt
Skriv automatisk skjemakode: Knapp for å lagre informasjon
Dobbeltklikk på Lagre detaljer- knappen . I neste modul setter du inn følgende kode:
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
Forklaring av koden i automatisert form:
Tekstbokser inkluderer tekst og numeriske verdier, så du må begrense brukerinndata. Søknadsnummer, student-ID, alder, telefon, kurs-ID og kursvarighet vil kun inneholde tall, resten vil inneholde tekst.
Ved å bruke IF- kommandoen utløser koden en popup-feil hvis brukeren skriver inn et tegn eller en tekstverdi i et numerisk felt.
Fordi det er feilvalidering, må du koble tekstboksene til cellene i regnearket.
Lastrow- variablene beregner den siste fylte raden og lagrer verdien inne for fleksibel bruk.
Til slutt limes disse verdiene inn i tekstboksen i det koblede Excel-arket.
Kod skjemaet slett og avslutt-knappen
I slett- knappen må du skrive kode som sletter gjeldende verdier fra brukerens skjema som følger:
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 = False
End With
I exit- knappen skriver du inn følgende kode i brukerens skjema:
Private Sub CommandButton5_Click()
Unload Me
End Sub
I det siste trinnet må du skrive inn de siste kodebitene for å lage rullegardinverdiene for kombinasjonsboksen (i kassarammen).
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
Ovenfor er hvordan du oppretter et automatisk dataregistreringsskjema i Excel VBA . Håper artikkelen er nyttig for deg.