Zoekfunctie listbox

Status
Niet open voor verdere reacties.

TimdeBlaeij

Gebruiker
Lid geworden
19 jul 2017
Berichten
22
Hoi,

Ik werk sinds een week met VBA vandaar dat deze vraag misschien een beetje dom overkomt, maar hoe maak je een zoekfunctie voor een listbox?
Ik heb zelf geprobeerd iets te maken met een textbox maar zonder succes.
De bedoeling is dat de textbox value word gezocht in het liefst alle kolommen.
Als deze value word gevonden in een kolom van een rij dan blijft die rij staan, wordt deze value niet gevonden in een kolom van een rij dan word deze tijdelijk verwijderd.
Heeft iemand een idee hoe ik dit kan maken?

Mijn code ziet er zo uit:
Code:
Worksheets("Listbox").Activate


    Set r = Range("A1").CurrentRegion
        Set r = r.Offset(1).Resize(r.Rows.Count - 1)
        With Lsb1
            .ColumnCount = r.Columns.Count
            .RowSource = r.Address
            .ColumnHeads = True
End With
 
Laatst bewerkt:
Welkom bij HelpMij! We hebben veel meer aan een bestandje; niemand op het forum zit te wachten op extra typoefeningen :). Daarnaast is er een speciale knop ( # ) om code mee op te maken, zodat die leesbaar blijft. Nou is die van jou nog niet zo groot, maar kijk maar eens rond bij codes die een halve meter beslaan. Niet meer te lezen :). Maar graag dus een bestandje met de noodzakelijke gegevens.
 
Het is niet voor de hand liggend een bepaalde waarde in alle kolommen te zoeken.

mogelijke werkwijze

- maak een userform
- zet daarin 2 listboxen
- voeg een combobox toe

vul listbox1 met gegevens uit een werkblad (de basisgegevens
zet in listbox2 dezelfde gegevens: de te filteren listbox
kopieer de gegevens uit listbox1 naar combobox1 (style 2-dropdownlist)

selekteer een waarde in combobox1.
gebruik de combobox1. waarde om listbox2 te filteren
toon de filtering in listbox2

Omdat nog onduidelijk is welke gegevens uit welke kolommen gefilterd moeten worden valt dat buiten het bestek van dit antwoord.

Een voorbeeldbestand is 92% van het antwoord.
 
Ik snap wat je bedoeld snb. Toch wil ik het liefst een listbox houden. Ik hoef niet perse in alle kolommen tegelijk te zoeken, maar ik wil wel dat het mogelijk is om in elke kolom te zoeken. Ik wil dus graag dat (als we mijn bestandje als voorbeeld nemen) als ik in de textbox Amsterdam typ dat dan alleen de rijen die amsterdam bevatten blijven staan of zichtbaar zijn. Dit zijn rijen 5, 6, 8, 9, 11, 14, 16 en 20
 
Misschien voldoet dit.
Code:
Private Sub UserForm_Initialize()
 With Sheets("Blad1").Cells(1).CurrentRegion
  lsb1.List = .Value
  lsb1.ColumnCount = .Columns.Count  'of instellen in de eigenschap
 End With
End Sub

Private Sub txbSearch_Change()
With lsb1
  .List = Sheets("blad1").Cells(1).CurrentRegion.Value
    For i = .ListCount - 1 To 1 Step -1
     If InStr(LCase(Join(Application.Index(.List(), i + 1, 0))), LCase(txbSearch.Value)) = 0 Then .RemoveItem i
   Next i
 End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan