Brug af formularer i VBA giver dig et tomt lærred til at designe og arrangere formularer, så de passer til dine behov til enhver tid. Lad os lære med Download.vn , hvordan du opretter automatiske dataindtastningsformularer i Excel VBA !
Opret en brugerformular ved hjælp af Excel VBA
Åbn en ny Excel-projektmappe, og udfør et par indledende trin, før du begynder at oprette dataindtastningsformularen.
Gem projektmappen med det ønskede navn, glem ikke at ændre filtypen til Excel Macro-Enabled Workbook.
Tilføj 2 ark til denne projektmappe med følgende navne:
- Ark 1 : Hjem
- Ark2 : Elevdatabase
Du kan selvfølgelig ændre deres navne, som du ønsker.
Tilføj en makrokontrolknap til brugerformularen i arket Hjem . Gå til fanen Udvikler > klik på knappen på rullelisten Indsæt . Placer denne knap hvor som helst på regnearket.
Efter at have placeret knappen, omdøb den. Højreklik på den > klik på Ny for at vedhæfte en makro, der viser formularen.
Indtast følgende kode i redigeringsvinduet:
Sub Button1_Click()
UserForm.Show
End Sub
Med hjemmearket og elevdatabasen klar, er det tid til at designe brugerformularen. Naviger til fanen Udvikler > klik på Visual Basic for at åbne editoren . Alternativt kan du trykke ALT+F11 for at åbne redigeringsvinduet.
Klik på fanen Indsæt og vælg UserForm . En brugerformular er klar til at blive brugt. En medfølgende værktøjskasse åbner med denne formular, der indeholder alle de værktøjer, der er nødvendige for at designe layoutet.
Fra denne værktøjskasse skal du vælge Ramme . Træk den til brugerformularen og tilpas dens størrelse.
I (navn) kan du ændre navnet på denne ramme. For at få vist navnet på frontenden kan du ændre navnet i kolonnen Billedtekst .
Vælg derefter Etiket fra værktøjskassen og indsæt 2 klistermærker i denne boks. Omdøb fornavnet til Application Number og det andet navn til Student ID .
Anvend den samme omdøbningsproces via billedtekst i egenskaber . Sørg for at vælge den tilsvarende etiket, før du omdøber den.
Indsæt derefter 2 tekstbokse i klistermærkeboksen. De vil blive brugt til at fange brugerinput. Skift navnene på de 2 tekstbokse via kolonnen (Navn) i Egenskaber som følger:
- Tekstboks1 : txtApplicationNo
- Tekstboks2 : txtStudentID
Design af en elevinformationsramme
Indsæt en lodret ramme, og tilføj 10 etiketter og 10 tekstbokse. Omdøb etiketten som følger:
- Etiket 3 : Navn
- Etiket 4 : Alder
- Label 5 : Adresse
- Label 6 : Telefon
- Label 7 : By
- Etiket8 : Land
- Etiket9 : Fødselsdato
- Label10 : Postnummer
- Label11 : Nationalitet
- Label12 : Køn
Indsæt den tilsvarende tekstboks ved siden af disse etiketter, indsæt fra to valgknapper fra brugerformularens værktøjskassen ved siden af kønsetiketten. Skift deres navne til henholdsvis Mand og Kvinde (med brugerdefineret).
Design detaljeret kursusramme
Tilføj endnu en ramme lodret og indsæt 6 klistermærker, 6 tekstbokse svarende til hver etiket. Omdøb mærkaten som følger:
- Label13 : Kursusnavn
- Label14 : Kursus-id
- Label15 : Startdato for tilmelding
- Label16 : Slutdato for tilmelding
- Label17 : Kursusvarighed
- Label18 : Afdeling
Design betalingsdetaljeramme
Indsæt en ny ramme, tilføj en ny etiket og omdøb den "Ønsker du at opdatere betalingsoplysningerne?" Indsæt 2 valgknapper ; omdøb dem til Ja og Nej .
Tilføj på samme måde en ny ramme, der indeholder 2 ekstra etiketter og 2 kombinationsbokse. Omdøb etiketten som følger:
- Label19 : Betaling modtaget
- Label20 : Betalingsmåde
Design af navigationstavle
I den sidste ramme tilføjer du 3 knapper fra værktøjskassen, der indeholder kode til at implementere formularerne. Omdøb knapperne som følger:
- Knap1 : Gem detaljer
- Knap 2 : Ryd formular
- Knap 3 : Afslut
Skriv automatisk formularkode: Knap til at gemme information
Dobbeltklik på knappen Gem detaljer . I det næste modul skal du indsætte 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 af koden i den automatiserede form:
Tekstbokse indeholder tekst og numeriske værdier, så du skal begrænse brugerinput. Ansøgningsnummer, studie-id, alder, telefon, kursus-id og kursusvarighed vil kun indeholde tal, resten vil indeholde tekst.
Ved at bruge IF- kommandoen udløser koden en fejl-popup, hvis brugeren indtaster et tegn eller en tekstværdi i et numerisk felt.
Fordi der er fejlvalidering, skal du linke tekstfelterne til cellerne i regnearket.
Lastrow- variablerne beregner den sidst udfyldte række og gemmer værdien indeni til fleksibel brug.
Til sidst indsættes disse værdier i tekstboksen i det linkede Excel-ark.
Kod formularen ryd og afslut-knap
I sletknappen skal du skrive kode, der sletter de aktuelle værdier fra brugerens formular 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 skal du indtaste følgende kode i brugerens formular:
Private Sub CommandButton5_Click()
Unload Me
End Sub
I det sidste trin skal du indtaste de sidste par stykker kode for at oprette dropdown-værdierne for kombinationsboksen (i kasserammen).
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
Ovenstående er, hvordan du opretter en automatisk dataindtastningsformular i Excel VBA . Håber artiklen er nyttig for dig.