combobox vullen met excelgegevens

Status
Niet open voor verdere reacties.

markmeijrink

Gebruiker
Lid geworden
19 sep 2009
Berichten
13
Beste,

recentelijk ben ik begonnen aan het programmeren van een excel-applicatie. Ik stuit hierbij op het volgende probleem:

ik heb drie comboboxen. De eerste combobox heb ik laten vullen door de volgende code:

Private Sub ComboBox2_Change()
Dim rij As Range
Set rij = worksheets(3).Range("A1:A34")
For Each Cell In rij
If Cell.Value <> "" Then
ComboBox2.AddItem Cell.Value
End If
Next
End Sub

De tweede combobox moet alleen bepaalde waardes laten zien. Om dit te verduidelijken, de waardes in de comboboxen betreffen planten namen. Net als bij mensen bestaan deze wetenschappelijke namen uit een voornaam (genus) en achternaam (species). Bij planten zijn er alleen bepaalde combinaties mogelijk. B.v. in combobox 1 heb ik een genusnaam "Dactylorhiza" ik wil dan dat combobox 2 alleen speciesnamen laat zien die horen bij "Dactylorhiza". Op zich niet moeilijk, daarvoor heb ik:

Private Sub ComboBox3_Change()
Dim rij As Range
Set rij = worksheets(4).Range("A1:A30")
For Each Cell In rij
If ComboBox2.Value = "Dactylorhiza" Then
ComboBox3.AddItem Cell.Value
End If
Next
End Sub

gebruikt. Alleen nu komt het: In combobox 1 heb ik 34 genusnamen die allemaal hun eigen speciesnamen bezitten. Hoe kan ik combobox 2 als dusdanig programmeren?

Alvast bedankt,

Mark
 
Je kunt de combobox ook vullen met een benoemde range ipv. per item
In het blad4 zet je dan onder elke Genus naam een rij met de bijpassende Species waarden.
Deze geef je per rij de naam (invoegen> naam> definiëren) van de bijbehorende genus waarde (de naam dient wel aan de voorwaarden van een range naam te voldoen o.a. geen spaties)
In de combobox_change van de Genus (box1 dus) zet je de uitgelezen waarde als rowsource (of listfillrange bij een formulier combobox) bij de species combobox (dus box 2).
Deze zal nu gevuld worden met de juiste waarden uit de benoemde range.

(Met een derde combobox kun je hetzelfde handelen, maar op dit moment is mij de functie daarvan niet duidelijk)

Mvg Leo
 
Laatst bewerkt:
de optie die Leo geeft is mij niet helemaal duidelijk. Ik werk namelijk in Excel 2007 waar alle menu's en dergelijken anders zijn.

De optie van Wim werkt naar mijn idee wel. Maar er komt bank bovenaan de lijst te staan. Dit is niet helemaal precies wat ik bedoelde. Daarnaast kun je bank ook als waarde selecteren. Aangezien ik een invoermodule aan het maken ben als userform zou dat een fout opleveren wanneer je dus in combobox1 een genusnaam selecteert en vervolgend in combobox2 er weer een zou kunnen selecteren.

M.v.gr. Mark
 
markmeijrink,

Aangezien ik een invoermodule aan het maken ben als userform
Sorry maar ik kon dat niet opmaken uit je vraag.
Vandaar dat een voorbeeld bestandje met uitleg duidelijker overkomt dan een verhaal.
 
markmeijrink,


Sorry maar ik kon dat niet opmaken uit je vraag.
Vandaar dat een voorbeeld bestandje met uitleg duidelijker overkomt dan een verhaal.

Excuus dat is mij fout.

@Leo, hoe voeg ik de programma code van jou methode toe in een userform. De code is daarvoor anders vermoed ik Of zie ik iets over het hoofd?

M.v.gr. Mark
 
Klopt, dan is het rowsource.
(over het gebuik van een usreform heen gelezen)
 
zie bijlage

Klik op de knop.
Merk en type worden in de actieve cel gezet.

NB bij de eigenschappen staat Style op 2 (dropdownlist). Dat maakt de combobox tot een keuzelijst zonder tekst-invoer. Mogelijk wil jij dat ook.

Zie verder laatste post Hoornvan
 

Bijlagen

Laatst bewerkt:
Bedankt Leo en Martin,

het werkt prima!

p.s. toch nog één vraagje. Enig idee hoe je bij de eigenschappen van een combobox instelt dat je met je muis kunt scrollen door de dropdownlist?

M.v.gr. Mark
 
Wanneer je bedoelt, met scrollen het muiswiel. Dat is helaas niet in te stellen bij eigenschappen.
maar wie weet, heeft iemand daar een workaround voor gevonden. Ik ken deze in ieder geval niet.
Je kan natuurlijk wel altijd de scrollbalk naar beneden "trekken" met de muis.
Ook is de lijst lengte aan te passen van de lijst (listrows).
Wanneer er niit te veel gegevens zijn, kunnen deze allemaal getoond worden.

En bij een lange lijst is typen van de gegevens de meest voor hand liggende manier om snel door de lijst heen te gaan.
met matchentry.1-fmmatchentrycomplete wordt gekeken naar alle ingtypte tekens en scroll je snel al typende naar het juiste gegeven.

mvg leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan