• 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 gegevens op deel van een naam

Status
Niet open voor verdere reacties.

Gerard2348

Gebruiker
Lid geworden
24 okt 2013
Berichten
370
Beste Allemaal,

In het verleden heb ik de vraag gesteld om te zoeken op een deel van een naam. Het gedeelte van de onderstaande code wil ik implementeren maar dat lukt mij niet.

Code:
With Sheets("Blad3")
        sn = Split(Join(Application.Transpose(.Range("D2:D" & .Cells(Rows.Count, 4).End(xlUp).Row)), ";"), ";")
    End With
    For i = LBound(sn) To UBound(sn)
     Set c = Blad2.Range("B2:F50").Find(sn(i), , , xlPart)
        If Not c Is Nothing Then

Waar het in moet is


Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  
  Application.ScreenUpdating = False
       
    If Intersect(Target, Range("K15:K50,P15:P50,P3:P13,U15:U50")) Is Nothing Then Exit Sub
    TeZoekenWaarde = ActiveCell.Offset(, -3)
    
    Set c = Sheets("Skills Medewerkers").Range("B2:B150").Find(TeZoekenWaarde)
    If c Is Nothing Then _
    MsgBox TeZoekenWaarde & vbCrLf & "Naam komt niet overeen"
    If Not c Is Nothing Then _
    MsgBox TeZoekenWaarde & vbCrLf & c.Offset(, 42).Value
    
    Application.ScreenUpdating = True
  
End Sub

Wie kan mij verder helpen.

Bvd
Groet Geer
 
op helpmij.nl die vraag stellen is ook wel weer leuk toch?
 
Zoals ik al heb aangegeven lukt het mij niet om het werkend te krijgen. Hierbij een voorbeeld
 
Laatst bewerkt:
Goedemorgen Gerard,

Jouw VBA-code is niet raadpleegbaar omdat we het wachtwoord niet weten............:(

Edit:

Met zoeken op de eerste 10 tekens...

Code:
TeZoekenWaarde = Left(ActiveCell.Offset(, -3), 10)

Of op alle tekens behalve de laatste 3:

Code:
TeZoekenWaarde = Left(ActiveCell.Offset(, -3), Len(ActiveCell.Offset(, -3)) - 3)


Gr.

Sjon
 
Laatst bewerkt:
Goedemorgen,

Een voorbeeld met een beveiliging er op is wel heel stom :rolleyes:. Ik heb de code aangepast en ga deze de komende tijd uitproberen.


Mijn hartelijke dank.
 

Bijlagen

Laatst bewerkt:
Uiteindelijk tot de volgende oplossing gekomen;

Toegevoegd aan de code

Code:
TeZoekenWaarde = Split(TeZoekenWaarde, " ")(0)

Dan komt in het bericht alleen de voornaam te staan.

In het blad een extra kolom gebruikt om overtollige spaties te verwijderen.

De volledige code is als volgt

Code:
[CODE]Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Application.ScreenUpdating = False
    
    If Intersect(Target, Range("K15:K50,P15:P50,P3:P13,U15:U50")) Is Nothing Then Exit Sub
    TeZoekenWaarde = Left(ActiveCell.Offset(, -3), 10)
    
    Set c = Sheets("Skills Medewerkers").Range("B2:B150").Find(TeZoekenWaarde)
    If c Is Nothing Then _
    MsgBox TeZoekenWaarde & vbCrLf & "Naam komt niet overeen": Exit Sub
    If Not c Is Nothing Then
    TeZoekenWaarde = Split(TeZoekenWaarde, " ")(0)
    End If
    MsgBox TeZoekenWaarde & "," & vbCrLf & "Heeft de volgende eigenschappen" & " " & vbCrLf & vbCrLf & c.Offset(, 43).Value
  Application.ScreenUpdating = True
  
End Sub
 

Bijlagen

Waarom dit stukje?

Code:
If Not c Is Nothing Then
    TeZoekenWaarde = Split(TeZoekenWaarde, " ")(0)
End If

Als je het al wilt gebruiken zou je het ook zo kunnen schrijven:

Code:
Split(TeZoekenWaarde)(0)

standaardwaarde bij de splitfunctie is een spatie.
 
Laatst bewerkt:
Ha SjonR,

Allereerst nogmaals hartelijk dank voor je suggestie. Ik ben er blij mee. Ben altijd in voor verbeteringen. Mijn kennis van VBA is helaas na een lange periode nog steeds minimaal.

Het is nu het volgende geworden;

Code:
TeZoekenWaarde = Split(TeZoekenWaarde)(0)

mocht je nog verbeteringen hebben..... ik hou mij aanbevolen. :thumb:
 
Voor een betere leesbaarheid schrijf je dat If stukje zo:
Code:
    If c Is Nothing Then
        MsgBox TeZoekenWaarde & vbCrLf & "Naam komt niet overeen"
        Exit Sub
    Else
        TeZoekenWaarde = Split(TeZoekenWaarde, " ")(0)
    End If
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan