Visual Basic är ett utmärkt språk för att automatisera repetitiva uppgifter i Excel. Föreställ dig att ta din automatisering upp ett snäpp genom att skapa mycket funktionella användarformulär som också ser snygga ut för slutanvändarna.

Användarformulär i VBA ger dig en tom duk; du kan designa och organisera formulären för att passa dina behov när som helst.

I den här guiden får du lära dig att skapa ett elevbaserat datainmatningsformulär som fångar relevant information i länkade Excel-ark.

Skapa ett användarformulär med Excel VBA

Öppna en ny Excel-arbetsbok och utför några preliminära steg innan du börjar skapa ditt datainmatningsformulär.

Spara din arbetsbok med önskat namn; glöm inte att ändra filtypen till en Excel-makroaktiverad arbetsbok.

Relaterad:Webbplatser och bloggar för att lära dig Excel-tips och tricks

Lägg till två ark till den här arbetsboken med följande namn:

  1. Blad 1: Hem
  2. Blad 2:Studentdatabas

Ändra gärna dessa namn enligt dina önskemål.

I den Hem ark, lägg till en knapp för att styra användarformulärets makro. Gå till

instagram viewer
Utvecklare fliken och klicka på Knapp alternativ från Föra in rullgardinsmenyn. Placera knappen var som helst på arket.

När du har placerat knappen byter du namn på den. Högerklicka på den och klicka på Ny för att tilldela ett nytt makro för att visa formuläret.

Ange följande kod i redigeringsfönstret:

Sub Button1_Click()
UserForm. Show
Avsluta Sub

När Hem och Studentdatabas arken är klara, det är dags att designa användarformuläret. Navigera till Utvecklare fliken och klicka på Visual Basic för att öppna editorn. Alternativt kan du trycka på ALT+F11 för att öppna redigeringsfönstret.

Klicka på Föra in fliken och välj UserForm.

Ett tomt användarformulär är redo att användas; en medföljande verktygslåda öppnas tillsammans med formuläret, som har alla nödvändiga verktyg för att designa layouten.

Från verktygslådan väljer du Ram alternativ. Dra detta till användarformuläret och ändra storlek på det.

I den (namn) alternativet kan du ändra namnet på ramen. För att visa upp namnet på front-end kan du ändra namnet i Rubrik kolumn.

Välj sedan Märka alternativet från verktygslådan och infoga två etiketter inom denna ram. Byt namn på den första till Ansökningsnummer och den andra som studentlegitimation.

Samma namnändringslogik gäller; ändra namnen via Rubrik alternativ inom Egenskaper fönster. Se till att du väljer respektive etikett innan du ändrar dess namn.

Infoga sedan två textrutor bredvid etikettrutorna. Dessa kommer att användas för att fånga användarens indata. Ändra namnen på två textrutor via (Namn) kolumn i Egenskaper fönster. Namnen är följande:

  • Textruta 1: txtAnsökningsnr
  • Textruta 2: txtStudentID

Designa studentinformationsramen

Infoga en vertikal ram och lägg till 10 etiketter och 10 textrutor. Byt namn på var och en av dem på följande sätt:

  • Etikett 3: namn
  • Etikett 4: Ålder
  • Etikett 5: Adress
  • Etikett 6: Telefon
  • Etikett 7: Stad
  • Etikett 8: Land
  • Etikett9: Födelsedatum
  • Etikett 10: Postnummer
  • Etikett 11: Nationalitet
  • Etikett 12: Kön

Infoga motsvarande textrutor bredvid dessa etiketter; infoga två (eller fler) alternativknapp rutor från verktygslådan för användarformuläret bredvid kön märka. Byt namn på dem Manlig och Kvinna (tillsammans med Custom).

Utforma ram för kursdetaljer

Lägg till ytterligare en vertikal ram och infoga sex etiketter och sex textrutor som motsvarar varje etikett. Byt namn på etiketterna enligt följande:

  • Etikett 13: Kursnamn
  • Etikett 14: Kurs-ID
  • Etikett 15: Startdatum för anmälan
  • Etikett 16: Slutdatum för registrering
  • Etikett 17: Kurslängd
  • Etikett 18: Avdelning

Relaterad: 4 misstag att undvika när du programmerar Excel-makron med VBA

Designa ram för betalningsdetaljer

Sätt i en ny ram; lägg till en ny etikett och byt namn på den "Vill du uppdatera betalningsinformationen?" Sätt in två alternativknappar; byta namn på dem Ja och Nej.

Lägg på samma sätt till en ny ram som innehåller ytterligare två etiketter och två kombinationsrutor. Byt namn på etiketterna enligt följande:

  • Etikett 19: Betalning mottagen
  • Etikett 20: Betalningssätt

Designa navigeringsfönstret

I den sista ramen lägger du till tre knappar från verktygslådan, som kommer att innehålla kod för exekvering av formulären.

Byt namn på knapparna på följande sätt:

  • Knapp 1: Spara detaljer
  • Knapp 2: Rensa formulär
  • Knapp 3: Utgång

Skriva den automatiska formulärkoden: knappen Spara detaljer

Dubbelklicka på Spara detaljer knapp. I den efterföljande modulen, infoga följande kod:

Private Sub CommandButton2_Click()

deklarera de variabler som används i koderna
Dim sht As Worksheet, sht1 As Worksheet, sista raden As Long

