Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAでカーソルを文末に移動する

Word VBAでカーソルを文末に移動する

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

「word vba 文末へ移動」
「word vba カーソルを文末に」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。

Word VBAでカーソルを文の末尾・文の最後へ移動するには、どのようなコードを書けばいいのか探していた方による検索でしょう。

日本語の場合、基本的には句点「。」の後ろが文の末尾ですけれど、Wordの場合、句点のない段落記号や改行記号の後ろも文末として扱われます。

[スポンサードリンク]

「word vba カーソル移動 末尾」
という検索も、(これだけでは何の末尾か不明ですが)文末へカーソル移動を行うWord VBAのコードを探していたのかもしれません。

カーソルを文末に移動するサンプルマクロ

以下のSubプロシージャを実行すると、カーソルがその文の末尾、句点「。」の後ろに移動します。

Sub 文末にカーソルを移動する_基本()
 Selection.MoveEnd Unit:=wdSentence
 Selection.Collapse Direction:=wdCollapseEnd
End Sub

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

選択範囲の終了位置を移動するSelection.MoveEndメソッド
  Selection.MoveEnd Unit:=wdSentence

引数Unitに、WdUnits列挙型に定義されている定数wdSentence(実際の値は3)を、

指定すると
  Selection.MoveEnd Unit:=wdSentence

カーソルのあった位置から、その文の末尾までが選択されます。

ここで行いたいのは文末へのカーソル移動ですから、選択状態を解除するSelection.Collapseメソッド
  Selection.Collapse Direction:=wdCollapseEnd

引数Directionに、WdCollapseDirection列挙型に定義されている定数wdCollapseEnd(実際の値は0)を、

指定して、
  Selection.Collapse Direction:=wdCollapseEnd

選択状態を後ろ側で解除しています。

Selection.Collapse Direction:=wdCollapseEndの挙動

「Selection.Collapse Direction:=wdCollapseEnd」がどのような動きをするのかは、以下の動画の1分14秒あたりからも参考にしてください。

YouTube「Word VBAのSelection.Collapseとは」

ステップ実行を行いましょう

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

まず、
  Selection.MoveEnd Unit:=wdSentence
が実行されると、カーソルのあった位置からその文の末尾が選択され、続いて
  Selection.Collapse Direction:=wdCollapseEnd
が実行されると、カーソルが末尾に移動する様子を確認できます。

文末に改行記号や段落記号がある場合

基本は上記のとおりですが、改行記号や段落記号の後ろも文末と扱われるため、このままでは、次の行や段落の先頭にカーソルが移動してしまうケースがあります。これを回避するなら以下のようなSubプロシージャです。

Sub 文末にカーソルを移動する()
 With Selection
  .MoveEnd Unit:=wdSentence

  If .Characters.Last = vbVerticalTab _
  Or .Characters.Last = vbCr Then
    .MoveEnd Unit:=wdCharacter, Count:=-1
  End If

  .Collapse Direction:=wdCollapseEnd
 End With
End Sub

選択範囲の末尾が、改行記号(vbVerticalTab)や段落記号(vbCr)だったときに、選択範囲の末尾を1文字左に動かしています。
   If .Characters.Last = vbVerticalTab _
   Or .Characters.Last = vbCr Then
     .MoveEnd Unit:=wdCharacter, Count:=-1

最終更新日時:2020-09-02 13:55

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAでカーソルを文末に移動する

「文・センテンス」の記事一覧

検索


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

.