excel vba-提取2个字符之间的文本

如果我有这个专栏:

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

我需要一个VBA函数(注意,这些开始和结束string只会在单元格中出现一次):

extract_val(细胞,start_str,end_str)

即。 extract_val(A1,“(”,“)”)并给出结果:

 8,3 20 

我只需要在其他vba代码中使用这个函数,而不是把它作为表单中的公式。

更新(感谢回答,我解决了:)

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

你可以使用instr在string中定位一个字符(例如返回'(' )的位置,然后你可以用'('')'的位置使用mid来提取一个substing。

像(从记忆中):

 dim str as string dim openPos as integer dim closePos as integer dim midBit as string str = "NUMBER(8,3)" openPos = instr (str, "(") closePos = instr (str, ")") midBit = mid (str, openPos+1, closePos - openPos - 1) 

如果这些字符不在string中,您可能需要添加错误检查。

如果string是“A的值是[1.0234],B的值是[3.2345]”

如果你想提取B的值即3.2345,那么

 firstDelPos = InStrRev(textline, “[“) ' position of start delimiter secondDelPos = InStrRev(textline, “]”) ' position of end delimiter stringBwDels = Mid(textline, firstDelPos + 1, secondDelPos – firstDelPos – 1) ' extract the string between two delimiters MsgBox (stringBwDels) ' message shows string between two delimiters