Dag allemaal,
Op http://www.gratiscursus.be/Excel_Tips/Excel_Tip_200.html staat er manier beschreven om een "Filterende Drop-Down Lijst" te maken.
Ergens in een kolom (bvb. D vanaf rij 2 t.e.m. rij 250) worden alfabetisch een aantal cellen aansluitend gevuld met gegevens.
In een aantal andere kolommen staan dan formules zoals:
in kolom C
=ALS(ISGETAL(VIND.ALLES($B$2;D2));MAX($C$1:C1)+1;0)
en kolom F
=ALS.FOUT(VERT.ZOEKEN(RIJEN($F$2:F2);$C$2:$D$250;2;0);"")
De lijst in kolom F wordt dan aangepast aan de invoer in cel B2.
Met
=VERSCHUIVING($F$2;;;AANTAL.ALS($F$2:$F$500;"?*"))
wordt een nieuwe Naam gemaakt die dient als bron van een Gegevensvalidatie van het type Lijst in cel B2.
Allemaal heel mooi en het werkt ook goed, maar je hebt al gauw twee of meer extra kolommen nodig bovenop de kolom D met de basislijst.
Mijn vraag is nu: Kan dat ook met VBA ?
Iets als...
-Ergens op een apart werkblad een bereik (een aansluitend deel van een kolom) met de basisgegevens.
-Dat bereik in VBA omzetten naar een Array.
-Met deze Array de functies uitvoeren
-Om tenslotte een gefilterde Array te bekomen die kan dienen als bron van een Gegevensvalidatie van het type Lijst in de Target-cel.
Grote verschil met wat ik vind op bovenstaande site (en ook op soortgelijke voorbeelden op dit forum) en met wat ik eigenlijk wil maken is dat in deze voorbeelden de zoekwaarde wordt ingetikt in één cel (B2). Ik wil in één kolom 75 cellen onder elkaar voorzien van dezelfde gegevensvalidatie. De ActiveCell.Value is dan de zoekwaarde.
Ik heb een workaround zoals in de voorbeelden, maar dan komen er nog twee kolommen bij. Ik vermoed dat het met VBA eenvoudiger moet kunnen.
Weet iemand hoe ?
Op http://www.gratiscursus.be/Excel_Tips/Excel_Tip_200.html staat er manier beschreven om een "Filterende Drop-Down Lijst" te maken.
Ergens in een kolom (bvb. D vanaf rij 2 t.e.m. rij 250) worden alfabetisch een aantal cellen aansluitend gevuld met gegevens.
In een aantal andere kolommen staan dan formules zoals:
in kolom C
=ALS(ISGETAL(VIND.ALLES($B$2;D2));MAX($C$1:C1)+1;0)
en kolom F
=ALS.FOUT(VERT.ZOEKEN(RIJEN($F$2:F2);$C$2:$D$250;2;0);"")
De lijst in kolom F wordt dan aangepast aan de invoer in cel B2.
Met
=VERSCHUIVING($F$2;;;AANTAL.ALS($F$2:$F$500;"?*"))
wordt een nieuwe Naam gemaakt die dient als bron van een Gegevensvalidatie van het type Lijst in cel B2.
Allemaal heel mooi en het werkt ook goed, maar je hebt al gauw twee of meer extra kolommen nodig bovenop de kolom D met de basislijst.
Mijn vraag is nu: Kan dat ook met VBA ?
Iets als...
-Ergens op een apart werkblad een bereik (een aansluitend deel van een kolom) met de basisgegevens.
-Dat bereik in VBA omzetten naar een Array.
-Met deze Array de functies uitvoeren
-Om tenslotte een gefilterde Array te bekomen die kan dienen als bron van een Gegevensvalidatie van het type Lijst in de Target-cel.
Grote verschil met wat ik vind op bovenstaande site (en ook op soortgelijke voorbeelden op dit forum) en met wat ik eigenlijk wil maken is dat in deze voorbeelden de zoekwaarde wordt ingetikt in één cel (B2). Ik wil in één kolom 75 cellen onder elkaar voorzien van dezelfde gegevensvalidatie. De ActiveCell.Value is dan de zoekwaarde.
Ik heb een workaround zoals in de voorbeelden, maar dan komen er nog twee kolommen bij. Ik vermoed dat het met VBA eenvoudiger moet kunnen.
Weet iemand hoe ?