Visual Basic er et utmerket språk for å automatisere repeterende oppgaver i Excel. Tenk deg å ta automatiseringen opp et hakk ved å lage svært funksjonelle brukerskjemaer som også ser ryddige ut for sluttbrukerne.
Brukerskjemaer i VBA gir deg et tomt lerret; du kan designe og organisere skjemaene for å passe dine behov til enhver tid.
I denne veiledningen lærer du å lage et studentbasert dataregistreringsskjema som fanger opp relevant informasjon i koblede Excel-ark.
Opprette et brukerskjema med Excel VBA
Åpne en ny Excel-arbeidsbok og utfør noen få innledende trinn før du begynner å lage datainntastingsskjemaet.
Lagre arbeidsboken med ønsket navn; ikke glem å endre filtypen til en Excel-makroaktivert arbeidsbok.
I slekt:Nettsteder og blogger for å lære Excel-tips og triks
Legg til to ark i denne arbeidsboken, med følgende navn:
- Ark 1: Hjem
- Ark 2:Studentdatabase
Endre gjerne disse navnene i henhold til dine krav.
I Hjem ark, legg til en knapp for å kontrollere brukerskjemamakroen. Gå til Utvikler
fanen og klikk på Knapp alternativ fra Sett inn nedtrekksliste. Plasser knappen hvor som helst på arket.Når du har plassert knappen, gi den nytt navn. Høyreklikk på den, og klikk på Ny for å tilordne en ny makro for å vise skjemaet.
Skriv inn følgende kode i redigeringsvinduet:
Sub Button1_Click()
Brukerskjema. Forestilling
End Sub
Først når Hjem og Studentdatabase arkene er klare, det er på tide å designe brukerskjemaet. Naviger til Utvikler fanen, og klikk på Visual Basic for å åpne redigeringsprogrammet. Alternativt kan du trykke på ALT+F11 for å åpne redigeringsvinduet.
Klikk på Sett inn fanen og velg Brukerskjema.
Et tomt brukerskjema er klart til bruk; en tilhørende verktøykasse åpnes sammen med skjemaet, som har alle de essensielle verktøyene for å designe layouten.
Fra verktøykassen velger du Ramme alternativ. Dra dette til brukerskjemaet og endre størrelsen på det.
I (Navn) alternativet, kan du endre navnet på rammen. For å vise frem navnet på front-end, kan du endre navnet i Bildetekst kolonne.
Deretter velger du Merkelapp alternativet fra verktøykassen og sett inn to etiketter innenfor denne rammen. Gi nytt navn til den første som Applikasjons nummer og den andre som Student ID.
Den samme omdøpingslogikken gjelder; endre navnene via Bildetekst alternativet innenfor Egenskaper vindu. Pass på at du velger den respektive etiketten før du endrer navnet.
Deretter setter du inn to tekstbokser ved siden av etikettboksene. Disse vil bli brukt til å fange opp brukerens inndata. Endre navnene på to tekstbokser via (Navn) kolonne innenfor Egenskaper vindu. Navnene er som følger:
- Tekstboks 1: txtApplicationNo
- Tekstboks 2: txtStudentID
Utforme studentdetaljerrammen
Sett inn en vertikal ramme og legg til 10 etiketter og 10 tekstbokser. Gi nytt navn til hver av dem på følgende måte:
- Etikett 3: Navn
- Etikett 4: Alder
- Etikett 5: Adresse
- Etikett 6: Telefon
- Etikett 7: By
- Etikett 8: Land
- Etikett9: Fødselsdato
- Etikett 10: Post kode
- Etikett 11: Nasjonalitet
- Etikett 12: Kjønn
Sett inn tilsvarende tekstbokser ved siden av disse etikettene; sett inn to (eller flere) alternativknapp bokser fra brukerskjemaverktøykassen ved siden av kjønn merkelapp. Gi dem nytt navn Mann og Hunn (sammen med Custom), henholdsvis.
Utforme rammen for kursdetaljer
Legg til en annen vertikal ramme og sett inn seks etiketter og seks tekstbokser som tilsvarer hver etikett. Gi nytt navn til etikettene som følger:
- Etikett 13: Kursnavn
- Etikett 14: Kurs-ID
- Etikett 15: Startdato for påmelding
- Etikett 16: Sluttdato for påmelding
- Etikett 17: Kursets varighet
- Etikett 18: Avdeling
I slekt: 4 feil å unngå når du programmerer Excel-makroer med VBA
Utforme rammen for betalingsdetaljer
Sett inn en ny ramme; legg til en ny etikett og gi den nytt navn "Ønsker du å oppdatere betalingsdetaljene?" Sett inn to alternativknapper; gi dem nytt navn Ja og Nei.
På samme måte legger du til en ny ramme som inneholder to ekstra etiketter og to kombinasjonsbokser. Gi nytt navn til etikettene som følger:
- Etikett 19: Betaling mottatt
- Etikett20: Betalingsmåte
Utforme navigasjonsruten
I den siste rammen legger du til tre knapper fra verktøykassen, som vil inneholde kode for utførelse av skjemaene.
Gi knappene nytt navn på følgende måte:
- Knapp 1: Lagre detaljer
- Knapp 2: Klar form
- Knapp 3: Exit
Skrive den automatiske skjemakoden: Lagre detaljer-knappen
Dobbeltklikk på Lagre detaljer knapp. I den påfølgende modulen setter du inn følgende kode:
Private Sub CommandButton2_Click()
'erklære variablene som brukes gjennom kodene
Dim sht som regneark, sht1 som regneark, siste rad så lenge'Legg til valideringer for å sjekke om tegnverdier legges inn i numeriske felt.
Hvis VBA.IsNumeric (txtApplicationNo. Value) = False Da
MsgBox "Bare numeriske verdier er akseptert i applikasjonsnummeret", vbCritical
Avslutt Sub
Slutt omHvis VBA.IsNumeric (txtStudentID.Value) = False Da
MsgBox "Bare numeriske verdier er akseptert i student-ID", vbCritical
Avslutt Sub
Slutt omHvis VBA.IsNumeric (txtAge. Verdi) = False Da
MsgBox "Bare numeriske verdier er akseptert i alder", vbCritical
Avslutt Sub
Slutt omHvis VBA.IsNumeric (txtPhone. Verdi) = False Da
MsgBox "Bare numeriske verdier er akseptert i Telefonnummer", vbCritical
Avslutt Sub
Slutt omHvis VBA.IsNumeric (Me.txtCourseID.Value) = False Da
MsgBox "Kun numeriske verdier er akseptert i kurs-ID", vbCritical
Avslutt Sub
Slutt om'koble tekstboksfeltene med de underliggende arkene for å lage en rullende database
Sett sht = ThisWorkbook. Sheets ("Student Database")'beregn siste fylte rad i begge arkene
lastrow = sht. Range("a" & rader. Count).End (xlUp).Rad + 1
'lim inn verdiene for hver tekstboks i deres respektive arkceller
Med sht
.Range("a" & lastrow).Verdi = txtApplicationNo. Verdi
.Range("b" & lastrow).Verdi = txtStudentID.Value
.Range("c" & lastrow).Verdi = txtName. Verdi
.Range("d" & lastrow).Verdi = txtAlder. Verdi
.Range("e" & lastrow).Verdi = txtDOB.Verdi
.Range("g" & lastrow).Verdi = txtAddress. Verdi
.Range("h" & lastrow).Verdi = txtPhone. Verdi
.Range("i" & lastrow).Verdi = txtCity. Verdi
.Range("j" & lastrow).Verdi = txtCountry. Verdi
.Range("k" & lastrow).Verdi = txtZip. Verdi
.Range("l" & lastrow).Verdi = txtNasjonalitet. Verdi
.Range("m" & lastrow).Verdi = txtCourse. Verdi
.Range("n" & lastrow).Verdi = txtCourseID.Value
.Range("o" & lastrow).Verdi = txtenrollmentstart. Verdi
.Range("p" & lastrow).Verdi = txtenrollmentend. Verdi
.Range("q" & lastrow).Verdi = txtcourseduration. Verdi
.Range("r" & lastrow).Verdi = txtDept. VerdiAvslutt med
sht. Aktiver'bestem kjønn i henhold til brukerens input
Hvis optMale. Verdi = Sann Så sht. Range("g" & lastrow).Verdi = "Mann"
Hvis optFemale. Verdi = Sann Så sht. Range("g" & lastrow).Verdi = "Kvinne"
'Vis en meldingsboks i tilfelle brukeren velger Ja-radioknappenHvis optJa. Verdi = Sant Da
MsgBox "Vennligst velg betalingsdetaljene nedenfor"
Ellers:
Avslutt SubSlutt om
End Sub
Hvis du ikke er sikker på hva deler eller noen av koden betyr, ikke bekymre deg. Vi vil forklare det grundig i neste avsnitt.
Automatisert skjemakode forklart
Tekstboksene vil inneholde en blanding av tekst og numeriske verdier, så det er viktig å begrense brukerens input. De Applikasjons nummer, Student ID, Alder, Telefon, Kurs-ID, og Kursets varighet skal bare inneholde tall, mens resten vil inneholde tekst.
Ved å bruke en HVIS setning, utløser koden feil-pop-ups hvis brukeren skriver inn et tegn eller en tekstverdi i noen av de numeriske feltene.
Siden feilvalideringene er på plass, må du koble tekstboksene med arkcellene.
De siste rad variabler vil beregne den siste fylte raden, og lagre verdiene i dem for dynamisk bruk.
Til slutt limes verdiene inn fra tekstboksene i det koblede Excel-arket.
Fjern skjema- og avsluttknappkoder
I klar knappen, må du skrive koden for å fjerne de eksisterende verdiene fra brukerskjemaet. Dette kan gjøres på følgende måte:
Med meg
.txtApplicationNo. Verdi = ""
.txtStudentID.Value = ""
..txtNavn. Verdi = ""
.txtAlder. Verdi = ""
.txt-adresse. Verdi = ""
.txtTelefon. Verdi = ""
.txtCity. Verdi = ""
.txtLand. Verdi = ""
.txtDOB.Value = ""
.txtZip. Verdi = ""
.txtNasjonalitet. Verdi = ""
.txtCourse. Verdi = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Verdi = ""
.txtenrollmentend. Verdi = ""
.txt-kursvarighet. Verdi = ""
.txtDept. Verdi = ""
.cmbPaymentMode. Verdi = ""
.cmbPayment. Verdi = ""
.optFemale. Verdi = Falsk
.optMale. Verdi = Falsk
.optJa. Verdi = Falsk
.optNo. Verdi = Falsk
Avslutt med
I exit tast inn følgende kode for å lukke brukerskjemaet.
Private Sub CommandButton5_Click()
Last ned meg
End Sub
Som et siste trinn må du legge inn noen få siste kodebiter for å lage rullegardinverdiene for kombinasjonsboksene (innenfor betalingsrammene).
Private Sub UserForm_Activate()
Med cmbPayment
.Klar
.AddItem ""
.AddItem "Ja"
.AddItem "Nei"
Avslutt med
Med cmbPaymentMode
.Klar
.AddItem ""
.AddItem "Kontanter"
.AddItem "Card"
.AddItem "Sjekk"
Avslutt med
End Sub
VBA Automation gjør arbeidet enklere
VBA er et flerfasettert språk som tjener mange formål. Brukerskjemaer er bare ett aspekt innen VBA - det er mange andre bruksområder som å konsolidere arbeidsbøker og regneark, slå sammen flere Excel-ark og andre nyttige automatiseringsbruk.
Uansett automatiseringsmål, er VBA opp til oppgaven. Hvis du fortsetter å lære og øve deg på, er det ingen aspekter ved arbeidsflyten du ikke kan forbedre.
Å slå sammen data fra mer enn ett Excel-ark i samme arbeidsbok er et skikkelig problem... til du bruker VBA-makroer.
Les Neste
- Programmering
- Produktivitet
- Visual Basic programmering
- Microsoft Excel
Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.
Abonner på vårt nyhetsbrev
Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Klikk her for å abonnere