Att använda formulär i VBA ger dig en tom arbetsyta för att designa och ordna formulär för att passa dina behov när som helst. Låt oss lära oss med Download.vn hur man skapar automatiska datainmatningsformulär i Excel VBA !
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 datainmatningsformuläret.
Spara arbetsboken med önskat namn, glöm inte att ändra filtypen till Excel Macro-Enabled Workbook.
Lägg till 2 ark till denna arbetsbok med följande namn:
- Blad 1 : Hem
- Blad 2 : Studentdatabas
Naturligtvis kan du ändra deras namn som du vill.
Lägg till en makrokontrollknapp för användarformulär i hemarket . Gå till fliken Utvecklare > klicka på knappen i listrutan Infoga . Placera den här knappen var som helst på kalkylarket.
När du har placerat knappen byter du namn på den. Högerklicka på den > klicka på Ny för att bifoga ett makro som visar formuläret.
Ange följande kod i redigeringsfönstret:
Sub Button1_Click()
UserForm.Show
End Sub
Med hemarket och studentdatabasen redo är det dags att designa användarformuläret. Navigera till fliken Utvecklare > klicka på Visual Basic för att öppna redigeraren . Alternativt kan du trycka på ALT+F11 för att öppna redigeringsfönstret.
Klicka på fliken Infoga och välj UserForm . Ett användarformulär är klart att användas. En medföljande verktygslåda öppnas med detta formulär, som innehåller alla verktyg som behövs för att utforma layouten.
Välj Ram i den här verktygslådan . Dra den till användarformuläret och ändra storlek på den.
I (namn) kan du ändra namnet på denna ram. Om du vill visa namnet i gränssnittet kan du ändra namnet i kolumnen Bildtext .
Välj sedan Etikett från verktygslådan och sätt in 2 klistermärken i den här rutan. Byt namn på förnamnet till Application Number och det andra namnet till Student ID .
Använd samma byteprocess via bildtext i egenskaper . Se till att du väljer motsvarande etikett innan du byter namn på den.
Sätt sedan in 2 textrutor i klistermärkesrutan. De kommer att användas för att fånga användarinmatningar. Ändra namnen på de två textrutorna via kolumnen (Namn) i Egenskaper enligt följande:
- Textbox1 : txtApplicationNo
- Textbox2 : txtStudentID
Designa ett ramverk för studentinformation
Infoga en vertikal ram och lägg till 10 etiketter och 10 textrutor. Byt namn på etiketten enligt följande:
- Etikett3 : Namn
- Etikett 4 : Ålder
- Etikett 5 : Adress
- Etikett 6 : Telefon
- Etikett 7 : Stad
- Etikett8 : Land
- Etikett9 : Födelsedatum
- Etikett 10 : Postnummer
- Etikett 11 : Nationalitet
- Etikett 12 : Kön
Infoga motsvarande textruta bredvid dessa etiketter, infoga från två alternativknappsrutor från användarformulärets verktygslådan bredvid könsetiketten. Ändra deras namn till Man respektive Kvinna (med anpassad) .
Designa detaljerad kursram
Lägg till ytterligare en ram vertikalt och sätt in 6 klistermärken, 6 textrutor som motsvarar varje etikett. Byt namn på klistermärket enligt följande:
- Label13 : Kursens namn
- Etikett14 : Kurs-ID
- Etikett15 : Startdatum för anmälan
- Etikett16 : Slutdatum för registrering
- Label17 : Kurslängd
- Etikett18 : Avdelning
Designa betalningsdetaljram
Infoga en ny ram, lägg till en ny etikett och byt namn på den "Vill du uppdatera betalningsinformationen?" Infoga 2 alternativknappar ; döp om dem till Ja och Nej .
Lägg på samma sätt till en ny ram som innehåller 2 extra etiketter och 2 kombinationsrutor. Byt namn på etiketten enligt följande:
- Label19 : Betalning mottagen
- Label20 : Betalningssätt
Design av navigeringsbräda
I den sista ramen lägger du till 3 knappar från verktygslådan, som innehåller kod för att distribuera formulären. Byt namn på knapparna enligt följande:
- Knapp1 : Spara detaljer
- Knapp 2 : Rensa formulär
- Knapp 3 : Avsluta
Skriv automatisk formulärkod: Knapp för att spara information
Dubbelklicka på knappen Spara detaljer . I nästa modul, infoga följande kod:
Private Sub CommandButton2_Click()
‘declare the variables used throughout the codes
Dim sht As Worksheet, sht1 As Worksheet, lastrow As Long
'Add validations to check if character values are being entered in numeric fields.
If VBA.IsNumeric(txtApplicationNo.Value) = False Then
MsgBox "Only numeric values are accepted in the Application Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtStudentID.Value) = False Then
MsgBox "Only numeric values are accepted in the Student ID", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtAge.Value) = False Then
MsgBox "Only numeric values are accepted in Age", vbCritical
Exit Sub
End If
If VBA.IsNumeric(txtPhone.Value) = False Then
MsgBox "Only numeric values are accepted in Phone Number", vbCritical
Exit Sub
End If
If VBA.IsNumeric(Me.txtCourseID.Value) = False Then
MsgBox "Only numeric values are accepted in Course ID", vbCritical
Exit Sub
End If
'link the text box fields with the underlying sheets to create a rolling database
Set sht = ThisWorkbook.Sheets("Student Database")
'calculate last populated row in both sheets
lastrow = sht.Range("a" & Rows.Count).End(xlUp).Row + 1
'paste the values of each textbox into their respective sheet cells
With sht
.Range("a" & lastrow).Value = txtApplicationNo.Value
.Range("b" & lastrow).Value = txtStudentID.Value
.Range("c" & lastrow).Value = txtName.Value
.Range("d" & lastrow).Value = txtAge.Value
.Range("e" & lastrow).Value = txtDOB.Value
.Range("g" & lastrow).Value = txtAddress.Value
.Range("h" & lastrow).Value = txtPhone.Value
.Range("i" & lastrow).Value = txtCity.Value
.Range("j" & lastrow).Value = txtCountry.Value
.Range("k" & lastrow).Value = txtZip.Value
.Range("l" & lastrow).Value = txtNationality.Value
.Range("m" & lastrow).Value = txtCourse.Value
.Range("n" & lastrow).Value = txtCourseID.Value
.Range("o" & lastrow).Value = txtenrollmentstart.Value
.Range("p" & lastrow).Value = txtenrollmentend.Value
.Range("q" & lastrow).Value = txtcourseduration.Value
.Range("r" & lastrow).Value = txtDept.Value
End With
sht.Activate
'determine gender as per user's input
If optMale.Value = True Then sht.Range("g" & lastrow).Value = "Male"
If optFemale.Value = True Then sht.Range("g" & lastrow).Value = "Female"
'Display a message box, in case the user selects the Yes radio button
If optYes.Value = True Then
MsgBox "Please select the payment details below"
Else:
Exit Sub
End If
End Sub
Förklaring av koden i automatiserad form:
Textrutor innehåller text och numeriska värden, så du måste begränsa användarinmatning. Ansökningsnummer, student-id, ålder, telefon, kurs-id och kurslängd kommer endast att innehålla siffror, resten kommer att innehålla text.
Med hjälp av IF- kommandot utlöser koden ett felmeddelande om användaren anger ett tecken eller textvärde i något numeriskt fält.
Eftersom det finns felvalidering måste du länka textrutorna till cellerna i kalkylbladet.
Lastradvariablerna beräknar den senast fyllda raden och lagrar värdet inuti för flexibel användning.
Slutligen klistras dessa värden in i textrutan i det länkade Excel-arket.
Koda formuläret rensa och avsluta-knappen
I rensa -knappen måste du skriva kod som rensar de aktuella värdena från användarens formulär enligt följande:
With Me
.txtApplicationNo.Value = ""
.txtStudentID.Value = ""
..txtName.Value = ""
.txtAge.Value = ""
.txtAddress.Value = ""
.txtPhone.Value = ""
.txtCity.Value = ""
.txtCountry.Value = ""
.txtDOB.Value = ""
.txtZip.Value = ""
.txtNationality.Value = ""
.txtCourse.Value = ""
.txtCourseID.Value = ""
.txtenrollmentstart.Value = ""
.txtenrollmentend.Value = ""
.txtcourseduration.Value = ""
.txtDept.Value = ""
.cmbPaymentMode.Value = ""
.cmbPayment.Value = ""
.optFemale.Value = False
.optMale.Value = False
.optYes.Value = False
.optNo.Value = False
End With
I exit -knappen anger du följande kod i användarens formulär:
Private Sub CommandButton5_Click()
Unload Me
End Sub
I det sista steget måste du ange de sista kodbitarna för att skapa rullgardinsvärdena för kombinationsrutan (i kassaramen).
Private Sub UserForm_Activate()
With cmbPayment
.Clear
.AddItem ""
.AddItem "Yes"
.AddItem "No"
End With
With cmbPaymentMode
.Clear
.AddItem ""
.AddItem "Cash"
.AddItem "Card"
.AddItem "Check"
End With
End Sub
Ovan är hur du skapar ett formulär för automatisk datainmatning i Excel VBA . Hoppas artikeln är användbar för dig.