Opgelost deel van een tekst tussen /..../..../

Dit topic is als opgelost gemarkeerd

ESPRIT

Gebruiker
Lid geworden
21 dec 2011
Berichten
32
goede morgen,

ik heb de volgende tekst: /Moe College/Special Accounts
ik wil alleen het eerste deel hebben dus : Moe College

ik heb het geprobeerd met:

AFDELING2: Mid([Org Unit Path];InStr(1;[Org Unit Path];"/")+1;InStr(InStr(1;[Org Unit Path];"/");[Org Unit Path];"/")-InStr(1;[Org Unit Path];"/")-1)

maar krijg dan een foutmelding : #Func!

wie kan me helpen / wat doe ik verkeerd?
groet Jan
 
Die foutmelding krijg je denk ik op teksten waar geen slash in staat.
 
Sowieso zit er ook een foutje in je formule, waardoor je denk ik er niets uit krijgt. Bij mij krijg ik in ieder geval wél een waarde terug, en de Foutmelding kan ik elimineren door een check op de tweede slash (in mijn voorbeeldje had niet elke record twee slashes).
Code:
Categorie: IIf(InStr(InStr(1;[CategoryName];"/")+1;[CategoryName];"/")=0;"";
Mid([CategoryName];InStr(1;[CategoryName];"/")+1;InStr(InStr(1;[CategoryName];"/")+1;
[CategoryName];"/")-InStr(1;[CategoryName];"/")-1))
 
Sowieso zit er ook een foutje in je formule, waardoor je denk ik er niets uit krijgt. Bij mij krijg ik in ieder geval wél een waarde terug, en de Foutmelding kan ik elimineren door een check op de tweede slash (in mijn voorbeeldje had niet elke record twee slashes).
Code:
Categorie: IIf(InStr(InStr(1;[CategoryName];"/")+1;[CategoryName];"/")=0;"";
Mid([CategoryName];InStr(1;[CategoryName];"/")+1;InStr(InStr(1;[CategoryName];"/")+1;
[CategoryName];"/")-InStr(1;[CategoryName];"/")-1))

het werkt prima als er 2x of meer keer een / is, maar als er alleen aan het begin een / is en aan het eind niet dan komt er geen waarde terug.

nog een vraag, misschien nog iets moeilijker maar ik heb de volgende combinatie:
/MOE college/leerling PO/leerling
ik wil alleen het 2de deel ( vet gedrukt hebben),? is dat ook mogelijk?

zover al bedankt, groet Jan
 
Dat kan, maar dan moet je de zoekstring dus nóg verder specificeren: je zoekt nu naar de 1e en de 2e verschijning van de slash, dat moet dan dus de 2e en 3e worden. De code voor de tweede heb je al, die kan je dus nog een keer uitbreiden om naar de derde te zoeken.

Overigens: vertel eens wat het nut is van het compleet quoten van mijn vorige bericht? Ik zie 'm namelijk niet....
 
dank voor je antwoord, ik ga dat zo proberen om de string verder uit te werken zoals jij beschrijft.

ik denk dat ik dat gewoon verkeerd heb gedaan, dat was niet de bedoeling. excuus
groet Jan
 
Als je het echt netjes en flexibel wilt maken, kan je een eigen functie bouwen. Die zou dan drie parameters kunnen krijgen: string die je doorzoekt, scheidingsteken ("/" in jouw geval) en na het hoeveelste scheidingsteken je de tekst wilt hebben.
Je kan dan ook inbouwen dat de functie eerst controleert of er wel genoeg scheidingstekens in de string aanwezig zijn.
 
Ik heb de functie voor de aardigheid eens uitgewerkt en hij is verrassend kort geworden:
Code:
Function DeelVanString(Tekst As String, Scheidingsteken As String, Positie As Byte) As Variant
    Dim TekstArray() As String
    
    TekstArray = Split(Tekst, Scheidingsteken)
    
    If Positie > UBound(TekstArray) Then
        DeelVanString = "*** te weinig scheidingstekens in tekst ***"
    Else
        DeelVanString = TekstArray(Positie)
    End If
End Function
 
En dan te bedenken dat-ie nog veel korter kan:
Code:
Function SplitTekst(Veld As String, Teken As String, Optional Positie As Integer) As String
Dim arr As Variant
    arr = Split(Veld, Teken)
    On Error GoTo Hell
    If Positie > 0 Then SplitTekst = arr(Positie) Else: SplitTekst = arr(LBound(arr))
    Exit Function
Hell:
SplitTekst = ""
End Function
 
mag ik jullie bedanken voor het mee denken, ik ben het aan het proberen en gaat lukken zo te zien,

groet Jan
 
Terug
Bovenaan Onderaan