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

Userform | Listbox met zoekfunctie...

Status
Niet open voor verdere reacties.

Weust

Gebruiker
Lid geworden
8 dec 2011
Berichten
38
Dag allemaal,

Zou iemand mij kunnen helpen met het volgende?

Als eerste dient een lege regel (1 van de 5 in dit gevel) geselecteerd te worden.
Hierna drukt men opzoeken.

Hiervoor heb ik een Userform gemaakt met daarin een Listbox.
De listbox bestaat uit een lijst met klant gegevens, deze moeten worden geladen vanuit het werkblad 'Gegevens'.
Daarnaast wil ik ook nog kunnen zoeken op bedrijfsnaam in de listbox.

Als men de betreffende klant heeft gevonden / geselecteerd, dan druk men op de knop 'Done' en dient het gevonden item op de geselecteerde regel te worden geplaatst.

Ik ben wel aardig handig met excel en VBA maar met de listbox (nog) niet....

Ik heb een voorbeeld van bovenstaande bijgevoegd!
Voorbeeld.JPG
Bekijk bijlage Voorbeeld.xlsm

Groet Weust
 
Je kan een leverancier selecteren in de listbox.
Je kan zowel een nummer als een leverancier in de textbox typen.

Test het maar eens.
 

Bijlagen

Iets andere benadering,
Je kan op alles zoeken (vanaf 2 tekens) vb: als je le intikt krijg je ook telefoon als resultaat in het lijstje omdat le ook te vinden is in telefoon
Hoe meer je intikt hoe nauwkeuriger de zoekresultaten
Suc6
 

Bijlagen

Top heren!

Hier kan ik wel wat mee.
Bedankt voor jullie hulp!:thumb:
 
Ik heb de vraag weer op even op 'niet opgelost' gezet omdat ik de code graag wil begrijpen.

Ik heb in mijn echte bestand nu gekozen voor de variant van 'gast0660' omdat ik hier, met mijn kennis van VBA, nog de mogelijkheid had iets te tweaken aan de code zodat hij in het echte bestand gebouwd kon worden.

Zouden jullie mij eens kunnen uitleggen wat er stap-voor-stap gebeurd in de onderstaande marco's?
De groene code snap ik, de rode niet (helemaal).

Dit is de variant van HSV - Mega Honourable Senior Member:cool::

Code:
Sub Userform_Zoeken()
Set actcell = ActiveCell
    UFM_Zoeken.Show
End Sub
- Huidige cell/selectie krijgt de naam Actcell
- Userfom weergeven



Code:
Private Sub UserForm_Initialize()
 With ListBox1
  .List = Sheets("gegevens").Cells(1).CurrentRegion.SpecialCells(2).Offset(1).SpecialCells(2).Value
   For i = 0 To .ListCount - 1
    .List(i, 0) = Format(.List(i, 0), "00000")
   Next i
 End With
End Sub


Code:
Private Sub CBN_Done_Click()
For lItem = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(lItem) Then
    r = lItem
    Exit For
  Else
    r = 0
  End If
 Next lItem
For i = 0 To 5
  actcell.Offset(, 1 + i) = ListBox1.List(r, i)
Next i
End Sub

Code:
Private Sub Tb_zoeken_Change()
With ListBox1
 .List = Sheets("gegevens").Cells(1).CurrentRegion.SpecialCells(2).Offset(1).SpecialCells(2).Value
   For i = 0 To .ListCount - 1
     .List(i, 0) = Format(.List(i, 0), "00000")
   Next i
    If TB_Zoeken <> "" Then
      For i = .ListCount - 1 To 0 Step -1
         If IsNumeric(TB_Zoeken) Then
            If Not .List(i) Like TB_Zoeken & "*" Then
             .RemoveItem i
            End If
         Else
           If Not LCase(.List(i, 1)) Like LCase(TB_Zoeken.Text) & "*" Then
             .RemoveItem i
           End If
         End If
      Next i
    End If
End With
End Sub

BVD!:thumb:
 
1e rode code zet de format in de listbox op 0001, 0002, 0003, enz. anders staat er zoals in het bestand van @gast0660 in de listbox 1,2, 3, enz.

2e: schrijft de geselecteerde regel van de listbox naar je activecell.resize(,6).

3e: zet alle gegevens van je werkblad bij een wijziging van je textbox in je listbox.
Door die wijziging verwijderd het de niet overeenkomstige rijen in je listbox.
Zou je nu een letter verwijderen uit de textbox, zet die eerst alle gegevens er weer in en filtert gelijk de rijen eruit die niet aan de textbox.text voldoen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan