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:
- Ark 1: Hjem
- Ark 2:Studentdatabase
Du er velkommen til at ændre disse navne i henhold til dine krav.
I den
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 HvisHvis VBA.IsNumeric (txtStudentID.Value) = Falsk, så
MsgBox "Kun numeriske værdier accepteres i Student ID", vbCritical
Afslut Sub
Afslut HvisHvis VBA.IsNumeric (txtAge. Værdi) = Falsk Så
MsgBox "Kun numeriske værdier accepteres i Age", vbCritical
Afslut Sub
Afslut HvisHvis VBA.IsNumeric (txtPhone. Værdi) = Falsk Så
MsgBox "Kun numeriske værdier accepteres i Telefonnummer", vbCritical
Afslut Sub
Afslut HvisHvis 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ærdiSlut 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 JaHvis du vælger Ja. Værdi = Sand Så
MsgBox "Vælg venligst betalingsoplysningerne nedenfor"
Andet:
Afslut SubAfslut 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.
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
- Programmering
- Produktivitet
- Visual Basic programmering
- Microsoft Excel
Gaurav Siyal har to års skriveerfaring og har skrevet for en række digitale marketingfirmaer og softwarelivscyklusdokumenter.
Abonner på vores nyhedsbrev
Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!
Klik her for at abonnere