VBA根据字符格式在字符串中查找字符串

时间:2016-03-28 14:53:50

标签: string excel vba

有一个我似乎无法击败的问题。尝试了各种inStr方法等,但没有运气。

所以我有一个字符串,其中包含“texttext email@email.com 12/12/2015 1234567891 PST”

问题是我需要提取“1234567891”,因为它是数字,而且有10个,文本中没有永久位置,每次都可以在不同的地方。

有办法做到这一点吗?我的搜索让我将字符串拆分为“”,但我无法弄清楚如何将数字与“##########”格式进行比较以获得结果。

2 个答案:

答案 0 :(得分:4)

考虑:

Sub whatever()
    s = "texttext email@email.com 12/12/2015 1234567891 PST"
    ary = Split(s, " ")
    For Each a In ary
        If IsNumeric(a) And Len(a) = 10 Then MsgBox a
    Next a
End Sub

答案 1 :(得分:2)

作为我评论的附录,

Function tenDigits(str As String)
    Static rgx As Object

    If rgx Is Nothing Then
        Set rgx = CreateObject("VBScript.RegExp")
    End If

    With rgx
        .Global = False
        .Pattern = "[0-9]{10}"
        If .Test(str) Then tenDigits = .Execute(str)(0)
    End With

End Function

请注意,长度由大括号括起,而不是我最初所说的大括号