用以下函数即可:Public Function GetNumInStr(ByVal str As String) As String Dim i As Integer Dim tempStr As StringFor i = 1 To Len(str) If IsNumeric(Mid(str, i, 1)) Then tempStr = tempStr & Mid(str, i, 1) End If Next iGetNumInStr = tempStr End Function
先遍历字符串,不是数字的都不要,得到一个新字符串。 再用val()就可以了。 Dim str As String Dim s As String Dim i As Integer str = "1-199-222-30" For i = 1 To Len(str) If IsNumeric(Mid(str, i, 1)) Then s = s & Mid(str, i, 1) End If Next MsgBox s MsgBox Val(s) 你自己把这段代码改成函数吧
推荐使用这个方法,放到vb里面也可以用的,改进下: Dim reg As Object Set reg = CreateObject("vbscript.regexp") reg.Pattern = "[^\d]" reg.Global = True MsgBox reg.Replace("1-199-222-30", "")
Dim i As Integer
Dim tempStr As StringFor i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
tempStr = tempStr & Mid(str, i, 1)
End If
Next iGetNumInStr = tempStr
End Function
set reg = createobject("vbscript.regexp")
reg.pattern = "[^0-9]"
reg.global = true
msgbox reg.replace("1-199-222-30","")
再用val()就可以了。
Dim str As String
Dim s As String
Dim i As Integer str = "1-199-222-30"
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
s = s & Mid(str, i, 1)
End If
Next
MsgBox s
MsgBox Val(s)
你自己把这段代码改成函数吧
Dim reg As Object
Set reg = CreateObject("vbscript.regexp")
reg.Pattern = "[^\d]"
reg.Global = True
MsgBox reg.Replace("1-199-222-30", "")