Ich lese mit einer UDF aus Strings den ersten Wert aus, der mit runden Klammern umgeben ist.
Z.B. "xxxxx(100)yyy" = 100
Wenn mehrere "Klammerwerte" in einem String vorhanden sind, wird nur der erste ausgegeben.
Z.B. "xx(5)yy(7)" = 5
Nun kommt es vor, dass an erster Stelle ein alfanumerischer "Klammerwert" steht und dann ein numerischer "Klammerwert" folgt.
Z.B. "xx(abc)(513)" = "abc"
Lieber hätte ich, wenn in diesem Fall der erste numerische Wert (513) geliefert wird. Um dies zu bewerkstelligen, brauche ich Hilfe.
Ich möchte nun zuerst den ganzen String nach "(" Klammern absuchen. Falls jeweils ein alfanumerischer Wert folgt, möchte ich die runde Klammer "(" durch eine eckige Klammer "[" ersetzen. Dann suche ich den ganzen String nach ")" Klammern ab. Falls jeweils ein alfanumerischer Wert vorangehe, ersetze ich diese mit einer eckigen "]" Klammer.
Beispiel-String:
"xx(abc)(513)"
Direktbereich
?InStr(1, "xx(abc)(513)", "(", vbTextCompare)
ergibt Stelle 3
Wie frage ich nun ab, ob das nachfolgende Zeichen (4. Stelle = "a") nicht numerisch ist, und falls zutreffend, wie ersetze ich die erste Klammer durch eine eckige Klammer?
Die ähnliche Problemstelle mit der schliessenden Klammer müsste ich dann davon ableiten können.
Danke für jeden Hinweis.
Gruss, Peter