Cases in een combobox

Status
Niet open voor verdere reacties.

Rap261

Gebruiker
Lid geworden
2 sep 2008
Berichten
273
Goedemiddag,

Ik zit met het volgende:

Ik heb een bestand met meerdere ComboBoxen.
Wanneer men ik Box 1 een keus maakt vullen de overige boxen zichzelf met info wat van toepassing is op de keus in Box 1.
Het probleem is echter de "Case 0" en "Case 1" situatie. Welke keus men ook maakt er is altijd een Case 0 en een Case 1 situatie waardoor de comboboxen uiteindelijk foutief gevuld worden.

Bijgaand een makkelijk voorbeeld van wat ik bedoel.
Graag iemands uitleg over wat ik moet toevoegen in het bestaande script om dit probleem op te lossen.

Alvast bedankt
 

Bijlagen

Tot zover is dit wel wat ik bedoel Wim, en wederom zat ik in de buurt maar bij mij werkte hij nog niet helemaal.

Het verschil tussen jou en mijn script (eigenlijk ook jou script ;) ) is dat jij bij zowel case 0 als 1 de regel ComboBox2.ListFillRange = " " hebt staan.

Maakt dit het verschil waarom de een wel werkt en de ander niet?
 
Rap261,

Het verschil tussen jou en mijn script (eigenlijk ook jou script ) is dat jij bij zowel case 0 als 1 de regel ComboBox2.ListFillRange = " " hebt staan.
Ik begrijp niet precies wat je bedoeld maar hij werkt nu toch zoasl je wil?
Ik heb alleen een paar regels verplaatst en had het geluk dat hij deed wat je vroeg.
 
Wat ik bedoel is dit:

Mijn script
Code:
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox3.ListFillRange = "gewicht"
    ComboBox4.ListFillRange = "prijs1"
    Case 1
    ComboBox3.ListFillRange = "liter"
    ComboBox4.ListFillRange = "prijs2"
    End Select
End Sub

jouw script
Code:
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = "eten"
    ComboBox3.ListFillRange = "gewicht"
    ComboBox4.ListFillRange = "prijs1"
    Case 1
    ComboBox2.ListFillRange = "drinken"
    ComboBox3.ListFillRange = "liter"
    ComboBox4.ListFillRange = "prijs2"
    End Select
End Sub

Het verschil is dat in jouw script de regel ComboBox2.ListFillRange = "eten" en ComboBox2.ListFillRange = "drinken"
extra staan vermeld.


Mijn vraag is of dit het verschil maakt waarom die van mij eerst niet werkte.
(dan weet ik dat in het vervolg)
 
Rap261,

Ik heb nog even goed na zitten denken.
Nu snap ik wat je bedoelt, uit het onderste deel van je code heb ik de regels ComboBox2[/B].ListFillRange en ComboBox3.ListFillRange verplaatst naar het middelste stukje code.
Toen bleek dat het goed werkte heb ik het onderste gedeelte verwijderd.
 
Rap261,

Code:
Private Sub ComboBox1_Change()
    FollowLink (ComboBox1.ListIndex)
    ComboBox2.Value = ""
    ComboBox3.Value = ""
    ComboBox4.Value = ""
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = "eten"
    ComboBox3.ListFillRange = "gewicht"
    ComboBox4.ListFillRange = "prijs1"
    Case 1
    ComboBox2.ListFillRange = "drinken"
    ComboBox3.ListFillRange = "liter"
    ComboBox4.ListFillRange = "prijs2"
    End Select
End Sub
Dit is de gehele code zoals ik die heb en zie niets dubbel, heb wel al een biertje op.
 
Zonder alcohol:

Code:
Private Sub ComboBox1_Change()
  For j = 2 To 4
    Sheet1.OLEObjects("Combobox" & j).ListFillRange = Sheet1.Columns(2 * (j - 1) + ComboBox1.ListIndex).SpecialCells(xlCellTypeConstants).Address
  Next
End Sub

De rest van de code kan weg; de benoemde bereiken zijn ook overbodig.
 
Rap261,

Nog even over het bereik.
Je hoeef niet alle namen te benoemen.
Zie het plaatje, dit is voldoende.
Selecteer voor ComboBox1 Eten en Drinken en geef het de naam Soort en verbind ComboBox1 er aan.
 

Bijlagen

  • Book1.xls
    Book1.xls
    47 KB · Weergaven: 29
  • Bereik.jpg
    Bereik.jpg
    85,1 KB · Weergaven: 44
Laatst bewerkt:
snb,

Zonder alcohol:

Code:
Private Sub ComboBox1_Change()
  For j = 2 To 4
    Sheet1.OLEObjects("Combobox" & j).ListFillRange = Sheet1.Columns(2 * (j - 1) + ComboBox1.ListIndex).SpecialCells(xlCellTypeConstants).Address
  Next
