Access-o-Mania

Office-Forum (Deutsch/German) => Microsoft Excel => Thema gestartet von: silentwolf am Oktober 28, 2016, 11:14:30

Titel: Custom Function erstellen?
Beitrag von: silentwolf am Oktober 28, 2016, 11:14:30
Hallo liebe Experten,
Leider hab ich mal wieder ein kleines Problem und ich komme nicht dahinter wie ich diese custom function korrigieren muss damit ich den gewünschten Wert zurück bekomme.
Diese Formel liefert mir eigentlich genau das richtige Ergebnis zurück
=LINKS(TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256);SUCHEN(" ";TEIL(D2;SUCHEN("Mandatsnummer";D2);256))+1)))
Nur möchte ich diese Formel nun auch als custom function in excel vba erstellen.
Dazu folgender Ansatz
Function ExtraktMandatsnummer(strText As String) As String
    Dim intAnzahl As Integer
    Dim strSearch As String
   
    strSearch = "Mandatsnummer"
    intAnzahl = 256
   
    If IsNull(strText) Then
        ExtraktMandatsnummer = Null
    Else
'        ExtraktMandatsnummer = Left(Mid(strText, Search(strSearch, strText), intAnzahl), Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl) & _
'            Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl), Search(" ", Mid(strText, Search(strSearch, strText), intAnzahl)) + 1)))


'    ExtraktMandatsnummer = Left(Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256) & _
'    WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search("Mandatsnummer", strText), 256)) + 1)))

    ExtraktMandatsnummer = Left(Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl) & _
    WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl), WorksheetFunction.Search(" ", Mid(strText, WorksheetFunction.Search(strSearch, strText), intAnzahl)) + 1)))

    End If
End Function


Ich habe die ausgeklammerten Beispiele noch nicht gelöscht damit man erkennen kann welche Arten ich bereits versucht habe.
Wie auch immer ..
Das soll erreicht werden.. in einen Text ist eine Mandatsnummer: xxx-xxx enthalten. Diese Text kann irgendwo im Text enthalten sein.. Wie gesagt die Formel funktioniert und gibt mir alles richtig zurück.
Meine Function aber liefert mir nur Mandatsnummer: also keine Zahlen danach zurück.
Das heist es muss ein Fehler mit den " " im code ein Problem sein..
Was mach ich denn falsch oder was muss ich denn ändern um es zu laufen zu bringen?

Kann mir hier bitte jemand helfen? Wäre schön wenn ich es in einer function nutzen könnte!

Mfg
Albert

P.S.
Hier noch ein paar Beispiel Texte um die Formel zu testen.. und zu sehen wie diese aufgebaut sind.

Tankstelle Waschanlagen Creditor ID: AT05ZZZ00000012747 Mandatsnummer: 161-2323A92A91 Auftraggeberreferenz: 1377 REF: 205061607012AEI-92EC5Q3GU791

Zürich Versicherungs- Aktiengesellschaft Schwarzenbergplatz 15 1015 Wien Creditor ID: AT33ZZZ00000005065 Mandatsnummer: V-045708551-20140805 Auftraggeberreferenz: 045708551 REF: 1200016070111525624692004888
Titel: Re: Custom Function erstellen?
Beitrag von: Lachtaube am Oktober 29, 2016, 01:54:35
Quick and dirty:Function ExtraktMandatsnummer$(ByVal AText$)
   Const FindWhat$ = "Mandatsnummer:"
   Dim pos&, endpos&
   
   pos = InStr(AText, FindWhat)
   If pos Then
     pos = pos + Len(FindWhat)
     Do While Mid$(AText, pos, 1) = " "
       pos = pos + 1
     Loop
     endpos = InStr(pos, AText, " ")
     If endpos Then
       ExtraktMandatsnummer = Mid$(AText, pos, endpos - pos)
     Else
       ExtraktMandatsnummer = Mid$(AText, pos)
     End If
   End If
End Function
Titel: Re: Custom Function erstellen?
Beitrag von: silentwolf am Oktober 30, 2016, 15:02:01
Hallo Lachtaube,

vielen Dank für Deine Antwort!