'Lägg till valideringar för att kontrollera om teckenvärden skrivs in i numeriska fält.
Om VBA.IsNumeric (txtApplicationNo. Value) = False Då
MsgBox "Endast numeriska värden accepteras i applikationsnumret", vbCritical
Avsluta Sub
Avsluta om

Om VBA.IsNumeric (txtStudentID.Value) = False Då
MsgBox "Endast numeriska värden accepteras i student-ID", vbCritical
Avsluta Sub
Avsluta om

Om VBA.IsNumeric (txtAge. Värde) = Falskt då
MsgBox "Endast numeriska värden accepteras i Age", vbCritical
Avsluta Sub
Avsluta om

Om VBA.IsNumeric (txtPhone. Värde) = Falskt då
MsgBox "Endast numeriska värden accepteras i Telefonnummer", vbCritical
Avsluta Sub
Avsluta om

Om VBA.IsNumeric (Me.txtCourseID.Value) = False Då
MsgBox "Endast numeriska värden accepteras i kurs-ID", vbCritical
Avsluta Sub
Avsluta om

'länka textrutans fält med de underliggande arken för att skapa en rullande databas
Ange sht = ThisWorkbook. Sheets ("Student Database")

'beräkna den senaste ifyllda raden i båda arken

lastrow = sht. Range("a" & rader. Räkna). Slut (xlUp). Rad + 1

'klistra in värdena för varje textruta i sina respektive arkceller

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

Sluta med
sht. Aktivera

'bestäm kön enligt användarens input
Om optMale. Värde = Sant Sedan sht. Range("g" & lastrow).Value = "Mane"
Om optFemale. Värde = Sant Sedan sht. Range("g" & lastrow).Value = "Kvinna"
'Visa en meddelanderuta om användaren väljer alternativknappen Ja

Om ja. Värde = Sant Då
MsgBox "Välj betalningsinformationen nedan"
Annan:
Avsluta Sub

Avsluta om

Avsluta Sub

Om du inte är säker på vad delar eller någon av koden betyder, oroa dig inte. Vi kommer att förklara det noggrant i nästa avsnitt.

Automatisk formulärkod förklaras

Textrutorna kommer att innehålla en blandning av text och numeriska värden, så det är viktigt att begränsa användarens inmatning. De Ansökningsnummer, studentlegitimation, Ålder, Telefon, Kurs-ID, och Kurslängd bör endast innehålla siffror, medan resten innehåller text.

Att använda en OM sats, utlöser koden felmeddelanden om användaren anger ett tecken eller textvärde i något av de numeriska fälten.

Eftersom felvalideringarna är på plats måste du länka textrutorna med arkcellerna.

De sista raden variabler kommer att beräkna den senast fyllda raden och lagra värdena i dem för dynamisk användning.

Slutligen klistras värdena in från textrutorna i det länkade Excel-arket.

Rensa formulär- och utgångsknappkoder

I den klar knappen måste du skriva koden för att rensa befintliga värden från användarformuläret. Detta kan göras på följande sätt:

Med mig
.txtAnsökningsnr. Värde = ""
.txtStudentID.Value = ""
..txtNamn. Värde = ""
.txtÅlder. Värde = ""
.txtAdress. Värde = ""
.txtTelefon. Värde = ""
.txtCity. Värde = ""
.txtLand. Värde = ""
.txtDOB.Value = ""
.txtZip. Värde = ""
.txtNationalitet. Värde = ""
.txtCourse. Värde = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Värde = ""
.txtenrollmentend. Värde = ""
.txtkurslängd. Värde = ""
.txtAvd. Värde = ""
.cmbPaymentMode. Värde = ""
.cmbPayment. Värde = ""
.optFemale. Värde = Falskt
.optMale. Värde = Falskt
.optJa. Värde = Falskt
.optNo. Värde = Falskt

Sluta med

I den utgång knapp, ange följande kod för att stänga användarformuläret.

Private Sub CommandButton5_Click()
Lossa mig
Avsluta Sub

Som ett sista steg måste du mata in några sista kodbitar för att skapa rullgardinsvärdena för kombinationsrutorna (inom betalningsramarna).

Private Sub UserForm_Activate()

Med cmbPayment
.Klar
.Lägg till vara ""
.AddItem "Ja"
.AddItem "Nej"
Sluta med
Med cmbPaymentMode

.Klar
.Lägg till vara ""
.AddItem "Kontanter"
.AddItem "Kort"
.AddItem "Kontrollera"
Sluta med
Avsluta Sub

VBA Automation gör arbetet enklare

VBA är ett mångfacetterat språk som tjänar många syften. Användarformulär är bara en aspekt inom VBA - det finns många andra användningsområden som att konsolidera arbetsböcker och kalkylblad, slå samman flera Excel-ark och andra praktiska automatiseringsanvändningar.

Oavsett automatiseringsmålet klarar VBA uppgiften. Om du fortsätter att lära dig och träna på, finns det ingen aspekt av ditt arbetsflöde som du inte kan förbättra.

Hur man slår ihop flera Excel-ark med hjälp av ett VBA-makro

Att slå samman data från mer än ett Excel-ark i samma arbetsbok är ett riktigt krångel... tills du använder VBA-makron.

Läs Nästa

Dela med sigTweetE-post
Relaterade ämnen
  • Programmering
  • Produktivitet
  • Visual Basic-programmering
  • Microsoft excel
Om författaren
Gaurav Siyal (50 publicerade artiklar)

Gaurav Siyal har två års erfarenhet av att skriva, skriva för en rad digitala marknadsföringsföretag och programvarulivscykeldokument.

Mer från Gaurav Siyal

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera