fout in mijn redenering/code? formulier met dynamische afhankelijke inhoud combobox

Status
Niet open voor verdere reacties.

Hipae

Gebruiker
Lid geworden
8 dec 2017
Berichten
7
Beste leden,

ik ben leerkracht. We maken zelf onze cursussn die moeten voldoen aan bepaalde 'ontwikkelingdoelen'= OD.
Ik probeerde mbv VBA een databank op te starten waarin we gemakkelijk die OD ' s per cursusonderdeel kunnen invoeren. Daarvoor wil ik gebruik maken van dependent comboboxen

De getoonde 'OD' is afhankelijk van de geselecteerde 'taalhandeling'. Maar nog een verdere subcategorie 'OD onderdeel' zou ook afhankelijk moeten zijn van de geselecteerde 'OD' (die afhangt van 'taalhandeling')
Ik wil dus 2 dependent relaties maken....En hier loop ik vast.

mijn probleem is dit:
voor de dependent relatie tussen 'taalhandeling' en 'OD onderdeel' heb ik gebruik gemaakt van 'case value' in de code van de combobox. Dat werkt prima.
Wanneer ik dezelfde codetaal gebruik voor de dependent relatie tussen 'OD' en 'OD onderdeel' krijg ik foute relaties. Dat komt omdat, na selectie van de 'taalhandeling' de case value van het 'OD' verandert naar 0. Wanneer de 'OD onderdeel selectie' afhangt van die case value van OD dan geeft dat dus niet het resultaat dat ik wil.

Ik ben een VBA groentje. Ik heb me gebaseerd een paar onderwerpen in fora op deze website en op een paar zeer duidelijke videoinstructies op een website contextures.com maar ik heb de indruk dat de excel versie daar verouderd is. Ik heb nooit een echte cursus VBA gevolgd (maar vind het wel leuk om te doen!)

Ik heb mijn bestand bijgevoegd in bijlage. Bekijk bijlage OD overzicht Bstroom dependent combobox 2nd draft.xlsm Waarschijnlijk zitten er stukken codes in die veel simpeler kunnen maar voor mijn beginnersbrein nodig om stap voor stap te blijven snappen wat ik aan het doen ben.

Kan iemand suggesties geven om mijn probleem op te lossen?

alvast bedankt,

Hilde
 
Laatst bewerkt:
en hoe ga je de relaties opslaan dan? Als je met "case" werkt is het nauwelijks nog dynamisch en moet je uiteindelijk toch alles met de hand toevoegen.

Bouw tijdens het openenen pull-down menu 1 met "handeling" en vul de tweede pull-down aan de hand van de waarde in pull-down1.

Wat je dan wel nodig hebt is een sheet dat zo is opgebouwd:

A-A-A
A-A-B
A-A-C
A-B-A
A-B-B
A-C-A
B-A-A
B-A-B

etc. etc.

Het vullen van de boxen kan dan "simpel" aan de hand de kolom. Je huidige voorbeeld maakt gebruik van een specifieke nummering, wat an sich ook prima te gebruiken is, maar dan moet je die lijst bij elke keuze opnieuw verwerken.

Ik snap alleen de invloed van taalhandeling niet. is een keuze van een handeling van invloed op welke OD's geldig zijn?
 
Dag Wampier,

bedankt voor je reactie!
De taalhandeling wordt inderdaad eerst geselecteerd en is gekoppeld aan vaste OD's Die Od's op hun beurt aan vaste OD onderdelen.
Ik begrijp Op dit moment heb ik inderdaad gewerkt met ranges (simpele verklaring: tot zover heb ik VBA via online instructievideo's gesnapt).

Begrijp ik goed wat jij bedoelt:
die ranges die ik gebruik (en de case value daaraan gekoppeld) is niet dynamisch en zorgt voor veel te veel codetaal?
Dynamisch is een excel sheet opgebouwd zoals jij voorstelt, en zal mijn codetaal en mijn relatie tussen OD en Od onderdeel doen werken?
Kan je mij dan helpen met de code of mij een video aanbevelen waarin uitgelegd staat wat je bedoelt met 'het vullen van de boxen kan dan simpel aan de hand van de kolom'? (ik ben pas sinds vorige week begonnen met VBA zelfstudie, en nog veeel te leren)

Vriendelijke groeten,

Hilde
 
Deze vereenvoudigd:

Code:
Private Sub UserForm_Initialize()
    With Sheets("Opzoeklijsten").UsedRange.Offset(1)
       cbotaalhandeling.List = .Columns(1).SpecialCells(2).Value
       cboOD.List = .Columns(2).SpecialCells(2).Value
       cboODonderdeel.List = .Columns(3).SpecialCells(2).Value
       cbovaardigheid.List = .Columns(4).SpecialCells(2).Value
       cboverwerkingsniveau.List = .Columns(5).SpecialCells(2).Value
       cboproject.List = .Columns(6).SpecialCells(2).Value
       cbobron.List = .Columns(7).SpecialCells(2).Value
    End With
End Sub

Code:
Private Sub cbotaalhandeling_Change()
   if cbotaalhandeling.ListIndex > -1 Then cboOD.List = Range("taalhandeling" & cbotaalhandeling.ListIndex + 1).Value
End Sub


Het is handig om in de code van OD de code van de erbijhorende taalhandeling op te nemen.
bij keuze 1 , OD 1.1, 1.2 en 1.3
bij keuze 2, OD 2.1, 2.2, 2.3
dan kunnen we de 2e combobox simpel filteren.
OD 1 t/m OD 25 legt qua code geen verband met de taalhandeling.


Bij OD -onderdeel heb je die relatie via de code weer wel gelegd.

Pas svp de 'OD code' aan aan de bijbehorende 'taalhandeling'.
Pas vervolgends de code van 'OD-onderdeel' aan aan de codes van de 'OD-code'.


NB.
- gebruik nooit enige beveiliging tijdens de ontwikkeling van een projekt !
- ingebouwde mogelijkheden (afsluiten van het userform met het afsluitkruisje) uitschakelen vind ik overbodig en niet slim (en in deze fase alleen maar onhandig)
 
Laatst bewerkt:
Mijn bescheiden bijdrage.
 

Bijlagen

  • OD overzicht Bstroom dependent combobox 2nd draft.xlsb
    48,5 KB · Weergaven: 36
@Dotchie

Het gaat toch wel goed met je ? :D
 
Wat????

@gast0660 Hoe geweldig is dit! Je hebt het gewoon helemaal afgemaakt?!! Het werkt precies zoals ik het wilde hebben. Ongelofelijk dankjewel!!
Ik zie ook dat je mijn opzoeklijsten hebt opgesmukt en ranges hebt bijgemaakt. (en de overbodige rommel uit mijn code afgevoerd én vereenvoudigd :))
You rock!
En nu snap ik eindelijk ook sommige delen van codes die ik via instructiewebsites vond maar waarvan ik geen idee had waar en hoe ik ze moest toepassen.

Ik denk dat ik kan stellen dat mijn probleem opgelost is!
(ik bestel speciaal voor jou de zon! Mijn collega's en ik zijn je heel erg dankbaar!)

@snb ook nog bedankt voor jouw tips, fijne website is dit!

Vriendelijke groeten,

Hilde
 
Hoi Hilde dank u voor de terugkoppeling.:thumb:
Ik heb nu eenmaal een zwak voor een newbie.
Kleine hint, in de handtekening van snb VBA voor smarties valt veel kennis te rapen.
Suc6
 
Bedankt voor de geweldige hulp en ook nog deze tips @gast0660!
de messageboxen had ik daarstraks ook nog niet opgemerkt. COOL!

ik zag (nu pas) ook dat je voorwaardelijke opmaak gebruikt hebt in mijn databank. Intussen ben ik aan het uitzoeken wat ik daar allemaal mee kan en hoe ik dat in het vervolg zelf kan toepassen.

Wow excel, ik kende er tot vorige week nog maar een fractie van, er gaat een nieuwe wereld open!
 
Krijg ik nu een kus van de juf en mag ik een bank vooruit?:D:D
 
Een kus van tien juffen (en ook wel meesters) en een bank vooruit
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan