文章の末尾、文の末尾、行の末尾と、カーソルを何らかのまとまりの末尾に移動するWord VBAのコードを、ご紹介してきました。
こうなると、段落末尾・段落の最後へのカーソル移動も気になります。
段落の末尾にカーソルを移動するサンプルマクロ
以下の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メソッドです。
Selection.MoveEndUntil vbCr
Selection.Collapse Direction:=wdCollapseEnd
End Sub
上記の、
Selection.MoveEndUntil vbCr
というコードなら、選択範囲の末尾が段落記号(vbCr)の前まで移動します。
最終更新日時:2020-08-23 06:58
- Newer:Pythonのinput関数を確認しましょう
- Older:Word VBAでカーソルを文末に移動する
Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » Word VBAでカーソルを段落末尾に移動する