Listbox items verwijderen via wildcard (text)

Status
Niet open voor verdere reacties.

DarkValley

Gebruiker
Lid geworden
11 jan 2007
Berichten
59
Beste Vba'ers,

Ik probeer uit een bestaande gevulde Listbox items te verwijderen die een bepaalde text niet bevat.

Met onderstaande code worden nu alle items verwijderd :confused:

Het werken met de wildcards in een vereiste omdat er verschillende debiteur namen voor kunnen staan.

Uit de Listbox moeten dus items worden bewaard als ze de deel tekst "Dagexpress" bevatten.

Kan iemand aangeven hoe en of dit kan?




Code:
With Me.ListBox1
 For i = .ListCount - 1 To 0 Step -1
 If .List(i, 0) <> "*DagExpress*" Then
 .RemoveItem i
 
  End If
  Next
End With

Alvast bedankt.
 
Laatst bewerkt:
Staan de gegevens in de eerste kolom van de listbox?
Code:
For i = .ListCount - 1 To 0 Step -1
 If instr(1,.List(i, 0),"DagExpress",1) Then .RemoveItem i
  Next
 
zoiets?

Code:
With ListBox1
    For i = 0 To .ListCount - 1
        If InStr(.List(i), "DagExpress") Then .RemoveItem (i)
    Next
End With
 
Sorry beide heren. ik bedoelde dat diegene met de tekst juist bewaard moeten blijven. :(
 
Laatst bewerkt:
Beste HSV / SjonR,

heb het maar even zo opgelost. Werkt voor mij beter, kan ik ze (de)selecteren.

bedankt voor de richting.

Code:
Private Sub CheckBox13_Click()

If CheckBox13.Value = True Then
  For i = 0 To ListBox1.ListCount - 1
        If InStr(ListBox1.List(i), "DagExpress") Then ListBox1.Selected(i) = True
Next

ElseIf CheckBox13.Value = False Then
 For i = 0 To ListBox1.ListCount - 1
        If InStr(ListBox1.List(i), "DagExpress") Then ListBox1.Selected(i) = False
        
Next
End If
End Sub
 
De Instr(1,......,........,1) had ik toegevoegd zodat het gezochte woord niet hoofdlettergevoelig hoeft te zijn.
Zonder is het hoofdlettergevoelig.
Als er dus "dagexpress" staat zal het niet geselecteerd worden.

Dit doet hetzelfde.
Code:
Private Sub CheckBox13_Click()
  For i = 0 To ListBox1.ListCount - 1
        If InStr(ListBox1.List(i), "DagExpress") Then ListBox1.Selected(i) = CheckBox13
  Next
End Sub
Overigens was de code van @SjonR niet pluis met 0 To .listcount - 1.
Verwijderen doe je van onder naar boven en niet vanaf boven.
Zo is het aan het eind de variabele (i) de tel kwijt en krijg je een foutmelding; maar met selecteren heb je daar geen last van.
 
Laatst bewerkt:
Of

Code:
Private Sub CheckBox13_Click()
  ListBox1.List= filter(ListBox1.List, "DagExpress",,1)
End Sub
 
Oke @HSV bedankt voor de les van onderaf terug tellen. Maar is het ook mogelijk om datgene te verwijderen wat geen dagexpresse bevat?
 
Hi @snb bedankt voor jouw bijdrage. ik zal eens zeker gaan kijken hoe deze werkt en waarom je bv deze zou kiezen ipv de andere.
 
@HSV

het is me gelukt. verwijderen van items welke niet de text "dagexpress" bevat => niet hoofdlettergevoelig

Code:
For i = ListBox1.ListCount - 1 To 0 Step -1
 If InStr(1, ListBox1.List(i, 0), "DagExpress", 1) = 0 Then ListBox1.RemoveItem i
Next

Nogmaals allemaal bedankt voor jullie hulp
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan