Visual Basic er et fremragende sprog til automatisering af gentagne opgaver i Excel. Forestil dig at tage din automatisering et trin op ved at skabe yderst funktionelle brugerformularer, der også ser pæne ud for slutbrugerne.

Brugerformularer i VBA præsenterer dig for et tomt lærred; du kan designe og organisere formularerne, så de passer til dine behov til enhver tid.

I denne vejledning lærer du at oprette en elevbaseret dataindtastningsformular, der fanger relevant information i linkede Excel-ark.

Oprettelse af en brugerformular med Excel VBA

Åbn en ny Excel-projektmappe, og udfør et par indledende trin, før du begynder at oprette din dataindtastningsformular.

Gem din projektmappe med det ønskede navn; glem ikke at ændre filens type til en Excel Macro-aktiveret projektmappe.

Relaterede:Websteder og blogs for at lære Excel-tip og tricks

Tilføj to ark til denne projektmappe med følgende navne:

  1. Ark 1: Hjem
  2. Ark 2:Studentdatabase

Du er velkommen til at ændre disse navne i henhold til dine krav.

I den

instagram viewer
Hjem ark, tilføje en knap for at styre brugerformularmakroen. Gå til Udvikler fanen og klik på Knap mulighed fra Indsæt drop-down liste. Placer knappen hvor som helst på arket.

Når du har placeret knappen, skal du omdøbe den. Højreklik på den, og klik på Ny for at tildele en ny makro til at vise formularen.

Indtast følgende kode i redigeringsvinduet:

Underknap1_Klik()
Brugerformular. At vise
Slut Sub

En gang Hjem og Studenterdatabase ark er klar, er det tid til at designe brugerformularen. Naviger til Udvikler fanen, og klik på Visual Basic for at åbne editoren. Alternativt kan du trykke på ALT+F11 for at åbne redigeringsvinduet.

Klik på Indsæt fanen og vælg Brugerformular.

En tom brugerformular er klar til brug; en tilhørende værktøjskasse åbner sammen med formularen, som har alle de væsentlige værktøjer til at designe layoutet.

Fra værktøjskassen skal du vælge Ramme mulighed. Træk dette til brugerformularen og tilpas størrelsen.

I den (navn) mulighed, kan du ændre navnet på rammen. For at vise navnet på front-end, kan du ændre navnet i Billedtekst kolonne.

Vælg derefter Etiket mulighed fra værktøjskassen og indsæt to etiketter i denne ramme. Omdøb den første til Applikations nummer og den anden som studiekort.

Den samme omdøbningslogik gælder; ændre navnene via Billedtekst mulighed inden for Ejendomme vindue. Sørg for at vælge den respektive etiket, før du ændrer dens navn.

Indsæt derefter to tekstfelter ved siden af ​​etiketfelterne. Disse vil blive brugt til at fange brugerens input. Skift navnene på to tekstbokse via (Navn) kolonne i Ejendomme vindue. Navnene er som følger:

  • Tekstboks 1: txtAnsøgningsnr
  • Tekstboks 2: txtStudentID

Design af Student Detail Frame

Indsæt en lodret ramme, og tilføj 10 etiketter og 10 tekstbokse. Omdøb hver af dem på følgende måde:

  • Etiket 3: Navn
  • Etiket 4: Alder
  • Etiket 5: Adresse
  • Etiket 6: telefon
  • Etiket 7: By
  • Etiket 8: Land
  • Etiket 9: Fødselsdato
  • Etiket 10: Postnummer
  • Etiket 11: Nationalitet
  • Etiket 12: Køn

Indsæt tilsvarende tekstbokse ved siden af ​​disse etiketter; indsæt to (eller flere) indstillingsknap kasser fra brugerformularens værktøjskassen ved siden af køn etiket. Omdøb dem Han og Kvinde (sammen med Custom).

Design af rammen for kursusdetaljer

Tilføj endnu en lodret ramme og indsæt seks etiketter og seks tekstbokse svarende til hver etiket. Omdøb etiketterne som følger:

  • Etiket 13: Kursusnavn
  • Etiket 14: Kursus ID
  • Etiket 15: Startdato for tilmelding
  • Etiket 16: Slutdato for tilmelding
  • Etiket 17: Kursus varighed
  • Etiket 18: Afdeling

Relaterede: 4 fejl, der skal undgås, når du programmerer Excel-makroer med VBA

Design af betalingsdetaljerrammen

Indsæt en ny ramme; tilføje en ny etiket og omdøbe den "Ønsker du at opdatere betalingsoplysningerne?" Indsæt to indstillingsknapper; omdøbe dem Ja og Ingen.

Tilføj på samme måde en ny ramme, der indeholder to ekstra etiketter og to kombinationsbokse. Omdøb etiketterne som følger:

  • Etiket 19: Betaling modtaget
  • Etiket 20: Betalingsmåde

Design af navigationsruden

I den sidste ramme tilføjes tre knapper fra værktøjskassen, som vil indeholde kode til udførelse af formularerne.

Omdøb knapperne på følgende måde:

  • Knap 1: Gem detaljer
  • Knap 2: Ryd formular
  • Knap 3: Afslut

Skrivning af den automatiske formularkode: knappen Gem detaljer

Dobbeltklik på Gem detaljer knap. Indsæt følgende kode i det efterfølgende modul:

Private Sub CommandButton2_Click()

'erklære de variabler, der bruges i koderne
Dim sht som arbejdsark, sht1 som arbejdsark, sidste række så længe

'Tilføj valideringer for at kontrollere, om tegnværdier indtastes i numeriske felter.
Hvis VBA.IsNumeric (txtApplicationNo. Value) = False, så
MsgBox "Kun numeriske værdier accepteres i applikationsnummeret", vbCritical
Afslut Sub
Afslut Hvis

Hvis VBA.IsNumeric (txtStudentID.Value) = Falsk, så
MsgBox "Kun numeriske værdier accepteres i Student ID", vbCritical
Afslut Sub
Afslut Hvis

Hvis VBA.IsNumeric (txtAge. Værdi) = Falsk Så
MsgBox "Kun numeriske værdier accepteres i Age", vbCritical
Afslut Sub
Afslut Hvis

Hvis VBA.IsNumeric (txtPhone. Værdi) = Falsk Så
MsgBox "Kun numeriske værdier accepteres i Telefonnummer", vbCritical
Afslut Sub
Afslut Hvis

Hvis VBA.IsNumeric (Me.txtCourseID.Value) = Falsk, så
MsgBox "Kun numeriske værdier accepteres i kursus-id", vbCritical
Afslut Sub
Afslut Hvis

'link tekstboksfelterne med de underliggende ark for at skabe en rullende database
Indstil sht = ThisWorkbook. Sheets ("Student Database")

'beregn den sidste udfyldte række i begge ark

sidste række = sht. Range("a" & Rækker. Tæl). Slut (xlUp). Række + 1

'indsæt værdierne for hver tekstboks i deres respektive arkceller

Med sht
.Range("a" & lastrow).Værdi = txtApplicationNo. Værdi
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Værdi = txtName. Værdi
.Range("d" & lastrow).Værdi = txtAlder. Værdi
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Værdi = txtAddress. Værdi
.Range("h" & lastrow).Værdi = txtTelefon. Værdi
.Range("i" & lastrow).Værdi = txtCity. Værdi
.Range("j" & lastrow).Værdi = txtCountry. Værdi
.Range("k" & lastrow).Værdi = txtZip. Værdi
.Range("l" & lastrow).Værdi = txtNationalitet. Værdi
.Range("m" & lastrow).Værdi = txtCourse. Værdi
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Værdi = txtenrollmentstart. Værdi
.Range("p" & lastrow).Værdi = txtenrollmentend. Værdi
.Range("q" & lastrow).Værdi = txtcourseduration. Værdi
.Range("r" & lastrow).Værdi = txtDept. Værdi

Slut med
sht. Aktiver

