2017-10-20 348 views
0

我有3列的表和行的數目不詳的和 我需要一個Word文檔中設置版式上的其他細胞可以在列1中搜索字符串「Sum」的宏。使用宏搜索表在Word中找到小區特定字符串,然後在同一行

如果找到完全匹配,則該宏必須將該行中剩餘兩個單元格的排版設置爲Word中的兩個不同的印刷格式,並刪除字符串「求和」小區1

該表可以包含字符串的許多實例‘和’,但他們西港島線alwaye在第一列。

我試過的代碼,我對編碼技能的缺乏表示歉意,但是我一直在做這個工作,一直工作得很好,直到「sum」的第一個實例,然後退出。

我使用這個代碼:

Sub FindSum() 

Dim oTbl As Table 
Dim oRow As Row 

Set myRange = ActiveDocument.Content 

    For Each oTbl In ActiveDocument.Tables 
     For Each oRow In oTbl.Rows 
      Selection.Find.Execute FindText:="Sum", ReplaceWith:="" 
      If Selection.Find.Found = True Then 
       Selection.MoveRight Unit:=wdCell 
       Selection.Style = ActiveDocument.Styles("Titel") 
       Selection.MoveRight Unit:=wdCell 
       Selection.Style = ActiveDocument.Styles("Citat") 
      End If 
     Next 
    Next 
End Sub 

我希望你能幫助我。

+0

單步的代碼測試表

的外)....調整編輯器窗口和文檔的大小,以便可以看到兩者。 ....應該讓你知道程序如何流動。 – jsotola

回答

0

這似乎通過使用鍵盤上的F8鍵(按下多次工作

忽略「總和」與兩個表

Option Explicit 

Sub FindSum() 

    Dim oTbl As Table 
    Dim stT As Long, enT As Long 
    Dim stS As Long, enS As Long 

    With Selection.Find    ' the settings remain until changed 
     .Text = "Sum" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindContinue 
    End With 

    For Each oTbl In ActiveDocument.Tables 

     oTbl.Columns(1).Select      ' not sure if this is required 

     Do While Selection.Find.Execute 

      stT = oTbl.Range.Start     ' table range 
      enT = oTbl.Range.End 

      stS = Selection.Range.Start    ' found text range 
      enS = Selection.Range.End 

      If stS < stT Or enS > enT Then Exit Do ' text found inside table ??? 

      Selection.Collapse wdCollapseStart 
      Selection.Find.Execute Replace:=wdReplaceOne 

      Selection.MoveRight Unit:=wdCell 
      Selection.Style = wdStyleTitle   ' original code was invalid 
      Selection.MoveRight Unit:=wdCell 
      Selection.Style = wdStyleHeading3 
     Loop 
     Selection.Collapse wdCollapseEnd 
    Next 
End Sub 
+0

非常感謝。這工作像一個魅力。 –

相關問題