Tja, nichts mehr los hier, was? Kleiner Hinweis auf ein weiteres Problem speziell bei den beliebten Script-Äquivalenten für @Formeln:
Um uns die Arbeit nicht zu erschweren anstatt sie zu erleichtern, muss man eigentlich zu vielen Sachen
dazuschreiben, in welcher
Notes-Version sie überhaupt sinnvoll sind. In R5 ist z.B. dank FullTrimm, StrLeft, etc. vieles gar nicht mehr erforderlich, was man für R4 zusammengebastelt hatte. Von R6 will ich noch gar nicht reden. Mir ist es zumindest noch nicht gelungen, einen Unterschied zwischen den @Formeln und den STR-Funktionen festzustellen.
Falls es trotzdem noch jemand braucht, kommen hier mal meine Versionen von @Left, @LeftBack, @Right, @RightBack und @Middle (@MiddleBack habe ich nicht hingekriegt
).
Mir gefallen sie besser, als das was schon in der DB steht, weil
1. grundsätzlich auch der Leerstring als Suchstring abgefragt und @Formel-konform bearbeitet wird.
2. die Back-Versionen statisch kürzer und dynamisch schneller sind
3. die bisherigen Back-Versionen manche Eingaben falsch verarbeiten
Function atLeft(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPos As Long
atLeft = ""
If Not strSub = "" Then
lngPos = Instr(strToProcess, strSub)
If lngPos > 0 Then
atLeft = Left$(strToProcess, lngPos - 1)
End If
End If
End Function
Function atLeftBack(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPosCur As Long
Dim lngPosNext As Long
atLeftBack = ""
If Not strSub = "" Then
lngPosCur = 0
Do
lngPosNext = lngPosCur + 1
lngPosCur = Instr(lngPosNext, strToProcess, strSub)
Loop While lngPosCur <> 0
If lngPosNext > 1 Then
atLeftBack = Left$(strToProcess, lngPosNext - 2)
End If
End If
End Function
Function atRight(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPos As Long
atRight = ""
If Not strSub = "" Then
lngPos = Instr(strToProcess, strSub)
If lngPos > 0 Then
atRight = Right$(strToProcess, Len(strToProcess) - (lngPos - 1 + Len(strSub)))
End If
End If
End Function
Function atRightBack(Byval strToProcess As String, Byval strSub As String) As String
Dim lngPosCur As Long
Dim lngPosNext As Long
atRightBack = ""
If Not strSub = "" Then
lngPosCur = 0
Do
lngPosNext = lngPosCur + 1
lngPosCur = Instr(lngPosNext, strToProcess, strSub)
Loop While lngPosCur <> 0
If lngPosNext > 1 Then
atRightBack = Right$(strToProcess, Len(strToProcess) - (lngPosNext - 2 + Len(strSub)))
End If
End If
End Function
Function atMiddle(Byval strToProcess As String, Byval strSubStart As String, Byval strSubEnd As String) As String
atMiddle = atLeft(atRight(strToProcess, strSubStart), strSubEnd)
End Function