Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » Word VBAでカーソルを段落末尾に移動する

Word VBAでカーソルを段落末尾に移動する

動作検証バージョン:64bit Windows 10 Pro + 32bit Word(バージョン2006 ビルド13029.20308 Microsoft Store)

文章の末尾文の末尾行の末尾と、カーソルを何らかのまとまりの末尾に移動するWord VBAのコードを、ご紹介してきました。

こうなると、段落末尾・段落の最後へのカーソル移動も気になります。

[スポンサードリンク]

段落の末尾にカーソルを移動するサンプルマクロ

以下のSubプロシージャを実行すると、カーソルのあった段落の、段落記号の直前にカーソルが移動します。

Sub 段落末にカーソルを移動する()
 Selection.MoveEnd Unit:=wdParagraph
 Selection.MoveEnd Unit:=wdCharacter, Count:=-1
 Selection.Collapse Direction:=wdCollapseEnd
End Sub

サンプルで行っている処理について

既にご紹介している、文の末尾・文の最後にカーソルを移動する基本のコードと、

 Selection.MoveEnd Unit:=wdSentence
 Selection.Collapse Direction:=wdCollapseEnd

割と似ています。

最初に行う選択範囲の末尾変更が、文末の場合は、
  Selection.MoveEnd Unit:=wdSentence
であったのに対し、段落末では、
  Selection.MoveEnd Unit:=wdParagraph
です。

段落末尾とはどこなのか

問題は、段落末尾・段落の最後が、どこなのかです。

文末にカーソル移動を行うマクロを一部だけ変更した、
  Selection.MoveEnd Unit:=wdParagraph
  Selection.Collapse Direction:=wdCollapseEnd
というコードでは、次の段落の先頭にカーソルが移動していまいます。

しかし、段落末にカーソルを移動するWord VBAのコードが必要になる場合、次の段落の先頭よりも、段落記号の直前ではないかと思うのです。
そのため上記のようなコードにしています。
  Selection.Collapse wdCollapseEnd
で選択解除を行う前に、
  Selection.MoveEnd Unit:=wdCharacter, Count:=-1
で、選択範囲の最後を1文字だけ前に移動しています。

ステップ実行しましょう

上記のSubプロシージャを、WordとVBEの両方が見える状態にして、拙著『いちばんやさしいExcel VBAの教本』や『いちばんやさしいPowerPoint VBAの教本』で多用しているショートカットキー[F8]を使ってステップ実行してみてください。

まず、
  Selection.MoveEnd Unit:=wdParagraph
を実行すると、段落記号を含む状態に選択範囲が変更され、次の
  Selection.MoveEnd Unit:=wdCharacter, Count:=-1
で段落記号の選択が解除され、更に
  Selection.Collapse Direction:=wdCollapseEnd
の実行で、選択状態が解除されて段落記号の前にカーソルが移動する様子を見られます。

MoveEndUntilメソッドでコードがシンプルに

上述のMoveEndメソッドを使う方法は、汎用性が高いので抑えておきたい方法ですが、別のメソッドを使うともっとシンプルなコードになります。MoveEndUntilメソッドです。

Sub 段落末にカーソルを移動する_MoveEndUntil()
 Selection.MoveEndUntil vbCr
 Selection.Collapse Direction:=wdCollapseEnd
End Sub

上記の、
  Selection.MoveEndUntil vbCr
というコードなら、選択範囲の末尾が段落記号(vbCr)の前まで移動します。

最終更新日時:2020-08-23 06:58

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » Word VBAでカーソルを段落末尾に移動する

「段落・パラグラフ」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.