我對VBA有點新,而且我確實嘗試搜索該主題的論壇,但我不確定是否使用了正確的詞進行搜索。這是我的問題:使用正則表達式搜索表中缺少的信息不會提取所有匹配的值
我正在使用VBA提取與正則表達式缺少的信息。假設我有一張包含電話號碼和傳真號碼的文字表格。我想將這些數字收集到一張表格中。到目前爲止,我的代碼工作正常,但是當出於某種原因我有多個數字(比如常規和800#)時,只有一個數字被檢索到,而其他數字則沒有。我怎樣才能將所有結果添加到表格中?
查詢:
爲(regxtr)函數SELECT regxtr(![表1] [字段1])AS電話FROM表1;
VBA代碼:
Option Compare Database
Function regxtr(ByVal Target As String) As String 'Target is the field we are 'extracting from
Dim re As New RegExp
Dim oMatches As Object
Dim oMatch As Object
Dim n As Long
n = 0
'Set re = CreateObject("vbscript.regexp")
With re
.Global = True
.IgnoreCase = True
.Multiline = True
.Pattern = "(\d\d\d.\d\d\d\.\d\d\d\d)" 'keeping the pattern simple for now just to test
End With
'test before executing
If re.Test(Target) = True Then
Set oMatches = re.Execute(Target)
'attempt to get all matches. THIS IS WHERE I AM FAILING
For n = 0 To oMatches.Count - 1
Set oMatch = oMatches(n)
regxtr = oMatch.Value
n = n + 1 ' does this even belong here?
Next
End If
End Function
我怎樣才能使所有的比賽將填充在查詢該領域[電話]?任何幫助將不勝感激。
它如果您從電話號碼字段中提供了示例數據,將會更容易地爲您提供幫助,並且更準確地解釋了代碼中無法使用的內容。 – alan
回答你的問題「這是否屬於這裏?」答案是否定的。 For'循環會在每次迭代時自動增加'n'的值。就像@alan所說的那樣,一些示例數據和示例輸出會很有用。 – JimmyPena
在你的循環中,你每次都重置regxtr的值:'regxtr = oMatch.Value'。所以它一次只能保持一個值。那是對的嗎? – JimmyPena