【发布时间】:2011-11-09 17:50:59
【问题描述】:
如果我有这个专栏:
ColA
-----
NUMBER(8,3)
NUMBER(20)
我需要一个可以运行的 VBA 函数(注意这些开始和结束字符串只会在单元格中出现一次):
extract_val(cell,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
【问题讨论】:
-
您可能想让 closePos 线从它找到 openPos 的位置开始,否则您可以在左括号之前找到一个右括号,但鉴于您的示例,这不太可能。