Visual Basic is een uitstekende taal voor het automatiseren van repetitieve taken in Excel. Stelt u zich eens voor dat u uw automatisering naar een hoger niveau tilt door zeer functionele gebruikersformulieren te maken die er ook netjes uitzien voor de eindgebruikers.
Gebruikersformulieren in VBA bieden u een leeg canvas; u kunt de formulieren op elk gewenst moment ontwerpen en ordenen om aan uw behoeften te voldoen.
In deze handleiding leert u een studentgebaseerd gegevensinvoerformulier te maken dat relevante informatie vastlegt in gekoppelde Excel-bladen.
Een gebruikersformulier maken met Excel VBA
Open een nieuwe Excel-werkmap en voer een paar voorbereidende stappen uit voordat u begint met het maken van uw gegevensinvoerformulier.
Sla je werkmap op met de gewenste naam; vergeet niet het bestandstype te wijzigen in een Excel-werkmap met macro's.
Verwant:Websites en blogs om Excel-tips en -trucs te leren
Voeg twee bladen toe aan deze werkmap, met de volgende namen:
- Blad1: Thuis
- Blad2:Studentendatabase
Voel je vrij om deze namen te wijzigen volgens uw vereisten.
In de Thuis blad, voeg een knop toe om de gebruikersformuliermacro te beheren. Ga naar de Ontwikkelaar tabblad en klik op de Knop optie van de Invoegen keuzelijst. Plaats de knop ergens op het blad.
Zodra je de knop hebt geplaatst, hernoem je hem. Klik er met de rechtermuisknop op en klik op Nieuw om een nieuwe macro toe te wijzen om het formulier weer te geven.
Voer de volgende code in het editorvenster in:
Sub-knop1_Klik()
Gebruikersformulier. Laten zien
Einde sub
Zodra de Thuis en Studentendatabase bladen zijn klaar, het is tijd om het gebruikersformulier te ontwerpen. Navigeer naar de Ontwikkelaar tabblad en klik op Visuele Basis om de Editor te openen. U kunt ook op drukken ALT+F11 om het editorvenster te openen.
Klik op de Invoegen tabblad en selecteer Gebruikersformulier.
Een blanco gebruikersformulier is klaar voor gebruik; een bijbehorende toolbox wordt geopend samen met het formulier, dat alle essentiële tools bevat om de lay-out te ontwerpen.
Selecteer in de gereedschapskist de Kader optie. Sleep dit naar het gebruikersformulier en wijzig het formaat.
In de (naam) optie, kunt u de naam van het frame wijzigen. Om de naam op de front-end te laten zien, kunt u de naam wijzigen in de Ondertiteling kolom.
Selecteer vervolgens de Label optie uit de toolbox en plaats twee labels binnen dit frame. Hernoem de eerste als Applicatie nummer en de tweede als Student-ID.
Dezelfde hernoemingslogica is van toepassing; verander de namen via de Ondertiteling optie binnen de Eigenschappen raam. Zorg ervoor dat u het respectieve label selecteert voordat u de naam wijzigt.
Voeg vervolgens twee tekstvakken in naast de labelvakken. Deze worden gebruikt om de invoer van de gebruiker vast te leggen. Wijzig de namen van twee tekstvakken via de (Naam) kolom binnen de Eigenschappen raam. De namen zijn als volgt:
- Tekstvak1: txtToepassingNee
- Tekstvak2: txtStudent-ID
Het frame met studentdetails ontwerpen
Voeg een verticaal kader in en voeg 10 labels en 10 tekstvakken toe. Hernoem elk van hen op de volgende manier:
- Label3: Naam
- Label4: Leeftijd
- Label5: Adres
- Label6: Telefoon
- Label7: Stad
- Label8: Land
- Label9: Geboortedatum
- Etiket10: Postcode
- Label11: Nationaliteit
- Etiket12: Geslacht
Voeg corresponderende tekstvakken in naast deze labels; plaats twee (of meer) optieknop vakken uit de toolbox voor gebruikersformulieren naast de geslacht label. Hernoem ze Mannelijk en Vrouwelijk (samen met Aangepast), respectievelijk.
Het frame met cursusdetails ontwerpen
Voeg nog een verticaal kader toe en voeg zes labels en zes tekstvakken in die overeenkomen met elk label. Hernoem de labels als volgt:
- Etiket13: Cursus naam
- Etiket14: Cursus id
- Etiket15: Startdatum inschrijving
- Etiket16: Einddatum inschrijving
- Label17: Cursusduur
- Label18: afdeling
Verwant: 4 fouten die u moet vermijden bij het programmeren van Excel-macro's met VBA
Het frame met betalingsgegevens ontwerpen
Voeg een nieuw frame in; voeg een nieuw label toe en hernoem het "Wilt u de betalingsgegevens bijwerken?" Plaats twee optieknoppen; hernoem ze Ja en Nee.
Voeg op dezelfde manier een nieuw frame toe met twee extra labels en twee keuzelijsten met invoervak. Hernoem de labels als volgt:
- Etiket19: Betaling ontvangen
- Etiket20: Manier van betalen
Het navigatiedeelvenster ontwerpen
Voeg in het laatste frame drie knoppen uit de toolbox toe, die code zullen bevatten voor het uitvoeren van de formulieren.
Hernoem de knoppen op de volgende manier:
- Knop1: Gegevens opslaan
- Knop2: Formulier wissen
- Knop3: Uitgang
De geautomatiseerde formuliercode schrijven: knop Details opslaan
Dubbelklik op de Gegevens opslaan knop. Voer in de volgende module de volgende code in:
Privé Sub CommandButton2_Click()
'declareer de variabelen die in de codes worden gebruikt'
Dim sht als werkblad, sht1 als werkblad, laatste rij zo lang'Voeg validaties toe om te controleren of tekenwaarden worden ingevoerd in numerieke velden.
Als VBA.IsNumeric (txtApplicationNo. Value) = False Dan
MsgBox "Alleen numerieke waarden worden geaccepteerd in het aanvraagnummer", vbCritical
Sub afsluiten
Stop alsAls VBA.IsNumeric (txtStudentID.Value) = False Dan
MsgBox "Alleen numerieke waarden worden geaccepteerd in de Student ID", vbCritical
Sub afsluiten
Stop alsAls VBA.IsNumeric (txtAge. Waarde) = Onwaar Dan
MsgBox "Alleen numerieke waarden worden geaccepteerd in Age", vbCritical
Sub afsluiten
Stop alsAls VBA.IsNumeric (txtPhone. Waarde) = Onwaar Dan
MsgBox "Alleen numerieke waarden worden geaccepteerd in telefoonnummer", vbCritical
Sub afsluiten
Stop alsAls VBA.IsNumeric (Me.txtCourseID.Value) = False Dan
MsgBox "Alleen numerieke waarden worden geaccepteerd in cursus-ID", vbCritical
Sub afsluiten
Stop als'koppel de tekstvakvelden met de onderliggende bladen om een rollende database te maken'
Stel sht = ThisWorkbook in. Spreadsheets ("Studentendatabase")'bereken de laatst ingevulde rij in beide bladen'
laatste rij = sht. Range("a" & rijen. Tellen).Einde (xlUp).Rij + 1
'plak de waarden van elk tekstvak in hun respectievelijke bladcellen'
met sht
.Bereik ("a" & laatste rij). Waarde = txtApplicationNo. Waarde
.Bereik ("b" & laatste rij). Waarde = txtStudentID.Waarde
.Bereik ("c" & laatste rij). Waarde = txtNaam. Waarde
.Bereik ("d" & laatste rij). Waarde = txtAge. Waarde
.Bereik ("e" & laatste rij). Waarde = txtDOB. Waarde
.Bereik ("g" & laatste rij). Waarde = txtAdres. Waarde
.Bereik ("h" & laatste rij). Waarde = txtTelefoon. Waarde
.Bereik ("i" & laatste rij). Waarde = txtCity. Waarde
.Bereik ("j" & laatste rij). Waarde = txtLand. Waarde
.Bereik ("k" & laatste rij). Waarde = txtZip. Waarde
.Bereik ("l" & laatste rij). Waarde = txtNationaliteit. Waarde
.Bereik ("m" & laatste rij). Waarde = txtCourse. Waarde
.Bereik ("n" & laatste rij). Waarde = txtCourseID.Waarde
.Bereik ("o" & laatste rij). Waarde = txtenrollmentstart. Waarde
.Bereik ("p" & laatste rij). Waarde = txtenrollmentend. Waarde
.Bereik ("q" & laatste rij). Waarde = txtcursusduur. Waarde
.Bereik ("r" & laatste rij). Waarde = txtDept. WaardeEindigt met
sht. Activeren'geslacht bepalen volgens de invoer van de gebruiker'
Indien optMale. Waarde = Waar Dan sht. Bereik ("g" & laatste rij). Waarde = "Man"
Indien optFemale. Waarde = Waar Dan sht. Bereik ("g" & laatste rij). Waarde = "Vrouwelijk"
'Geef een berichtvenster weer als de gebruiker het keuzerondje Ja selecteertIndien optJa. Waarde = Waar Dan
MsgBox "Selecteer hieronder de betalingsgegevens"
Anders:
Sub afsluitenStop als
Einde sub
Maak je geen zorgen als je niet zeker weet wat delen of een van de code betekent. We zullen het in de volgende sectie grondig uitleggen.
Geautomatiseerde formuliercode uitgelegd
De tekstvakken zullen een mix van tekst en numerieke waarden bevatten, dus het is essentieel om de invoer van de gebruiker te beperken. De Applicatie nummer, Student-ID, Leeftijd, Telefoon, Cursus id, en Cursusduur mag alleen cijfers bevatten, terwijl de rest tekst bevat.
een gebruiken ALS statement, activeert de code pop-ups met fouten als de gebruiker een teken of tekstwaarde invoert in een van de numerieke velden.
Aangezien de foutvalidaties aanwezig zijn, moet u de tekstvakken koppelen aan de bladcellen.
De laatste rij variabelen berekenen de laatst ingevulde rij en slaan de waarden daarin op voor dynamisch gebruik.
Ten slotte worden de waarden uit de tekstvakken in het gekoppelde Excel-blad geplakt.
Formulier- en afsluitknopcodes wissen
In de Doorzichtig knop, moet u de code schrijven om de bestaande waarden uit het gebruikersformulier te wissen. Dit kan op de volgende manier:
Met mij
.txtToepassingnr. Waarde = ""
.txtStudentID.Value = ""
..txtNaam. Waarde = ""
.txtAge. Waarde = ""
.txtAdres. Waarde = ""
.txtTelefoon. Waarde = ""
.txtStad. Waarde = ""
.txtLand. Waarde = ""
.txtDOB.Value = ""
.txtZip. Waarde = ""
.txtNationaliteit. Waarde = ""
.txtCursus. Waarde = ""
.txtCourseID.Value = ""
.txtenrollmentstart. Waarde = ""
.txtenrollmentend. Waarde = ""
.txtcursusduur. Waarde = ""
.txtAfd. Waarde = ""
.cmbBetalingsmodus. Waarde = ""
.cmbBetaling. Waarde = ""
.optVrouwelijk. Waarde = Onwaar
.optMan. Waarde = Onwaar
.optJa. Waarde = Onwaar
.optNee. Waarde = Onwaar
Eindigt met
In de Uitgang knop, voer de volgende code in om het gebruikersformulier te sluiten.
Privé Sub CommandButton5_Click()
Mij uitladen
Einde sub
Als laatste stap moet u een paar laatste stukjes code invoeren om de vervolgkeuzelijsten voor de keuzelijsten (binnen de betalingsframes) te maken.
Privé subgebruikerForm_Activate()
Met cmbBetaling
.Duidelijk
.Voeg item toe ""
.Item toevoegen "Ja"
.Item "Nee" toevoegen
Eindigt met
Met cmbBetalingsmodus
.Duidelijk
.Voeg item toe ""
.Voeg artikel "Cash" toe
.Item "Kaart" toevoegen
.Voeg item "Controleren" toe
Eindigt met
Einde sub
VBA-automatisering maakt het werk gemakkelijker
VBA is een veelzijdige taal die vele doelen dient. Gebruikersformulieren zijn slechts één aspect binnen VBA - er zijn veel andere toepassingen, zoals het consolideren van werkmappen en werkbladen, het samenvoegen van meerdere Excel-bladen en andere handige automatiseringstoepassingen.
Ongeacht het automatiseringsdoel, VBA kan de taak aan. Als je blijft leren en oefenen, is er geen aspect van je workflow dat je niet kunt verbeteren.
Het samenvoegen van gegevens uit meer dan één Excel-blad in dezelfde werkmap is een heel gedoe... totdat u VBA-macro's gebruikt.
Lees volgende
- Programmeren
- productiviteit
- Visual Basic-programmering
- Microsoft Excel
Gaurav Siyal heeft twee jaar schrijfervaring en schreef voor een reeks digitale marketingbedrijven en documenten over de levenscyclus van software.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren