2014-10-11 30 views
0

我試圖將Word文檔中的紅色文本搜索限制爲單個表格單元格。無論我嘗試什麼,都會搜索整個文檔。據我有以下:限制找到Word中的文本選擇(不是整個文檔)

Sub FindRedText() 
    Dim MyArray() As String 
    Dim result As String 
    Dim i As Long 

'Dim RngFnd As Range 

i = 0 

Selection.SelectCell 
'Set RngFnd = Selection.Range 
Selection.Find.ClearFormatting 
Selection.Find.Font.Color = wdColorRed 

Do While Selection.Find.Execute = True 
'If RngFnd.InRange(RngFnd) Then 
     ReDim Preserve MyArray(i) 
     MyArray(i) = Selection 
     i = i + 1 
'Else 
'End If 
    Loop 

    If i = 0 Then 
     MsgBox "No Red Text" 
     Exit Sub 
    End If 

    For i = LBound(MyArray) To UBound(MyArray) 
     result = Join(MyArray, ", ") 
    Next i 

End Sub 

我已經離開我的評論中,以顯示我的失敗嘗試設置當前選擇的範圍。當我這樣做時,單元格中的所有文本都被複制到數組中。

作爲一個例子,說我有以下:

在表格單元1,1(選擇):「紅色文本1」,「藍色文本1」,「紅text2」中 在表格單元格1,2: 「red text3」

我的宏目前將「紅色文本1」,「紅色文本2」和「紅色文本3」放入我的數組和最終結果字符串中。我只想要「紅色文字1」和「紅色文字2」(即只搜索選定的單元格)。

回答

0

試試這個:首先選擇區域,然後運行它。

Sub FindSelectionColorText() 
Selection.Find.ClearFormatting 

With Selection.Find 
    .Text = "" 
    .Replacement.Text = "" 
    .Font.Color = RGB(255, 0, 0) 'wdColorRed 
    .Forward = True 
    .Wrap = wdFindAsk 
    .Format = True 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
    Selection.Find.Execute 
End Sub 

'如果答案有效,標記爲答案和/或upvote,否則評論發生了什麼。

+0

謝謝,但不工作,我需要它。我需要限制訪問一個單元格,而不需要任何用戶輸入。 – lebowski22 2014-10-15 07:16:52

+0

你是什麼意思,通過限制到一個單元格。你想從選擇文本中搜索紅色的文本,或者你想搜索紅色的預定義文本或什麼? – ZAT 2014-10-15 10:46:50

相關問題