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

Zoekresultaten in listbox weergeven in een userform

Status
Niet open voor verdere reacties.

Lau73

Gebruiker
Lid geworden
24 mrt 2019
Berichten
10
Beste forumleden,

Ik zit al enige tijd te klooien voor wat ik denk een eigenlijk simpel probleem.
Op blad1 heb ik een deel data. Deze data zal nog groeien! Dus indien hiervoor een table moet aangemaakt worden zal deze variabel gemaakt moeten worden!

Ik heb een userform aangemaakt met een invoervak, een listbox en een uitvoerknop. Het is de bedoeling om in het invoervak een deel, of de volledige naam, voornaam, id of telefoonnummer in te voeren, op de uitvoerknop te drukken en dat in de listbox het zoekresultaat wordt weergegeven.
Iemand enig idee??
In bijlage stuur ik een voorbeeld mee.

Alvast bedankt voor de hulp

PS de gebruikte namen zijn fictieve namen!!
 

Bijlagen

  • help mij.xlsm
    19,6 KB · Weergaven: 28
Beste Lau,

Welkom op dit forum.

Ik heb werkelijk geen idee wat je bedoelt. :eek:
 
Zoiets?
Data verdwijnt uit de lijst als die niet beantwoord aan de criteria.
 

Bijlagen

  • help mij.xlsm
    28,9 KB · Weergaven: 51
@ gast0660

Ja, Super dat is het!! Eigenlijk is het nog beter dan ik verwacht had!! Die combobox erbij maakt het nog beter!

Superbedankt!!
 
Dat kan veel eenvoudiger.
Code:
Private Sub ComboBox1_Change()
 ListBox1.List = [data_tbl].Value
 TextBox1 = ""
End Sub




Private Sub TextBox1_Change()
Dim sv, i As Long, j As Long
ReDim arr(3, 0)
sv = [data_tbl]
ListBox1.List = sv
 With ComboBox1
   If .ListIndex > -1 Then
     For i = 1 To UBound(sv)
            If InStr(1, sv(i, .ListIndex + 1), TextBox1, 1) Then
                For j = 1 To 4
                    arr(j - 1, UBound(arr, 2)) = sv(i, j)
                Next j
              ReDim Preserve arr(3, UBound(arr, 2) + 1)
            End If
        Next
     ListBox1.List = Application.Transpose(arr)
End If
End With
End Sub

Of:
Code:
Private Sub TextBox1_Change()
Dim i As Long
ListBox1.List =  [data_tbl].value
 With ComboBox1
   If .ListIndex > -1 Then
     For i = ListBox1.ListCount - 1 To 0 Step -1
       If InStr(1, ListBox1.List(i, .ListIndex), TextBox1, 1) = 0 Then ListBox1.RemoveItem i
     Next i
  End If
End With
End Sub
 
Laatst bewerkt:
Nog eenvoudiger?

Code:
Private Sub UserForm_Initialize()
  ListBox2.List = Sheets("Blad1").ListObjects(1).DataBodyRange.Value
  ListBox1.List = ListBox2.List
End Sub

Private Sub TextBox1_Change()
  ListBox1.List = ListBox2.List
  For j = ListBox1.ListCount - 1 To 0 Step -1
    If InStr(1, ListBox1.List(j, 0) & ListBox1.List(j, 1) & ListBox1.List(j, 2) & ListBox1.List(j, 3), TextBox1, 1) = 0 Then ListBox1.RemoveItem j
  Next j
End Sub
 

Bijlagen

  • help mij.xlsm
    22,7 KB · Weergaven: 50
Of ik het nu vul door een tweede listbox of door de range blijft lood om oud ijzer toch?
 
Lood brengt wel iets meer op dan ijzer:d
Is het 1 x inladen in een listbox niet sneller/efficiënter dan het telkens opvragen van gegevens uit een werkblad? (al merk je er in dit voorbeeldje niets van)

Verder laat ik alleen een andere methode zien zonder tussenkomst van een extra combobox. Ook al schrijft de TS
Die combobox erbij maakt het nog beter!
 
Dan zou ik i.p.v. een tweede listbox waar je niets mee doet buitenom declareren
1 keer inlezen in de initialize().
Overal beschikbaar in het formulier.

Code:
Private sv
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan