先日の記事「【コード】カーソル位置よりも下位のアウトラインレベルの段落を選択するWordマクロ(その1)」の続きです。Wordをアウトライナーとして使うときに便利なマクロを別の方式で書いてみました。(参考:【読み物】Wordをアウトライナーとして使う!)
今回の記事では、Paragraph.OutlineLevel プロパティ を使っています。
<目次>
このマクロでできること
前回の記事と同じ機能です。
カーソルがある段落のアウトラインレベルよりも下位の段落を選択します。
「くだもの」にカーソルがあります。
(実行前)
(実行後)
以下の通り、カーソルが置かれた項目から一番深い階層まで選択します。「柿」は含みません。
マクロの解説
Paragraphオブジェクトにてアウトラインレベルを判定します。
26行目~28行目のとおり、範囲選択にはRangeオブジェクトを用いています。
マクロ
Sub 下位のアウトラインレベルを選択2() Dim myLevel As Long Dim myRange As Range Dim myPara As Paragraph Dim myNextPara As Paragraph '選択範囲(カーソル位置)の最初の段落をParagraphオブジェクトに設定 Set myPara = Selection.Paragraphs(1) Set myRange = myPara.Range 'myPara(Paragraphオブジェクト)のアウトラインレベルを取得 'このアウトラインレベルを基準にする myLevel = myPara.OutlineLevel 'myParaの次の段落をmyNextPara(Paragraphオブジェクト)に設定 Set myNextPara = myPara.Next 'アウトラインレベルが低い場合に限りmyParaの範囲を拡大 Do While myNextPara.OutlineLevel >= myLevel 'myNextParaのアウトラインレベルを取得 myLevel = myNextPara.OutlineLevel 'myRangeの範囲を再設定(末尾を次の段落myNextParaの末尾にする) With myRange .SetRange .Start, myNextPara.Range.End End With 'myNextParaの次の段落をmyNextParaに設定 Set myNextPara = myNextPara.Next '最終段落の場合に終了 If myNextPara Is Nothing Then Exit Do Loop 'myRangeを選択する myRange.Select End Sub