End SubDe rest van de code kan weg; de benoemde bereiken zijn ook overbodig.
Kan het zijn nu ik de lijst Namen beheren heb in gekort niet alles het doet (ComboBoxen wworden in gevuld?)
 

Bijlagen

  • Bereik.jpg
    Bereik.jpg
    85,1 KB · Weergaven: 42
Laatst bewerkt:
Rap261,

Ik heb nog een leuke verandering gedaan en denk dat je dit wel wil.
Kijk in de file voor de uitleg.
Box1 heb ik verbonden met Cel "I15"
 

Bijlagen

Laatst bewerkt:
@Wim

Kan het zijn nu ik de lijst Namen beheren heb in gekort niet alles het doet (ComboBoxen wworden in gevuld?)

Omdat mijn oplossing niets doet met 'Namen', maakt het niet uit.

Ik ben uitgegaan van het eerste, door de vraagsteller geplaatste bestand
 
snb,
Omdat mijn oplossing niets doet met 'Namen', maakt het niet uit.
Ik vroeg dit omdat ik de macro er in zette en hij niet alle Boxxen goed vulde of soms leeg liet.
 
Dat komt omdat er in kolom B in 2 gedeeltes gegevens staan: de vraag staat daar ook (in rood) geformuleerd. Verwijder de vraagtekst en het loopt goed.
 
Wim,

Ik heb je aanpassing gezien, echter had ik deze zelf ook al toegevoegd in mijn originele bestand. Zelf heb ik het op de volgende manier gedaan:

Code:
Private Sub ComboBox1_Change()
    FollowLink (ComboBox1.ListIndex)
    ComboBox2.Value = ""
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = "eten"
    ComboBox3.ListFillRange = "gewicht"
    ComboBox4.ListFillRange = "prijs1"
    [COLOR="red"]Range ("K14").Value = "Soort eten"
    Range ("M14").Value = "Gewicht"[/COLOR]
    Case 1
    ComboBox2.ListFillRange = "drinken"
    ComboBox3.ListFillRange = "liter"
    ComboBox4.ListFillRange = "prijs2"
    [COLOR="Red"]Range ("K14").Value = "Soort drinken"
    Range ("M14").Value = "Inhoud"[/COLOR]
    End Select
End Sub

Toch prettig dat je mee denkt!

Het klopt dat je niet alle gegevens een eigen naam hoeft te geven, dit heb ik gedaan omdat ik nog iets anders wilde testen.

Ik zit namelijk nog wel met een ding. Elke box heeft bepaalde Cases. Wanneer een Case wordt gevolgt (d.m.v. een keuze), wordt de volgende box automatisch gevuld. Tot zover werkt alles goed.
Echter, in mijn bestand heeft box 1, 2 opties "Cash en Stukken". Hier staan twee cases tegenover. Kiest men voor Cash dan krijgt men in box 2 opnieuw twee opties en dus ook twee cases.
Kiest met voor Stukken dan krijgt men in box 2, 9 opties en dus 9 cases. Het probleem zit hem dan in box 3 die automatisch gevuld wordt n.a.v. de keus in box 2. Case 0 en 1 van de optie cash worden toch zichtbaar ondanks dat men kiest voor de optie Stukken.

Ik vind het een vrij lastig probleem om te omschrijven en hoop dat het een beetje duidelijk is. Voor het gemak heb ik tekening bijgevoegd in het voorbeeld bestand met de route van de comboboxen.

Graag jullie hulp in deze
Alvast bedankt
 

Bijlagen

Je kan maar uit 2 opties kiezen.
Ik heb er een Case3 bijgemaakt maar die ziet hij niet.
Ik ga gewoon door met puzzelen.
 
Ik weet het Wim
Ik heb zelf geprobeerd om de cases letters te geven i.p.v. cijfers. Heeft ook niet geholpen.

In iedergeval bedankt voor het mee denken. als ik een oplossing heb, laat ik het je weten..
 
Rap261,

Hij doet het.
Ik zit alleen met het opschrift, misschien weet je daar wat op.
 

Bijlagen

Rap261,

Het opschrift heb ik ook voorelkaar zet de rode regel er tussen.
Code:
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = "Cash"
    Range("J15").Value = "Cash"
   [COLOR="Red"] If Range("J15") = "Cash" Then Range("L15").Value = ""[/COLOR]
    Case 1
    ComboBox2.ListFillRange = "Stukken"
    Range("J15").Value = "Stukken"
    ComboBox3.ListFillRange = "Afdeling"
    Range("L15").Value = "Afdeling"
    End Select
End Sub
 
Ik zie het.

In principe kunnen we dan beter de regel If Range("J15") = "Stukken" Then
ComboBox3.ListFillRange = "Afdeling" gebruiken.

Immers, wanneer men de eerste keus in Box 1 maakt worden de onderwerpen (zoals Afdeling) direct neer gezet.

Wim, tot zover bedankt. Ik ga dit verwerken in mijn Originele bestand en laat je weten of dit is wat ik zoek
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan