Jag vill ta ut ett nummer som finns mellan 2 st "-". Jodå det går med mid men du får även använda instring kommandot för att plocka ut detta värde. Använd instring för att få reda på var första - finns och därefter det andra. Sen kan du använda mid för att ta de värden som finns mellan dessa. Jag fick göra 4 expr. för att få ihop det men går det att göra i en sträng ?? Du skulle kunna använda en funktion liknande den här som jag hade liggandes, den bör dock kompletteras med felhantering. Så Här:Mitt i en sträng mellan "-" och "-"
Problemet är att stränglängden varierar, det ser ut så här.
11-100-11
111-100-111
1-100-111
osv.
Finns det någon möjlighet att söka ut detta ?? Mid fungerar ju inte.
Jag vill att detta skall vara ett expression i en query.
/Mattias GustavssonSv: Mitt i en sträng mellan "-" och "-"
Sv: Mitt i en sträng mellan
Glömde att det kan vara olika antal tecken mellan "-" & "_" tex.
1-10-100
11-10-100
1-100-1
osv....
/MattiasSv: Mitt i en sträng mellan
<code>
Sub main()
Debug.Print stringBetween("1-10-100", "-", "-")
Debug.Print stringBetween("11-10-100", "-", "-")
Debug.Print stringBetween("1-100-1", "-", "-")
End Sub
Function stringBetween(ByVal StringToSearch As String, _
Optional ByVal StartChar As String = "", _
Optional ByVal EndChar As String = "", _
Optional ByVal StartSearchPos As Integer = 1, _
Optional SearchMode As VbCompareMethod = vbTextCompare _
) As String
Dim strResult As String
Dim intCharPos As Integer
strResult = Mid(StringToSearch, StartSearchPos)
If Len(strResult) > 0 Then
'Justera strängens start
If Len(StartChar) > 0 Then
intCharPos = InStr(1, strResult, StartChar, SearchMode) + Len(StartChar)
If intCharPos > 0 Then
strResult = Mid(strResult, intCharPos)
Else
strResult = ""
End If
End If
If Len(EndChar) > 0 Then
intCharPos = InStr(1, strResult, EndChar, SearchMode)
If intCharPos > 0 Then
strResult = Left(strResult, intCharPos - 1)
Else
strResult = ""
End If
End If
End If
stringBetween = strResult
End Function
</code>
//
JanneSv: Mitt i en sträng mellan
Col 1: art_no
Col 2: Expr1: InStr([art_no];"-")
Col 3: Expr2: Mid([art_no];[Expr1]+1;3)
Col 4: Expr3: InStr([Expr2];"-")
Col 5: Expr4: IIf([Expr3]>0;Left([Expr2];[Expr3]-1);[Expr2])
/Mattias