我试图创建一个函数,该函数将通过字符串部分给出数字的值。我尝试的各种版本都没有按计划工作,我在http://www.utteraccess.com/forum/Find-number-string-Ins-t1746052.html上找到了一个代码片段。
我试图从中提取值的字符串如下所示:
A11, A21A23, A25, A23A21, etc.
在一些特殊情况下,字符串是:
A23 D0, A23 D1, A23A21 D0, etc.
出于某种原因,在包含 D 的实例中,代码将为 D 后面的任何数量添加一个零。因此A23 D0
返回:23
,但它应该A23 D1
返回230
。 A23 D3
返回23000
,依此类推。
我对 VBA 相当陌生,我无法弄清楚是什么导致字母 D 添加尾随零,而其他字母代替 D 没有相同的效果。
VBA 脚本如下:
Public Function GetNumFromStringFloating(strText As String, Optional intPos As Integer = 1) As String
'? GetNumFromStringFloating("12*TLG AUTVTG18871890AAUG") = 12
'? GetNumFromStringFloating("12*TLG AUTVTG18871890AAUG",3) = 12
'? GetNumFromStringFloating("12*TLG AUTVTG18871890AAUG",14) = 18871890
'? GetNumFromStringFloating("12*TLG AUTVTG18871890AAUG",-1) = 18871890 (Reverse Search)
Dim X As Integer
If intPos > 0 Then
For X = intPos To Len(strText)
If IsNumeric(Mid(strText, X, 1)) Then
GetNumFromStringFloating = val(Mid(strText, X) & "")
Exit For
End If
Next X
Else
For X = Len(strText) To Abs(intPos) Step -1
If IsNumeric(Mid(strText, X, 1)) Then
GetNumFromStringFloating = val(Mid(strText, X) & "")
Else
If GetNumFromStringFloating <> "" Then Exit For
End If
Next X
End If
End Function