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

omzetten via vert.zoeken van een 5cijfer string naar iets anders in VBA

Status
Niet open voor verdere reacties.

Peenvogel

Gebruiker
Lid geworden
5 mei 2015
Berichten
129
Ik heb gepoogd in VBA een eigengemaakte functie te schrijven.
De bedoeling is, dat er in een string gezocht wordt naar 5 cijfers achter elkaar en die dan via vert,zoeken in een range de 5 cijfers moet omzetten naar een woord.
Ik probeer er ook een stukje foutafhandeling in te zetten, voor het geval er
5 cijfers gevonden worden maar die niet in de lijst voorkomt.
De string bestaat bv uit a12345b
12345 = appel en mijn beoogde uitkomst is : a( appel )b.
Bij het tegenkomen van 5 cijfers die niet in de opgegeven range staat
dan als uitkomst: a[ 67890 ]b
Ik heb het geprobeerd met IsNumeric en dan de gevonden 5 cijfers via
Application.Worksheetfunction.VLookup op te laten zoeken in de opgegeven Range.
Ik krijg constant # waarde als foutmelding.
Dus zowel mijn declaraties als mijn betrachte foutafhandeling is van een onjuiste syntax.
Ik heb het een en ander geprobeerd met zowel String als Variant Declaratie omdat er zowel
letters als cijfers door elkaar staan, maar ik heb de juiste declaratie nog niet gevonden.
Is er iemand genegen om mijn goedbedoelde pogingen te evalueren en waarnodig aan te passen?
Uiteraard is het ook mogelijk, dat ik een veel simpelere oplossing totaal over het hoofd zie, ook dan hou ik me van harte aanbevolen.
Groetjes, Ron.
Ik gebruik excel 2003 nederlands.
 

Bijlagen

  • test1234.xls
    44,5 KB · Weergaven: 32
Laatst bewerkt:
Kun je iets met de werkbladfunctie SUBSTITUEREN, of anders met de VBA-functie Replace?
 
Ok Tim heb ik geprobeerd , maar blijf met een waarde foutmelding zitten.
Groetjes, Ron.
 
Laatst bewerkt:
Om je een beetje op weg te helpen, je geeft de functie op met 2 parameters: =Zoek5C(C1;A1:B3)
Terwijl je er in de functie zelf maar 1 inneemt: Function Zoek5C(rng As Range) As String

Overigens is wat je wil niet zo moeilijk, maar je uitleg in het document zelf is net even anders dan in #1. Ik ga uit van het document.
Neem de 5 cijfers in, de string waarmee deze moet worden vervangen en de string waar in gezocht moet worden. Zoek in de zoekstring naar de 5 cijfers (als string).
Als deze wordt gevonden weet je vanaf welke positie je de 5 cijfers moet vervangen door (, het woord en ).
 
Laatst bewerkt:
Probeer anders deze:
Code:
Function ZoekZoek(sTekst As String, rVijfCijfers As Range) As String
    Dim Cl As Range
    Dim i As Long, x As Long
    
    i = 0
    ZoekZoek = sTekst
    For Each Cl In rVijfCijfers
        ZoekZoek = Replace(ZoekZoek, Cl, "( " & Cl.Offset(, 1) & " )")
    Next
    Do
        i = i + 1
        If IsNumeric(Mid(ZoekZoek, i, 1)) Then x = x + 1 Else x = 0
        If x = 5 Then
            ZoekZoek = Replace(ZoekZoek, Mid(ZoekZoek, i - 4, 5), "[ " & Mid(ZoekZoek, i - 4, 5) & " ]")
        End If
    Loop Until i = Len(ZoekZoek)
End Function
 

Bijlagen

  • test1234.xls
    51 KB · Weergaven: 24
Briljant, Tim, bedankt. Ook Edmoor bedankt voor je heldere uitleg.
Groetjes, Ron.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan