|  
                                             
	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ß, 
     |