【Word VBA】カーソル位置の段落に取り消し線を引くWordマクロ

2016年12月7日

先日の記事「【読み物】Wordをアウトライナーとして使う!」にて、私はアウトライナーとしてWordを使いはじめたことを紹介しました。

最近は、一日のToDoリストもアウトライナーで作っております。

最初は実施した項目を削除してました。

そのうち、実施した項目をCompleteという項目の下のレベルに自動で移動するマクロなんてものも作ってみました。

これはこれでいいのですが、リストが空になるとなんとなく達成感がありません(笑)。

やっぱり、実施した項目が見えた方がよいかなと思いまして、実施済みの項目に取り消し線を引くマクロを作ってみました。

このマクロでできること

カーソルがある段落の取り消し線を設定します。取り消し線がない場合には取り消し線を設定し、取り消し線がある場合には解除します。

実行前

アウトラインモードで表示されています。

取り消し線

実行後

取り消し線

選択されている段落が複数段落の場合には、すべての段落に取り消し線を引きます。

実行前

印刷レイアウトで表示されています。当然、いつものこの表示でもマクロを使えます。

取り消し線

実行後

取り消し線

 

マクロの解説

選択範囲(Selectionオブジェクト)に対して取り消し線を設定するのであれば、FontオブジェクトのStiikeThrougプロパティを設定して取り消し線を引けます。

くわしくは、Microsoft MVPの伊藤潔人さんのインストラクターのネタ帳の記事「Rangeを使って取り消し線を引く」をご覧ください。

実務上では、段落をわざわざ選択してから取り消し線を引くのは面倒なので、この記事で紹介しているマクロでは、カーソルが選択している部分の段落に対して処理を行います。

上記の目的のため、5行目~9行目のFor Each ... Nextステートメントを使って、カーソルが選択している範囲内の段落オブジェクトを1つずつ取り出して処理をしています。

マクロ


Sub カーソルのある段落に取り消し線を引く()

 Dim myPara As Paragraph

 For Each myPara In Selection.Paragraphs
  With myPara.Range.Font
   .StrikeThrough = Not .StrikeThrough
  End With
 Next

End Sub

-コード
-, ,