Userform

In de Visual Basic for Applications Editor kun je alles regelen met betrekking tot macro’s. De modules zijn al uitgelegd in een handig artikel. Nu is de beurt om een userform te maken en te begrijpen.

In dit voorbeeld maken we een simpel contactpersonen formulier met naam en plaats. Dit is gekoppeld per regel aan een ID nummer.

 

Video

 

 

Ontwikkelaars tabblad activeren

Om gebruik te maken van de VBA Editor is het makkelijk om te weten hoe je deze kan openen. Deze kan je vinden via het lint en dan het Ontwikkelaars tabblad. Je kan de Editor ook openen met de sneltoets ALT + F11.
Zie je het Ontwikkelaars tabblad nog niet op het lint? Dan moet je deze activeren.

Vanaf Excel 2010
Dit doe je via Bestand > Opties > Lint en dan Ontwikkelaars aanvinken
Excel 2007
Via de Office knop > Opties voor Excel > Tabblad Ontwikkelaars op het lint weergeven

klik hier voor een uitgebreidere beschrijving.

 

 

Userform maken

Open de Visual Basic Editor via het ontwikkelaarstabblad (of gebruikt Alt+F11). Maak hier een nieuw Userform aan. Dit doe je door in de taakbalk te kiezen voor Invoegen en vervolgens voor Userform.
Als het goed is heb je dan dit scherm voor je. Mocht je werkset of eigenschappen niet zien, dan kan je deze aanzetten onder Beeld in de taakbalk.
Scherm voor het toevoegen van een userform.

Voeg hier 3 labels (bijschriften), 3 tekstvakken en 3 opdrachtknoppen aan toe, geef deze de volgende eigenschappen:

Type(Name)Caption
UserformContactenBeheer contacten
LabelLabel1ID:
LabelLabel2Naam:
LabelLabel3Plaats:
TekstvakTextBox1
TekstvakTextBox2
TekstvakTextBox3
OpdrachtknopCommandButton1Wijzig / Voeg toe
OpdrachtknopCommandButton2Maak leeg
OpdrachtknopCommandButton3Sluit

Je kan deze opties toevoegen door ze te kiezen in de werkset en vervolgens aan te maken.

Dan heb je uiteindelijk als het goed is dit formulier:

Nu wil je vanuit Excel dit userform kunnen openen. Daar gaan we nu een knop voor maken. Sluit de VB Editor voor even (hier komen we zo weer terug voor de codes) en maak in Excel een ActiveX Opdrachtknop. Klik dubbel op deze knop en zorg dat deze code daar komt te staan:
Private Sub CommandButton1_Click()
Contacten.Show
End Sub

Als je vervolgens in Excel op de knop drukt, zal je zien dat het zojuist aangemaakte userform wordt geopend. Alleen werkt er nog niks van, dit gaan we nu maken.
Open daarom opnieuw de VB Editor.

Klik met je rechtermuisknop op contacten en selecteer hier Programmacode weergeven. Je hebt hier 2 dropdown menu’s, selecteer bij de linkse Userform en bij de rechtse Initialize, plak hier vervolgens de volgende code:
Private Sub UserForm_Initialize()
TextBox1.SetFocus
End Sub

Selecteer nu in het linker dropdown menu TextBox1 en plak daar deze code:
Private Sub TextBox1_Change()
GetData
End Sub

Kies in het linker dropdown menu voor CommandButton1 en plak daar deze code:
Private Sub CommandButton1_Click()
EditAdd
End Sub

Kies in het linker dropdown menu voor CommandButton2 en plak daar deze code:
Private Sub CommandButton2_Click()
ClearForm
End Sub

Kies in het linker dropdown menu voor CommandButton3 en plak daar deze code:
Private Sub CommandButton3_Click()
Unload Me
End Sub

Nu moet je alleen nog zorgen dat er een module is die het userform helemaal aanstuurt.
Maak een nieuwe module aan, via Invoegen en dan module en plak daar deze code:

Dim id As Integer, i As Integer, j As Integer, flag As Boolean
Sub GetData()
If IsNumeric(Contacten.TextBox1.Value) Then
flag = False
i = 0
id = Contacten.TextBox1.Value
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 3
Contacten.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 2 To 3
Contacten.Controls("TextBox" & j).Value = ""
Next j
End If
Else
ClearForm
End If
End Sub
Sub ClearForm()
For j = 1 To 3
Contacten.Controls("TextBox" & j).Value = ""
Next j
End Sub
Sub EditAdd()
Dim emptyRow As Long
If Contacten.TextBox1.Value <> "" Then
flag = False
i = 0
id = Contacten.TextBox1.Value
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
Do While Cells(i + 1, 1).Value <> ""
If Cells(i + 1, 1).Value = id Then
flag = True
For j = 2 To 3
Cells(i + 1, j).Value = Contacten.Controls("TextBox" & j).Value
Next j
End If
i = i + 1
Loop
If flag = False Then
For j = 1 To 3
Cells(emptyRow, j).Value = Contacten.Controls("TextBox" & j).Value
Next j
End If
End If
End Sub

Nu is het formulier klaar en kun je de tabel maken met de kopjes en (eventueel) wat voorbeeld data.
Zet als kop in A1 ID, A2 Naam en A3 Plaats.

Vervolgens kun je met de knop data toevoegen of opzoeken. Veel plezier!

 

 

 

 

 

Op de hoogte blijven?

Als deze uitleg nuttig was, dan kan je je inschrijven voor onze nieuwsbrief.
Een keer per maand ontvang je de nieuwste berichten in je mailbox.
Klik hier om je in te schrijven.
Je kan ons ook volgen op Facebook en Twitter.

Dit vind je misschien ook leuk...

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Spring naar toolbar