カーソルのジャンプ(移動)を支援するマクロをいろいろと紹介してきました。
【コード】蛍光ペンへジャンプ 【コード】条番号にジャンプする
カーソルをジャンプさせたときに、移動先がウィンドウの末尾になってしまうと、移動先の情報を確認するためにスクロールする必要があります。
そこで、移動先にカーソルをジャンプさせる前に、文書の末尾にカーソルをジャンプさせた後に移動先にジャンプさせるという技を使ってみました。
これを実行すると、ウィンドウの最初の行に移動先が表示されます。
【コード】日英特許明細書の段落番号を探す 【コード】日英特許明細書の段落番号を探す(改良版)
この「段落番号を探す(改良版)」では、次の段落番号がウィンドウの中央くらいに表示されている場合にも、画面がスクロールしてしまって少々扱いづらい感じがします。
今回の記事で紹介するメソッドを使うと、上記のようなカーソルの移動が不要になり、対象箇所がウィンドウのちょうどいい場所に表示されるようになります。
<目次>
このマクロでできること
対象箇所がウィンドウに表示されていない場合に、対象箇所を画面の6行目くらいに表示します。
対象箇所がウィンドウに表示されている場合には、画面をスクロールしません。
【コード】蛍光ペンへジャンプに応用すると効果がわかりやすいと思います。
上記マクロでは、蛍光ペン箇所にカーソルをジャンプさせる際に、選択箇所がウィンドウの最下部になることがあります。
今回のメソッドを使うと、以下のように修正されます。
カーソルの移動先の周辺(前後の文章)がみえるので、より安心感がありますよね。よく考えられたメソッドだと思います。
マクロの解説
ScrollIntoView メソッドを使います。
選択されている箇所を画面の上の方に表示します。
選択箇所はRangeオブジェクトなので、RangeオブジェクトのFindメソッドを使った場合に応用できます。(マクロ2の14行目、マクロ3の14行目)
マクロ1
Sub カーソルの移動() ActiveWindow.ScrollIntoView Selection.Range, True End Sub
マクロ2
Sub 蛍光ペンへジャンプ_次2() Dim myRange As Range Set myRange = Selection.Range With myRange.Find .Text = "" .Highlight = True .Format = True .Forward = True .Wrap = wdFindContinue If .Execute = True Then ActiveWindow.ScrollIntoView myRange, True myRange.Select Else MsgBox "蛍光箇所はありません。", vbInformation, "お知らせ" End If End With Set myRange = Nothing End Sub
マクロ3
Sub 蛍光ペンへジャンプ_前2() Dim myRange As Range Set myRange = Selection.Range With myRange.Find .Text = "" .Highlight = True .Format = True .Forward = False .Wrap = wdFindContinue If .Execute = True Then ActiveWindow.ScrollIntoView myRange, True myRange.Select Else MsgBox "蛍光箇所はありません。", vbInformation, "お知らせ" End If End With Set myRange = Nothing End Sub