Ik heb in een applicatie op 2 plekken een zoekfunctie. In mijn ogen identiek (Alleen wat opmaakverschillen), zoeken ook in dezelfde sheet, maar toch..
Code 1 werkt zoals het moet, vindt alles wat je zoekt.
Code 2 vindt slechts een deel van de resultaten.
Vraag is dus, wat zie ik over het hoofd in code 2?
Code 1
Code 2
Code 1 werkt zoals het moet, vindt alles wat je zoekt.
Code 2 vindt slechts een deel van de resultaten.
Vraag is dus, wat zie ik over het hoofd in code 2?
Code 1
Code:
Private Sub txtZoekVeld_Change()
Me.txtZoekVeld = Format(Trim(StrConv(Me.txtZoekVeld, vbLowerCase)))
Dim sh As Worksheet
Set sh = Sheets("ProductData")
Dim i As Long
Dim x As Long
Dim p As Long
Me.lstSearchResults.Clear
Me.lstSearchResults.ForeColor = RGB(229, 111, 33)
Me.lstSearchResults.AddItem "Artikel"
Me.lstSearchResults.List(0, 1) = "Locatiecode"
Me.lstSearchResults.Selected(0) = True
For i = 2 To sh.Range("B" & Rows.Count).End(xlUp).Row
For x = 1 To Len(sh.Cells(i, 2))
p = Me.txtZoekVeld.TextLength
If LCase(Mid(sh.Cells(i, 2), x, p)) = Me.txtZoekVeld And Me.txtZoekVeld <> "" Then
With Me.lstSearchResults
.AddItem sh.Cells(i, 2)
.List(lstSearchResults.ListCount - 1, 1) = sh.Cells(i, 3)
End With
End If
Next x
Next i
End Sub
Code 2
Code:
Private Sub txtBwSearch_Change()
Me.txtBwSearch = Format(Trim(StrConv(Me.txtBwSearch, vbLowerCase)))
Dim sh As Worksheet
Set sh = Sheets("ProductData")
Dim i As Long
Dim x As Long
Dim p As Long
Me.LstSearch.Clear
Me.LstSearch.AddItem "Omschrijving"
Me.LstSearch.List(LstSearch.ListCount - 1, 1) = "Productcode"
Me.LstSearch.List(LstSearch.ListCount - 1, 2) = "Loc. code"
Me.LstSearch.List(LstSearch.ListCount - 1, 3) = "Prijs"
Me.LstSearch.List(LstSearch.ListCount - 1, 4) = "Voorraad"
Me.LstSearch.List(LstSearch.ListCount - 1, 5) = "Minimum Vr."
Me.LstSearch.Selected(0) = True
For i = 2 To sh.Range("B" & Rows.Count).End(xlUp).Row
For x = 1 To Len(sh.Cells(1, 2))
p = Me.txtBwSearch.TextLength
If LCase(Mid(sh.Cells(i, 2), x, p)) = Me.txtBwSearch And Me.txtBwSearch <> "" Then
With Me.LstSearch
.AddItem sh.Cells(i, 2)
.List(LstSearch.ListCount - 1, 1) = sh.Cells(i, 1)
.List(LstSearch.ListCount - 1, 2) = sh.Cells(i, 3)
.List(LstSearch.ListCount - 1, 3) = "€" & sh.Cells(i, 4)
.List(LstSearch.ListCount - 1, 4) = sh.Cells(i, 5)
.List(LstSearch.ListCount - 1, 5) = sh.Cells(i, 6)
End With
End If
Next x
Next i
End Sub
Laatst bewerkt: