【Word VBA】選択されている文字列を、文書内で強調表示する

2011年6月1日

『検索された項目の強調表示』機能 Word2007」や「Word2010における検索機能の紹介」で紹介した強調表示に関するマクロです。

選択されている文字列について、文書中で強調表示します。
Word2007以降に搭載された機能である、HitHighLight メソッドを用いました。

このマクロでできること

Word文書中で文字列を選択している場合には、その文字列を文書全体で探して、同じ部分を強調表示(蛍光ペンは黄色、文字色は赤に設定)します。

選択部分から上だけ、または下だけ、というような部分的な強調表示はできません。あくまでも、文書全体で対応箇所が強調表示されます。

1.まず、文字列を選択します。

16-06-241

2.マクロを実行します。

16-06-242

マクロの解説

検索ルールは、「検索と置換」ダイアログボックスにあるものと同等のことができますので、ワイルドカードも使えます。(今回のマクロでは特に指定していません)

マクロ(1)の12行目、13行目(または、マクロ(2)の6行目、7行目)を変更すれば、強調表示する表現方法(蛍光ペンの色、文字色)を変更できます。

また、選択されている文字列の操作に関するマクロの記述は、「選択されている文字列を文書内で検索するマクロ」に似ていますので、ご覧ください。

もう一度繰り返し書きますが、前半のIfステートメントによる操作は、重要です。

Wordの仕様として、文字列が選択されていない場合にSelection.Textにて文字を取得すると、カーソルの右側の文字列が自動的に選択されてしまいます。

よって、文字が選択されていない場合(Selection.Start = Selection.End)には意図しない文字を選択することになるため、マクロ(1)のように前半部分で条件をいれています。(「【1行マクロ】文書中で文字列を選択しているかどうか調べる」に詳しく記載)

気にされない方は、マクロ(2)のようにしてもいいかもしれません。
短くなります。

マクロ(1)


Sub Text_HitHighLight_1()
  '選択中の文字列を文書中で強調表示
  Dim myText As String
  If Selection.Start = Selection.End Then
    Exit Sub
  Else
    myText = Selection.text
  End If
  With ActiveDocument.Content.Find
    .ClearHitHighlight
    .HitHighLight FindText:=myText, _
           HighlightColor:=wdColorYellow, _
           TextColor:=wdColorRed
  End With
End Sub

マクロ(2)


Sub Text_HitHighLight_2()
  '選択中の文字列を文書中で強調表示
  With ActiveDocument.Content.Find
    .ClearHitHighlight
    .HitHighLight FindText:=Selection.Text, _
           HighlightColor:=wdColorYellow, _
           TextColor:=wdColorRed
  End With
End Sub

-コード
-,