2016-03-14 47 views
1

您好,我有一個宏查看sheet1上的文本並查看sheet2上的單詞列表。如果sheet1上的sheet2有任何匹配的單詞,則單詞將變爲紅色。我如何修改我的下面的宏,以便它查看列A中的所有文本,而不僅僅是A3,使用範圍(「A:A」)時我不斷收到錯誤。另外,如何讓這個宏不考慮大小寫?例如:單詞「測試」在詞庫中,所以如果「測試」位於單頁1中,它將被突出顯示,但不會顯示「測試」一詞。修改excel宏以查看整列而不是單個單元格

Sub wordbank() 
Set ws1 = Sheets("Sheet1") 
Set ws2 = Sheets("Sheet2") 
For Each c In ws2.Columns(1).SpecialCells(2) 
    l = Len(c.Value) 
    p = InStr(1, LCase(ws1.[A3].Value), LCase(c.Value)) 
    Do Until p = 0 
     With ws1.[A3] 
     b = Asc(.Characters(Start:=p - 1, Length:=1).Text) 
     a = Asc(.Characters(Start:=p + l, Length:=1).Text) 
     If (a < 97 Or a > 122) And (b = 32 Or b = 34) Then _ 
      .Characters(Start:=p, Length:=l).Font.Color = vbRed 
      p = InStr(p + l + 1, .Value, c.Value) 
     End With 
    Loop 
Next 
End Sub 
+3

你會以另一種循環來雖然A. –

回答

2

事情是這樣的:(未經測試)

Sub wordbank() 
Set ws1 = Sheets("Sheet1") 
Set ws2 = Sheets("Sheet2") 
For Each c In ws2.Columns(1).SpecialCells(2) 
    l = Len(c.Value) 
    For Each cel in ws1.Columns(1).SpecialCells(2) 
     p = InStr(1, LCase(cel.Value), LCase(c.Value)) 
     Do Until p = 0 
      With cel 
       b = Asc(.Characters(Start:=p - 1, Length:=1).Text) 
       a = Asc(.Characters(Start:=p + l, Length:=1).Text) 
       If (a < 97 Or a > 122) And (b = 32 Or b = 34) Then _ 
       .Characters(Start:=p, Length:=l).Font.Color = vbRed 
       p = InStr(p + l + 1, .Value, c.Value) 
      End With 
     Loop 
    Next cel 
Next c 
End Sub 
+0

如果這對你的作品請用綠色的對勾接受。 – Chrismas007

+0

這真棒,你是一個野獸! – Tai

+0

@太平洋如果有效,請接受帶綠色複選標記的答案。 – Chrismas007

相關問題