這個代碼把每兩場比賽中分離細胞
Sub test()
Dim RE As VBScript_RegExp_55.RegExp, REMatches As VBScript_RegExp_55.MatchCollection
Dim REMatch As VBScript_RegExp_55.Match
Dim strData As String
Dim i As Long, t As Long
strData = "[step 1] title for substeps; [substep a] step a; [substep b] step b; [substep c] step c;"
i = 1: t = 1
Set RE = New VBScript_RegExp_55.RegExp
With RE
.MultiLine = False
.Global = True
.IgnoreCase = True
.Pattern = "\[substep [a-zA-Z]\](.*?); {1}"
End With
Set REMatches = RE.Execute(strData)
For Each REMatch In REMatches
Sheet1.Cells(i, t) = REMatch.Value
t = t + 1
Next REMatch
End Sub
您的循環前右,把Debug.Print Matches.Count
以確保有不止一個匹配。此外,如果您未將Global設置爲True,則只會獲得一次匹配。
你是怎麼定義'i'和't'並設置初始值的?從你提供的代碼中,它應該把每個值移到下一列,儘管它沒有顯示你定義't'的位置並設置了它的初始值。在非明確的背景下,我不明白爲什麼它不起作用。 – nbayly
可能是從查詢返回的只有1行。你能告訴你如何定義'Matches'?我想它是一個記錄集。如果可以在查詢後放置一箇中斷,並在Watch屏幕上查看它傳遞的值是什麼? – nbayly
@nbayly,它不是一個查詢,它是來自正則表達式的匹配列表。匹配是一個變體嗎?你能發佈你的完整代碼嗎? – Kyle