【Word VBA】カーソル直前の蛍光ペンを解除するWordマクロ

2017年10月7日

Wordで蛍光ペンで着色された全角文字の直後に文字を入力すると、直前の蛍光ペンの範囲が延長されて新たに入力した文字も蛍光ペンで着色されてしまいます。

たとえば、以下のような現象が起こるのです。

(文字入力前)

(文字入力後)

「本」には蛍光ペンはつかなくてもいいのですが、このように着色されてしまいます。

半角文字の場合には問題がないのでずが、全角文字の場合にのみ起こる現象のようです。

これは、Wordの仕様なのですが、上書き翻訳をしている私たちにとっては悩みの種ですね。

ここで役立つマクロの紹介です。

すでにWord用の上書き翻訳に必要な機能をパッケージにした「上書き翻訳ツール」にはかなり前から実装されておりましたが、ブログで紹介していなかったので今回の記事で紹介します。

この手の機能は、ショートカットキーに登録してすぐに使えるようにしておくといいですね。

このマクロでできること

選択範囲の蛍光ペンを解除します。

文字が選択されていない場合には、カーソルの直前の1文字の蛍光ペンを解除します。

実行前

冒頭で説明したように、不要な蛍光ペンが入力されてしまったときに実行します。

実行後

カーソルのある直前の1文字の蛍光ペンのみが解除されます。

マクロの解説

5行目で、文字列が選択されているのか否かを判定します。

文字列が選択されていない場合、Selection(カーソル位置)のTypeプロパティwdSelectionIPという値になります。

この場合には、カーソル位置の直前の1文字をRangeオブジェクトに設定し(7行目)、この範囲の蛍光ペンを解除します(9行目)。

文字列が選択されている場合には、選択範囲の蛍光ペンを解除します(12行目)。

マクロ


Sub 蛍光ペンを解除()

 Dim myRange As Range
 
 If Selection.Type = wdSelectionIP Then
  With Selection
   Set myRange = ActiveDocument.Range(.Start - 1, .Start)
  End With
  myRange.HighlightColorIndex = wdNoHighlight
  Set myRange = Nothing
 Else
  Selection.Range.HighlightColorIndex = wdNoHighlight
 End If
 
End Sub

-コード
-, , ,