2016-07-05 67 views
0

我使用的這部分代碼常規功能:輸出使用「對於每個」對象到一個Excel範圍

Set Matches = oReg.Execute(tack) 
For Each oMatch In Matches 
    Worksheets("Sheet1").Cells(i, t) = oMatch.Value 
    t = t + 1  
Next 

,我有麻煩印刷在我的工作表不同細胞oMatch.Value,他們都是打印在同一個單元格中

我該如何更改它以將值寫入不同的單元格?

+2

你是怎麼定義'i'和't'並設置初始值的?從你提供的代碼中,它應該把每個值移到下一列,儘管它沒有顯示你定義't'的位置並設置了它的初始值。在非明確的背景下,我不明白爲什麼它不起作用。 – nbayly

+0

可能是從查詢返回的只有1行。你能告訴你如何定義'Matches'?我想它是一個記錄集。如果可以在查詢後放置一箇中斷,並在Watch屏幕上查看它傳遞的值是什麼? – nbayly

+0

@nbayly,它不是一個查詢,它是來自正則表達式的匹配列表。匹配是一個變體嗎?你能發佈你的完整代碼嗎? – Kyle

回答

0

這個代碼把每兩場比賽中分離細胞

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,則只會獲得一次匹配。