VBA Tipp: Position des x-ten Vorkommens zurückgeben

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Die Funktion Instr benötigt einen absoluten Startwert. Es ist leider nicht so komfortabel, wenn man zum Beispiel wissen möchte, an welcher Position in einem String das 3te "i" steht.

Lösung

Public Function lPositionInBlock(sText As String, _
                                 sSearch As String, _
                                 Optional ByVal lVorkommen As Long = 0) As Long
 
 
'*************************************************************
'*
'*  Funktion    :        lPositionInBlock
'*
'*  Parameter   :        sText              = EinbabeString
'*                       sSearch            = Suchzeichenkette
'*                       lVorkommen         = Welches Vorkommen soll gezählt werden
'*
'*  Beschreibung:        Durchsucht eine Zeichenkette nach dem x-ten Vorkommen und gibt die
'*                       Position dieser Stelle zurueck
'*
'*  Rückgabe    :        bei Fehler         = 0
'*                       Erfolgreich        = Position des Vorkommens
'*
'*  Beispielaufruf :     Debug.Print lPositionInBlock("Ich bin ein Suchtext", "i",3)
'*
'*  Erklärung     :      Es wird vom 3ten i (hier aus "eIn" die Position zurück gegeben)
'*
'*
'*************************************************************
 
Dim i As Long
Dim j As Long
 
Dim laengeSuch As Long
 
laengeSuch = Len(sSearch)
 
For i = 1 To Len(sText)
 
  If Mid(sText, i, laengeSuch) = sSearch Then
    j = j + 1
    If j >= lVorkommen Then
      lPositionInBlock = i
      Exit For
    End If
  End If
Next i
 
End Function


Aufruf

Debug.Print lPositionInBlock("Ich bin ein Suchtext", "i", 3)
'Ergebnis = 10