「word vba 文末へ移動」
「word vba カーソルを文末に」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へのアクセスが時折あります。
Word VBAでカーソルを文の末尾・文の最後へ移動するには、どのようなコードを書けばいいのか探していた方による検索でしょう。
日本語の場合、基本的には句点「。」の後ろが文の末尾ですけれど、Wordの場合、句点のない段落記号や改行記号の後ろも文末として扱われます。
「word vba カーソル移動 末尾」
という検索も、(これだけでは何の末尾か不明ですが)文末へカーソル移動を行うWord VBAのコードを探していたのかもしれません。
カーソルを文末に移動するサンプルマクロ
以下の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プロシージャです。
With Selection
.MoveEnd Unit:=wdSentence
If .Characters.Last = vbVerticalTab _
Or .Characters.Last = vbCr Then
.MoveEnd Unit:=wdCharacter, Count:=-1
End If
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
- Newer:Word VBAでカーソルを段落末尾に移動する
- Older:Word VBAでカーソルを行末に移動する
Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAでカーソルを文末に移動する