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

Zoeken op werkblad

Status
Niet open voor verdere reacties.

marcel31281

Gebruiker
Lid geworden
30 okt 2015
Berichten
391
Goedemorgen,

Onderstaande code gebruik ik om een waarde op te zoeken in mijn werkblad ( serienummer van een product )

Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Or KeyCode = 9 Then
        On Error Resume Next
        Cells.Find(TextBox1.Text).Select
    End If
End Sub

Nu kreeg ik de opmerking van een collega dat het niet meer mogelijk om met een gedeelte van het hele serienummer te zoeken, in plaats van 2010034655-0001 in te voeren wil hij 655-0001 invoeren en dan zoeken.
Echter lukt dit 1x na openen van het bestand en bij de 2e keer zoeken niet meer.

Iemand van jullie enig idee wat het probleem kan zijn?
 
De Find methode gebruikt de zoekinstellingen die het laatst gebruikt zijn (ongeacht of dat via VBA of via de gebruikersinterface was!), tenzij je deze instellingen expliciet opgeeft. Stel dus altijd de argumenten van de Find methode in zoals je ze op dat moment nodig hebt.
 
Bedankt voor je reactie, wat moet ik in dit geval aanpassen zodat op beide manieren gezocht kan worden?
 
Neem een macro op waarbij je het zoekvenster instelt zoals nodig is en kijk naar de opgenomen code, dan zie je alle argumenten.
 
Na wat zoeken op internet en wat aanpassingen met de oude code, ben ik tot onderstaande gekomen wat lijkt te werken.
Graag krijg ik feedback of ik het goed gedaan heb op deze manier, en kan iemand uitleggen wat de code in blauw doet

Code:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Or KeyCode = 9 Then
        On Error Resume Next
Dim ws As Worksheet
Dim Rng As Range
Set ws = Sheets("-OVERZICHT-")   'Change the sheet name as per requirement
Set Rng = ws.Range("G15:G1000").Find(what:=TextBox1.Value,[COLOR= [COLOR="#0000FF"]LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext)[/COLOR]
If Not Rng Is Nothing Then
    ws.Activate 'this line makes sure that you are on the right sheet
    Rng.Select
Else
    MsgBox "Serienummer niet gevonden", vbExclamation, "Value Not Found!"
    Exit Sub
    End If
End If
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan