• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

gefilterde range in combobox

Status
Niet open voor verdere reacties.

wouter1970

Gebruiker
Lid geworden
29 okt 2012
Berichten
7
Ik heb 2 werkboeken, nr 1 bevat een range gegevens, nr 2 een combobox in het werkblad met een verwijzing naar een vaste range in het 1e werkboek. Dit werkt prima maar ik kan niet
filteren in de combobox. Stel ik filter in werkboek 1 de range gegevens in/op de 5e kolom op vaste waardes "VRC" en "VRH" middels autofilter in een macro (met een hulpkolom). In de combobox in werkboek 2 wordt deze filtering niet weergegeven.
Hoe kan ik dit doen, ofwel hoe kan ik de gegevens uit werkboek 1 filteren IN de combobox in werkboek 2. Ik ben nog niet zo heel ver in VBA. Ik heb iets gelezen over AddItem etc. maar daar kom ik absoluut niet uit.

Dank!
 
Bijv.
Code:
Private Sub Worksheet_Activate()
ComboBox1.Clear
With Workbooks("Test2.xls").Sheets("Blad1").AutoFilter.Range.Columns(1)
    For Each Cell In .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
        ComboBox1.AddItem Cell.Value
    Next Cell
End With
End Sub

Pas nog wel alles aan naar de werkelijke situatie zoals bestandsnaam, bladnaam en kolomnr.
 
Rudi, dank voor je antwoord en een gezond 2013 toegewenst! Je helpt me enorm op weg. Ik ben inmiddels een heel klein beetje thuis in VBA. Ik heb nog enkele vragen.
Betere uitleg: ik heb werkboek nr 1: lijst.xlsm. Hier staat de gefilterde range in werkblad ''artikel'' in $A$7-$AE$2000. Verder heb ik werkboek nr 2: dossier.xlsm. Hier staat in werkblad ''invulblad'' de combobox1.
Aan de hand van mijn selectie uit die combobox worden elders in het invulblad met verticaal zoeken waarden opgezocht uit lijst.xlsm. Dit werkt allemaal prima.
1. Waar plaats ik nu jouw VBA code? In Thisworkbook van dossier.xlsm ? Of toch niet in het objectendeel van ''invulblad", bij de standaard VBA code: Private Sub ComboBox1_Change() etc.? Ik mis deze kennis van VBA.

2. Overigens is het in lijst.xlsm, tab artikel, kolom nr 29 (anders dan eerder gemeld) en het criterium is ''1'' Dit is een hulpkolom op zowel de eerder genoemde statuswaarden VRC en VRH tegelijk te filteren.
Hoe kan ik dit criterium in de code aangeven? zoals onder aangegeven werkt het niet (Ik ken alleen zoiets als dit: ActiveSheet.Range("te bepalen range").AutoFilter Field:=29, Criteria1: "=1")

3. Als ik het goed begrijp haalt jouw code de gefilterde rijen op lijst.xlsm (artikel) met filter in kolom 29 (criterium = 1) en plaatst deze in combobox1 van dossier.xlsm. Klopt dit?
In de praktijk zullen het niet meer dan ca 300 rijen zijn uit het bereik $A$7-$AE$2000.

4. Verder heb ik nog een andere oplossing gevonden die mogelijk zou kunnen werken maar die ik liever niet toepas, omdat jouw oplossing vast handiger is. Deze oplossing is: in de macro die het autofilter op kolom 29 zet, ook een copy code plaatsen die de gefilterde rijen naar een leeg werkblad kopieert. Deze vaste of misschien dynamische range in dit lege werkblad koppel je dan aan de combobox1 in werkboek dossier.xlsm. Wat vind je hiervan als alternatief?

Private Sub Worksheet_Activate()
ComboBox1.Clear
With Workbooks("D:\Lijst.xlsm").Sheets("artikel").AutoFilter.Range.Columns(29).Criteria1("1")
For Each Cell In .Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
ComboBox1.AddItem Cell.Value
Next Cell
End With

Vr grt. Wouter
 
Wouter,

Dan kun je de gefilterde range ineens kopiëren naar een ander tabblad, daar de waarden ophalen met de "Combobox1.list" methode op de gekopiëerde range.
Stukken sneller dan "add.item".
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan