excel-vba - extrahieren von text zwischen 2 Zeichen

Hätte ich in dieser Spalte:

ColA
-----
NUMBER(8,3)
NUMBER(20)

Ich brauche eine VBA-Funktion, das würde gehen (Hinweis: diese start-und end-Zeichenfolge sollte immer nur einmal vorkommen in einer Zelle):

extract_val(Zelle,start_str,end_str)

ie. extract_val(A1,"(",")") und geben Sie die Ergebnisse:

8,3
20

Nur muss ich um diese Funktion zu verwenden, die in anderen vba-code nicht indem ich es wie eine Formel auf dem Blatt.

UPDATE (vielen Dank für die Antwort, ich ließ mich auf:)

---------------------------
Public Function extract_value(str As String) As String
Dim openPos As Integer
Dim closePos As Integer
Dim midBit As String
 On Error Resume Next
openPos = InStr(str, "(")
 On Error Resume Next
closePos = InStr(str, ")")
 On Error Resume Next
midBit = mid(str, openPos + 1, closePos - openPos - 1)
If openPos <> 0 And Len(midBit) > 0 Then
extract_value = midBit
Else
extract_value = "F"
End If
End Function

Public Sub test_value()
MsgBox extract_value("NUMBER(9)")
End Sub
Möglicherweise möchten Sie die closePos line starten an der position, wo er fand die openPos, sonst könnten Sie finden eine schließende Klammer VOR der Klammer, aber angesichts Ihrer Beispiele ist dies unwahrscheinlich.
etwas off-Bereich Hinweis: stackoverflow.com/questions/2757477/trap-error-or-resume-next

InformationsquelleAutor toop | 2011-09-03

Schreibe einen Kommentar