Excel シート (Excel 2010 を使用) の選択した列にある単語/フレーズのすべてのインスタンスを赤と太字で強調表示したいと思います。たとえば、列 A1:A10 に「茶色のキツネは他の茶色のキツネが好き」という文が含まれている場合、この範囲内の「茶色のキツネ」のすべてのインスタンスを強調表示したいと思います。
ここで、すべてのセルで「茶色のキツネ」の最初のインスタンスのみを強調表示するマクロを見つけました。
Sub colorText()
Dim cl As Range
Dim startPos As Integer
Dim totalLen As Integer
Dim searchText As String
' specify text to searh.
searchText = "brown fox"
' loop trough all cells in selection/range
For Each cl In Selection
totalLen = Len(searchText)
startPos = InStr(cl, searchText)
If startPos > 0 Then
With cl.Characters(startPos, totalLen).Font
.FontStyle = "Bold"
.ColorIndex = 3
End With
End If
Next cl
End Sub
このマクロを編集して、「茶色のキツネ」の最初のインスタンスだけでなく、すべてのインスタンスを強調表示したいと思います。試みとして、私は次のことを試しました:
Sub colorText()
Dim cl As Range
Dim startPos As Integer
Dim totalLen As Integer
Dim searchText As String
Dim endPos As Integer
Dim testPos As Integer
' specify text to search.
searchText = "brown fox"
' loop trough all cells in selection/range
For Each cl In Selection
totalLen = Len(searchText)
startPos = InStr(cl, searchText)
testPos = 0
Do While startPos > testPos
With cl.Characters(startPos, totalLen).Font
.FontStyle = "Bold"
.ColorIndex = 3
End With
endPos = startPos + totalLen
testPos = testPos + endPos
startPos = InStr(testPos, searchText)
Loop
Next cl
End Sub
ただし、これはまだ「brown fox」の最初のインスタンスをフォーマットするだけです。
どんな考え/編集も大歓迎です。