2016-03-28 74 views
0

有一個問題,我似乎無法擊敗。已經嘗試過各種inStr方法等,但沒有運氣。VBA在基於字符格式的字符串中查找字符串

所以我有一個包含一些像「texttext [email protected] 2015年12月12日1234567891 PST」的字符串

的問題是,我需要提取基於這樣的事實了「1234567891」,它是數字,其中有10個,在文本中沒有永久位置,每次都可以在不同的位置。

有沒有辦法做到這一點?我的搜索導致我將字符串拆分爲「」,但我無法弄清楚如何將數字與「##########」格式進行比較以獲得結果。

+1

嘗試使用'ISNUMERIC()'和'Len()= 10' –

+1

使用類似[0-9](10)的模式的VBA UDF和[regex]。 – Jeeped

回答

4

考慮:

Sub whatever() 
    s = "texttext [email protected] 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 
+0

謝謝,這應該是個訣竅!沒有想到Len,很好。 – user2446928

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 

注意,長度由括號,不括號因爲我原來規定封閉。

+1

鑑於已發佈的內容,我會在正則表達式的周圍添加字邊界標記'\ b'。 –