• 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.

Live search

Status
Niet open voor verdere reacties.

Bandito

Gebruiker
Lid geworden
8 okt 2012
Berichten
199
Beste allemaal,

Ik ben aan het proberen om een zoek systeempje op te zetten.
Om dit te bewerkstelligen zoek ik op internet naar ideetjes en probeer deze dan aan te passen. Helaas loop ik nu vast.

In sheet1 staan product namen en product ID's met nog wat overbodige informatie.
Door middel van de knop Zoek opent er een forum.

Ik zou graag, wanneer ik in het textbox bij product name bijvoorbeel een "g" intoets alle resultaten krijgen die beginnen met een G. Wanneer ik vervolgens de "u" erachter typ (dan staat er dus GU) dan zou ik graag willen zien dat alleen producten die met GU begonnen in de listbox blijven staan.

Om nog een stapje verder te gaan, indien mogelijk, zou ik dan ook willen filteren op Product ID.

Stel er staat in de listbox de volgende data:

24 Guarana Fantastica
69 Gudbrandsdalsost

Dan moet ik door middel van 24 in te typen in textbox ID alleen nummer 24 overhouden in de listbox.

Ik hoop dat ik heb enigszins duidelijk heb kunnen uitleggen en dat iemand mij kan uitleggen waarom het op dit moment niet werkt.

Bestandje; Bekijk bijlage list-box-search-results.xlsm
 
Maak er eens dit van voor Product Name:
Code:
Private Sub txtKeywords_Change()
    Dim cl As Range
    Dim i As Long
    Dim wrd() As String
    
    For Each cl In Sheets("sheet1").Range("B2:B" & Range("B2").CurrentRegion.Rows.Count)
        If InStr(1, LCase(cl.Value), LCase(txtKeywords.Text)) > 0 Then
            ReDim Preserve wrd(i)
            wrd(i) = cl.Value
            i = i + 1
        End If
    Next

    lstSearchResults.List = wrd
End Sub

Leer tevens die inspringpunten te gebruiken.
 
Teveel veranderingen, dus het bestand maar geplaatst.

Typ bv. 12 - 12
Daarna in de tweede textbox 41.
Daarna textbox2 leeg en typ een 8.
 

Bijlagen

  • list-box-search-results.xlsb
    30,6 KB · Weergaven: 34
Laatst bewerkt:
Dank voor de reacties!

De code van HSV doet wat ik graag zou willen, bedankt!
Edmoor, de code die jij geeft crasht helaas wanneer ik een waarde ingeef die niet in de lijst voor komt.

Wat dingetjes nog;
#1 - Ik merk wel dat de headers van de columns niet zichtbaar meer zijn. Ik lees op internet dat dit niet mogelijk is wanneer er data via VBA in de listbox komt..
Ik heb wel de volgende code gevonden maar deze werkt niet;
Code:
With Me.ListBox1
   .ColumnHeads = True
   .RowSource = "A2:H2"
End With
Moet ik er vrede mee nemen dat dit simpelweg niet gaat wanneer er data via VBA inkomt?

#2 - Zoeken op productname en vervolgens op ID werkt perfect. Het lukt niet om nu enkel op ID te zoeken zonder iets bij product name in te vullen. Kan dit wel zodat je enkel op ID kan zoeken?

#3 - Hoe stel ik in dat hij enkel in de kolom zoekt waar hij moet zoeken? Als ik bjivoorbeeld een 3 intyp bij Product name krijg ik allemaal resultaten te zien waar geen 3 in de productnaam staat..

Bij voorbaat dank!
 
Laatst bewerkt:
Dit werkt inderdaad ook mooi!

Natuurlijk wil ik het straks in mijn eigen bestand toepassen en ben ik aan het uitvogelen hoe ik een extra kolom erbij betrek.

Stel ik wil ook in de kolom Quantity per unit zoeken.

Ik heb zitten spelen met deze regel;

Code:
For Each cl In Sheets("sheet1").Range("B2:B" & Range("B2").CurrentRegion.Rows.Count)

Ik dacht wanneer ik hier "C's" van maak dan neem ik ook de kolom C mee. Dit geeft echter een raar resultaat en is denk ik niet juist..
De ID kolom verdwijnt en de waardes van kolom C komen niet netjes onder elkaar te staan.

Enige raad?

Edit:
Ik ben nog wat verder gaan experimenteren en realiseer me dat ik met dit voorbeeld iets over het hoofd heb gezien;
In mijn uiteindelijke bestand is het mogelijk dat Product ID twee keer voor kan komen; bijvoorbeeld twee keer product ID 17 met verschillende product name.

Wanneer ik 17 intyp komen ze beide netjes tevoorschijn. Wanneer ik nu een spatie typ en de product name verder wil typen geeft hij 0 resultaten.
Is het mogelijk dat bovenstaande kan? Dus eerst een productID wat twee keer voor komt en als je dan verder typt 1 resultaat verschijnt?
 
Laatst bewerkt:
Met een derde item erbij kan je dan het beste een niet proportioneel lettertype gebruiken.
Dubbel ID is hierin ook opgenomen, probeer het eens:
Bekijk bijlage HM list-box-search-results.xlsm

Als voorbeeld kan je ID 18 gebruiken.
 
Laatst bewerkt:
Hoi Edmoor,

Inderdaad, ik kan nu filteren op 3 kolommen.
Zou je me eens uit kunnen leggen (indien niet teveel werk) waar dat precies in de kolom staat?

Stel ik wil ooit een 4e item toevoegen dan zou ik niet weten waar ik dit in de code moet aanpassen.


Ik wil ik een soort advanced search maken waar je dan dmv textboxen kan filteren. Bijvoorbeel alleen op productname of Year of wanneer je beide weet beide invult en dan op twee variabelen filtert .
Heb het bestandje iets aangepast om mijn gedachte meer te visualiseren.

Bekijk bijlage HM list-box-search-results (2).xlsm
 
Je kan in mijn voorbeeld zien waar in wordt gezocht, dat is in dit geval de combinatie van 3 cellen en kan je ook 4e of een 5e item aan toevoegen.
Als je per item wilt zoeken moet je kijken op welk item de gebruiker zoekt en dan die string gebruiken voor het zoeken in alleen dat item.
Het wordt dan totaal anders, maar ik zou zeggen, lees goed wat ik voor je maakte en probeer te begrijpen wat er precies gebeurt.
Het per regel uitleggen zou hier bijna een boek opleveren, ondanks dat het niet veel code is.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan