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

Opgelost Zoeken in kolommen met deel van tekst

Dit topic is als opgelost gemarkeerd

Tinusk1964

Gebruiker
Lid geworden
12 feb 2025
Berichten
12
Beste, in een lijst met waypoint en posities wil ik een zoek mogelijkheid maken.
Hierbij zal de naam of een deel van de naam van het waypoint ingevoerd worden. Met als uitkomst het waypoint met de bijbehorende positie. Dit kunnen er meerderen zijn.
Ben bezig geweest met combobox maar krijg dit niet werkend.
Mogelijk is er een andere functie beter?
Enigszins bekend met VBA, dus heeft iemand hier een oplossing voor heeft.
In bijlage het waypoint bestand.

Alvast bedankt

Martijn
 

Bijlagen

Hey, dat is al een stuk beter.
Enige opmerking als ik een deel van de tekst opvraag geeft hij niet alle mogelijkheden.
BV haven dan slaat hij waypoint Amerikahaven over.
 
'Modern day' versie.
Code:
Private Sub txtWaypoint_Change()
    Dim data As Variant, arr As Variant

    With Sheets("Waypoint list").Cells(1).CurrentRegion.Offset(1)
        data = Filter(.Parent.Evaluate("transpose(if(isnumber(search(""" & txtWaypoint.Text & """," & .Columns(2).Address & ")),row(1:" & .Rows.Count & ")))"), False, 0)
        If UBound(data) = -1 Then
            txtResultaat = "Geen waypoint gevonden dat voldoet": txtResultaat.ForeColor = vbRed
            Exit Sub
        End If
        arr = Application.Index(.Value, Application.Transpose(data), Application.Transpose(Evaluate("row(1:4)")))
        If UBound(data) > 0 Then
            lstWaypoints.List = arr
        Else
            With lstWaypoints: .Clear: .Column = arr: End With
        End If
        txtResultaat = IIf(txtWaypoint <> vbNullString, UBound(arr), .Rows.Count - 1) & " waypoints gevonden": txtResultaat.ForeColor = vbBlack
    End With
End Sub
 
Laatst bewerkt:
Mooi, maar ik zou deze nog even tussenvoegen als geen waypoints gevonden worden:
Code:
lstWaypoints.Clear
Je zou ook
Code:
If UBound(data) > = 0 Then
kunnen wijzigen in
Code:
If UBound(arr) > = 0 Then
maar dan krijg je een ongewenste uitkomst als er nog slechts één waypoint resteert.
 
arr is slechts de urne waar data ingegoten worden dus die kunnen we even negeren.
Meest belangrijk is data want dit is waar de gevonden resultaten worden opgeslagen.
data is een zero-based array dus zijn er 3 mogelijkheden met Ubound(data)
-1 wil zeggen geen resultaten gevonden dus exit.
0 wil zeggen 1 resultaat gevonden.
>0 wil zeggen meerdere resultaten gevonden.
Je kan dus niet >=0 gebruiken want er is wel degelijk een verschil tussen 0 en >0 nl de manier waarop de
resultaten moeten worden weergegeven in de ListBox vandaar de If ..Else..End If
 
Terug
Bovenaan Onderaan