Drop-downlijst (2)

De code voor de knop “Toevoegen’, de drop-downlijst, en de knop “Sluiten” heb ik reeds toegevoegd.
Laat ik deze eens overlopen.
Het onderste deel (3) is de code die moet worden uitgevoerd wanneer je de knop “Sluiten” (cmdSluiten) hebt geklikt. Dit lijkt me wel duidelijk
In het eerste deel vinden we de code terug die moet worden uitgevoerd wanneer de knop “Toevoegen” (cmdToevoegen) wordt geklikt (1).
Met de eerste lijn code ActiveWorkbook.Sheets(“Afdeling”).Activate, activeren we het werkblad “Afdeling”.
Met de tweede lijn code Range(“A1”).Select, selecteren we cel A1.
Met de volgende rijen code gaan we hem een lege cel laten zoeken, heeft hij deze gevonden, dan schrijft hij de gegevens weg in de lege cellen.

Do
If IsEmpty(ActiveCell) = False Then
ActiveCell.Offset(1, 0).Select
End If
Loop Until IsEmpty(ActiveCell) = True
ActiveCell.Value = txtNaam.Value
ActiveCell.Offset(0, 1) = cboAfdeling.Value
Range(“A1”).Select
Dus wat staat hier:

Als de actieve cel niet leeg is (If IsEmpty(ActiveCell) = False Then)
Dan wordt de volgende rij geselecteerd (ActiveCell.Offset(1, 0).Select)
Dit herhaalt hij tot hij een lege cel heeft gevonden (Loop Until IsEmpty(ActiveCell) = True)
Heeft hij een lege cel gevonden, dan plaatst hij de gegevens uit het vak txtNaam in de actieve cel:
ActiveCell.Value = txtNaam.Value
Vervolgens springt hij een cel naar rechts en plaatst daar de gegevens in uit het drop-downmenu:
ActiveCell.Offset(0, 1) = cboAfdeling.Value

Dan keert hij terug naar cel A1 in het werkblad. (Dit hoeft er niet in te staan, want hiermee springt hij gewoon terug naar cel A1).
Range(“A1”).Select

En daarna maakt hij terug alle vakken leeg (Hoeft ook niet, maar hiermee worden alle vakken netjes leeg gemaakt wanneer de gegevens zijn weggeschreven.
Me.txtNaam.Value = “”
Me.cboAfdeling.Value =””

En als laatste maakt hij een eind aan de subroutine vaar de knop cmdToevoegen
End Sub

les13_image001

En dan hebben we nog de code voor de drop-downlijst (2).

Zoals je zal hebben opgemerkt in de vorige VB-code (1) voor de knop cmdToevoegen, is er geen waarde toegekend aan het vak cboAfdeling. Het enige dat we hier hebben gedaan is voor deze waarde een cel naar rechts hebben geselecteerd ActiveCell.Offset(0, 1) = cboAfdeling.Value in ons werkblad.

Hiervoor hebben we de code die het formulier initialiseert Private Sub UserForm_Initialize()

De eerste lijn herhaalt de waarde van het vak txtNaam, of beter gezegd, deze lijn doet niks, want er is niks ingevuld als waarde.

Maar met de lijnen daaronder bepalen we de inhoud van de drop-downlijst cboAfdeling:

With cboAfdeling
.AddItem “Administratie”
.AddItem “Ontwerp”
.AddItem “Reclame”
.AddItem “Verkoop”
End With
en de waarde van het veld cboAfdeling.
cboAfdeling.Value =””

les13_image002

Datum

En als laatste voorbeeld dat ik ga toevoegen aan het formulier is een datum door middel van het besturingselement DTPicker (1).
Dit besturingselement is standaard niet voorzien in de werkset, maar wanneer je deze rechtsklikt verschijnt er een lijst (2) met nog tientallen andere besturingselementen.
Selecteer “Microsoft Date en Time Picker control” (3) in het lijstje, en klik OK.
In de versies 2007 en ervoor noemt dit besturingselement “Calender Control”.
De lay-out zal er wel wat anders uitzien, maar de code die we moeten toevoegen aan VBA blijft gelijk.

les13_image003

Eénmaal de kalender is toegevoegd aan het formulier, klik je de knop “Beeld” en kies je “Programmacode”.
In de VBA-code moeten we nog twee lijnen code toevoegen.
De subroutine voor de DTPicker is reeds toegevoegd.
Hier typ je de code Me.DTPicker1.Value = Date (1)
Dan moeten we nog een extra regel toevoegen aan de subroutine van de knop cmdToevoegen.
Deze dient om de geselecteerde cel een cel naar rechts te verspringen “ActiveCell.Offset(0, 2) = DTPicker1.Value” (2), hij moet namelijk deze waarde in de kolom naast de kolom van de afdeling plaatsen.
Test de code.

les13_image004

Formidabel U hebt Les 13 voltooid START VOLGENDE LES