InStrRev - VBA functie

InStrRev geeft de positie in de reeks waar de match voorkomt, maar de reeks wordt vanaf rechts gezocht.

Syntaxis

InStrRev(stringcheck, stringmatch, [ start, [ compare ]])

Voor volledige info, raadpleeg Verwijzingen naar Microsoft.

Extra toelichting

Op de oorspronkelijke pagina van Microsoft is voor het argument start de volgende toelichting gegeven: Numeric expression that sets the starting position for each search. If omitted, -1 is used, which means that the search begins at the last character position.

Hoewel dit klopt, had daar wat meer uitleg gegeven mogen worden wat we dan hier zullen doen. Let er op dat als het startpunt als een positieve waarde wordt meegegeven, vanaf de positie wordt gezocht waar de reeks vanaf de linkerkant voorkomt (lastige zin, maar het klopt). Welk startpunt ook meegegeven wordt, er wordt altijd van rechts naar links gezocht.
In de volgende voorbeelden wordt exact weergegeven hoe dit werkt.

Standaard

Geeft 8. Er is geen startpunt meegegeven, dus wordt gezocht vanaf het laatste karakter van de reeks. De gezochte reeks (een X in dit geval) staat (of beter gezegd: begint) op positie 8 (van links).

lngPos = InStrRev("abcde.fXg", "X")

Dit geeft eveneens 8 als resultaat, want: -1 betekent dat wordt gezocht vanaf het laatste karakter van de reeks. Dit is dus hetzelfde als het vorige voorbeeld.

lngPos = InStrRev("abcde.fXg", "X", -1)

Met positieve waarde als startpunt

In de volgende voorbeelden geven we een startpunt op met een positieve waarde. Het verschil is dat dan niet vanaf het laatste karakter in de reeks wordt gezocht, maar vanaf de positie van de linkerkant. Echter, InStrRev zoekt altijd van rechts naar links.

Geeft 0. De reden is dat vanaf positie 1 de reeks niet is gevonden omdat van rechts naar links (vanaf die positie) wordt gezocht.

lngPos = InStrRev("abcde.f.g", "X", 1)

Geeft 0. Ook hier wordt de reeks niet gevonden.

lngPos = InStrRev("abcde.fXg", "X", 3)

Geeft 6. Vanaf positie 6 wordt gezocht van rechts naar links, en deze positie is meteen de gezochte reeks. Die reeks staat op de positie vanaf wordt gezocht.

lngPos = InStrRev("abcdeX.fg", "X", 6)

Geeft 8. Vanaf positie 9 naar links is het positie 8 waar voor het eerst de gezochte reeks voorkomt.

lngPos = InStrRev("abcde.fXg", "X", 9)