Hallo,
alles klar, dachte ich mir schon, am besten alles in eine Function auslagern, die Werte stehen dann alle in den beiden Double-Vars, die String-Vars strText, strSearch1/2 werden nur für die Bsp-Msgbox benötigt, können dann raus...
Option Explicit
Public Sub test()
Const SEARCH_STRING1 As String = "| PUN-6X1-BL | Art Nr.: 159664 | VPE= 1m | Preis= 1,20€"
Const SEARCH_STRING2 As String = "*VPE*"
Const SEARCH_STRING3 As String = "*Preis*"
Dim astrArray() As String
Dim ialngIndex As Long, dblValue1 As Double, dblValue2 As Double
Dim strText As String, strSearch1 As String, strSearch2 As String
strSearch1 = Mid$(String:=SEARCH_STRING2, Start:=2, Length:=Len(SEARCH_STRING2) - 2)
strSearch2 = Mid$(String:=SEARCH_STRING3, Start:=2, Length:=Len(SEARCH_STRING3) - 2)
astrArray = Split(Expression:=SEARCH_STRING1, Delimiter:="|")
For ialngIndex = 0 To UBound(astrArray)
If astrArray(ialngIndex) Like SEARCH_STRING2 Then
dblValue1 = Search_Values(pvstrSearch:=astrArray(ialngIndex))
strText = strText & strSearch1 & " : " & dblValue1 & vbCr
ElseIf astrArray(ialngIndex) Like SEARCH_STRING3 Then
dblValue2 = Search_Values(pvstrSearch:=astrArray(ialngIndex))
strText = strText & strSearch2 & " : " & dblValue2 & vbCr
End If
Next
Call MsgBox(strText, vbExclamation)
End Sub
Public Function Search_Values(ByVal pvstrSearch As String) As Double
Const SEARCH_CHARS1 As String = "= "
Const SEARCH_CHARS2 As String = "m"
Const SEARCH_CHARS3 As String = "€"
Dim alngPos(1 To 4) As Long
alngPos(1) = InStr(1, pvstrSearch, SEARCH_CHARS1)
alngPos(2) = InStr(1, pvstrSearch, SEARCH_CHARS2)
alngPos(3) = InStr(1, pvstrSearch, SEARCH_CHARS3)
alngPos(4) = IIf(Right$(String:=pvstrSearch, Length:=1) = " ", 2, 1)
Search_Values = CDbl(Mid$(String:=pvstrSearch, _
Start:=alngPos(1) + 2, Length:=Len(pvstrSearch) - alngPos(1) - 1 - alngPos(4)))
End Function
Gruß,
|