Automatisch vullen in Combobox

Status
Niet open voor verdere reacties.

Rap261

Gebruiker
Lid geworden
2 sep 2008
Berichten
273
Goedemiddag,

Ik wil graag een combobox automatisch vullen a.d.v. eerder gemaakte keuze in een vorige combobox.

V.B.
Wanneer je in combobox1 merk A kiest, moeten in combobox2 de kleuren rood en blauw als optie komen.
Wanneer je in combobox1 merk B kiest, moeten in combobox2 de kleuren groen en geel als optie komen.

Ik ben aan het stoeien met onderstaande code
Kan iemand mij helpen?

Code:
Private Sub ComboBox1_Change()
FollowLink (ComboBox1.ListIndex)
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.Listfillrange.Sheet("data").Range(A1:A2")
    'Case 1
    'ComboBox2.Listrange = Sheets("data").Range("B1:B2")
    End Select
End Sub
 
Goedenavond Wim,

Bedankt voor je reactie maar dit is niet helemaal wat ik zoek.

Ik zal een ander voorbeeld geven:
Ik neem een voorbeeld met rekeningnummers. Bank heeft 9 cijferig, postbank 5. Totaal zijn er 20 rekeningnummers, 10 van elk.

Situatie:
Ik heb twee ComboBoxen. Wanneer ik in de box 1 kies voor bank wil ik in box 2 alleen de 9 cijferige nummers zien. Wanneer ik in box 1 kies voor postbank, wil ik in box 2 alleen de 5 cijferige zien.

Ik hoop dat dit een duidelijke uitleg geeft van wat ik wil?

Ik hoor het graag. Ondertussen ben ik verder aan het puzzelen.
 
Laatst bewerkt:
Rap261,

Volgens mij is het me gelukt.
Zet het rode gedeelte er nog even bij, dan maakt hij ComboBox2 leeg als je veranderd.
Code:
Private Sub ComboBox1_Change()
    FollowLink (ComboBox1.ListIndex)
    [COLOR="Red"]ComboBox2.Value = ""[/COLOR]
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = "Bank"
    Case 1
    ComboBox2.ListFillRange = "PostBank"
    End Select
End Sub
 

Bijlagen

Laatst bewerkt:
Goedemorgen Wim,

Bedankt voor je oplossing. Dit is inderdaad wat ik zoek! Ik zat in de buurt met mijn script zie ik, en dat geeft me ook weer een goed gevoel.

Nog wel een vraag: wanneer de constanten op een ander tabblad staan, hoe verwijs ik hier dan naar?

Kom ik weer in de buurt met onderstaand script?
Ik krijg nog wel een fout melding waarschijnlijk omdat ik de Engelse versie van Excel gebruik.
Hij blijft hangen op het woord "Werkblad"

Code:
Private Sub ComboBox1_Change()
    FollowLink (ComboBox1.ListIndex)
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = Werkblad("blad3").Range("A2:A4")            **Range veranderen in alleen "Range("A2") heeft ook niet geholpen**
    Case 1
    ComboBox2.ListFillRange = Werkblad("blad3").Range("B2:B4")
    End Select
End Sub
 
Laatst bewerkt:
Wim,

Wil je mij eens uitleggen hoe je de verwijzing voor elkaar krijgt.
In jou script zie ik niet dat je verwijst naar "blad2" of een Range aangeeft maar toch vult de box zich automatisch.

Ik heb diverse varianten geprobeerd, Sheet, Sheets, Blad, Werkblad, maar geen van alle pakt ie.

Ik ben nu met onderstaande code bezig maar krijg nog steeds geen resultaat.
(Zoals je begrijpt zijn de codes fictief dus wanneer ik deze wil gebruiken in m'n daadwerkelijke bestand moet ik ze kunnen aanpassen. Vandaar nog even mij vragen.)

Code:
Private Sub ComboBox1_Change()
    FollowLink (ComboBox1.ListIndex)
End Sub
Private Sub FollowLink(ByVal intIndex As Integer)
    Select Case intIndex
    Case 0
    ComboBox2.ListFillRange = Sheets("data").Range("B1")
    ComboBox2.ListFillRange = Sheets("data").Range("B2")
    Case 1
    ComboBox2.ListFillRange = Sheets("data").Range("C1")
    ComboBox2.ListFillRange = Sheets("data").Range("C2")
    End Select
End Sub
Private Sub ComboBox2_Change()
    
End Sub


Graag nog even je hulp Wim,
Alvast bedankt
 
Rap261,

Ik dacht al dat je met deze vraag zou komen.

Hier de uitleg;
Klik boven de A in het naamvak
en zie de naam die ik aan het bereik
heb gegeven.
Dit doe je door het bereik te selecteren
en dan in het naamvak de cursor te zetten.

Schrijf dan een naam voor dit bereik.
 
Dat kan ook met slechts 1 regel:

Code:
Private Sub ComboBox1_Change()
  ComboBox2.ListFillRange = Choose(ComboBox1.ListIndex + 1, "Bank", "Postbank")
End Sub

En als je niet met benoemde gebieden wil werken en de bankrekeningen in kolom K zet en de postbankrekeningen in kolom L:
Code:
Private Sub ComboBox1_Change()
  ComboBox2.ListFillRange = Blad1.Columns(11 + ComboBox1.ListIndex).SpecialCells(xlCellTypeConstants).Address
End Sub
 
Laatst bewerkt:
Ok, dus wanneer je een aantal gegevens in z'n totaal selecteerd en het een naam geeft in het naamvak, dan wordt dat het bereik (incl plaats zoals blad1, blad2 enz). Dit is weliswaar "onzichtbaar".

Ik heb het getest en weet nu hoe ik dit in de toekomst moet doen. Bedankt voor je hulp Wim, ik kan weer verder.

Snb ook bedankt. De korte versie van het script werkt ook perfect.
 
Rap261,

Graag gedaan en met de kortere code van snb scheelt het een hoop schrijf werk.
 
Rap261,

Ik was vergeten te melden dat als je in het naamvak, een naam heb gegeven aan het bereik, moet je wel een enter geven anders staat de naam er niet.
 
logisch, maar bedankt voor je opmerking.
En inderdaad de code van Snb scheelt een hoop type werk.

Heren bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan