【Word VBA】カーソルジャンプ(移動)をスムーズにする方法

2018年2月19日

カーソルのジャンプ(移動)を支援するマクロをいろいろと紹介してきました。

【コード】蛍光ペンへジャンプ 
【コード】条番号にジャンプする 

カーソルをジャンプさせたときに、移動先がウィンドウの末尾になってしまうと、移動先の情報を確認するためにスクロールする必要があります。

そこで、移動先にカーソルをジャンプさせる前に、文書の末尾にカーソルをジャンプさせた後に移動先にジャンプさせるという技を使ってみました。

これを実行すると、ウィンドウの最初の行に移動先が表示されます。

【コード】日英特許明細書の段落番号を探す
【コード】日英特許明細書の段落番号を探す(改良版)

この「段落番号を探す(改良版)」では、次の段落番号がウィンドウの中央くらいに表示されている場合にも、画面がスクロールしてしまって少々扱いづらい感じがします。

 

今回の記事で紹介するメソッドを使うと、上記のようなカーソルの移動が不要になり、対象箇所がウィンドウのちょうどいい場所に表示されるようになります。

このマクロでできること

対象箇所がウィンドウに表示されていない場合に、対象箇所を画面の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

-コード
-