'bestem køn i henhold til brugerens input
Hvis optMale. Værdi = Sand Så sht. Range("g" & lastrow).Value = "Mand"
Hvis optFemale. Værdi = Sand Så sht. Range("g" & lastrow).Value = "Kvinde"
'Vis en beskedboks, hvis brugeren vælger alternativknappen Ja

Hvis du vælger Ja. Værdi = Sand Så
MsgBox "Vælg venligst betalingsoplysningerne nedenfor"
Andet:
Afslut Sub

Afslut Hvis

Slut Sub

Hvis du ikke er sikker på, hvad dele eller nogen af ​​koden betyder, skal du ikke bekymre dig. Vi vil forklare det grundigt i næste afsnit.

Automatiseret formularkode forklaret

Tekstboksene vil indeholde en blanding af tekst og numeriske værdier, så det er vigtigt at begrænse brugerens input. Det Applikations nummer, studiekort, Alder, telefon, Kursus ID, og Kursus varighed skal kun indeholde tal, mens resten vil indeholde tekst.

Ved hjælp af en HVIS sætning, udløser koden fejl-pop-ups, hvis brugeren indtaster et tegn eller en tekstværdi i et af de numeriske felter.

Da fejlvalideringerne er på plads, skal du forbinde tekstfelterne med arkcellerne.

Det sidste række variabler vil beregne den sidst udfyldte række og gemme værdierne i dem til dynamisk brug.

Til sidst indsættes værdierne fra tekstboksene i det linkede Excel-ark.

Ryd formular- og afslutknapkoder

I den klar knappen, skal du skrive koden for at rydde de eksisterende værdier fra brugerformularen. Dette kan gøres på følgende måde:

Med mig
.txtAnsøgningsnr. Værdi = ""
.txtStudentID.Value = ""
..txtNavn. Værdi = ""
.txtAlder. Værdi = ""
.txtAdresse. Værdi = ""
.txtTelefon. Værdi = ""
.txtCity. Værdi = ""
.txtLand. Værdi = ""
.txtDOB.Value = ""
.txtZip. Værdi = ""
.txtNationalitet. Værdi = ""
.txtKursus. Værdi = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Værdi = ""
.txtenrollmentend. Værdi = ""
.txt-kursusvarighed. Værdi = ""
.txtDept. Værdi = ""
.cmbPaymentMode. Værdi = ""
.cmbPayment. Værdi = ""
.optFemale. Værdi = Falsk
.optMale. Værdi = Falsk
.optJa. Værdi = Falsk
.optNo. Værdi = Falsk

Slut med

I den Afslut knappen, skal du indtaste følgende kode for at lukke brugerformularen.

Private Sub CommandButton5_Click()
Aflæs mig
Slut Sub

Som et sidste trin skal du indtaste et par sidste stykker kode for at oprette drop-down værdierne for kombinationsboksene (inden for betalingsrammerne).

Private Sub UserForm_Activate()

Med cmbPayment
.Klar
.AddItem ""
.AddItem "Ja"
.AddItem "Nej"
Slut med
Med cmbPaymentMode

.Klar
.AddItem ""
.AddItem "Kontanter"
.AddItem "Kort"
.AddItem "Check"
Slut med
Slut Sub

VBA Automation gør arbejdet lettere

VBA er et sprog med mange facetter, der tjener mange formål. Brugerformularer er kun ét aspekt inden for VBA - der er mange andre anvendelser som at konsolidere projektmapper og regneark, flette flere Excel-ark og andre praktiske automatiseringsanvendelser.

Uanset automatiseringsmålet er VBA klar til opgaven. Hvis du bliver ved med at lære og øve dig i, er der intet aspekt af din arbejdsgang, du ikke kan forbedre.

Sådan flettes flere Excel-ark ved hjælp af en VBA-makro

At flette data fra mere end ét Excel-ark i den samme projektmappe er et rigtig besvær... indtil du bruger VBA-makroer.

Læs Næste

DelTweetE-mail
Relaterede emner
  • Programmering
  • Produktivitet
  • Visual Basic programmering
  • Microsoft Excel
Om forfatteren
Gaurav Siyal (50 artikler udgivet)

Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.

Mere fra Gaurav Siyal

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere