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:

  1. Ark 1: Hjem
  2. 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

instagram viewer
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 om

Hvis VBA.IsNumeric (txtStudentID.Value) = False Da
MsgBox "Bare numeriske verdier er akseptert i student-ID", vbCritical
Avslutt Sub
Slutt om

Hvis VBA.IsNumeric (txtAge. Verdi) = False Da
MsgBox "Bare numeriske verdier er akseptert i alder", vbCritical
Avslutt Sub
Slutt om

Hvis VBA.IsNumeric (txtPhone. Verdi) = False Da
MsgBox "Bare numeriske verdier er akseptert i Telefonnummer", vbCritical
Avslutt Sub
Slutt om

Hvis 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. Verdi

Avslutt 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-radioknappen

Hvis optJa. Verdi = Sant Da
MsgBox "Vennligst velg betalingsdetaljene nedenfor"
Ellers:
Avslutt Sub

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

Slik slår du sammen flere Excel-ark ved hjelp av en VBA-makro

Å slå sammen data fra mer enn ett Excel-ark i samme arbeidsbok er et skikkelig problem... til du bruker VBA-makroer.

Les Neste

DelekvitringE-post
Relaterte temaer
  • Programmering
  • Produktivitet
  • Visual Basic programmering
  • Microsoft Excel
Om forfatteren
Gaurav Siyal (50 artikler publisert)

Gaurav Siyal har to års skriveerfaring, og har skrevet for en rekke digitale markedsføringsfirmaer og programvarelivssyklusdokumenter.

Mer fra Gaurav Siyal

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