Word VBAで、文(センテンス)の末尾・最後にカーソルを移動するコードをご紹介しています。
文の先頭・最初へカーソル移動を行うコードについては、
Selection.Move Unit:=wdSentence, Count:=-1
あたりで済むケースも多そうですが、文末にカーソルを移動するのと似たコードも確認しておくと良さそうです。
文頭にカーソルを移動するサンプルマクロ
以下のSubプロシージャを実行すると、カーソルのあった文(センテンス)の先頭・最初に、カーソルが移動します。
ただし、箇条書きの先頭にカーソルがある場合には、その前の箇条書き項目の先頭にカーソルが移動します。これの回避は、この記事の後半でお伝えします。
Selection.MoveStart Unit:=wdSentence, Count:=-1
Selection.Collapse Direction:=wdCollapseStart
End Sub
文末にカーソルを移動するコードの基本と、かなり似ています。
文頭にカーソルを移動する処理について
選択範囲を文の先頭まで拡張
選択範囲の開始位置を移動するSelection.MoveStartメソッドの
Selection.MoveStart Unit:=wdSentence, Count:=-1
引数Unitに、WdUnits列挙型に定義されている定数wdSentence(実際の値は3)を、
Selection.MoveStart Unit:=wdSentence, Count:=-1
引数Countに「-1」を指定すると、
Selection.MoveStart Unit:=wdSentence, Count:=-1
カーソルのあった位置から、その文の先頭までを選択できます。
範囲選択の解除
文頭へのカーソル移動を行いたいので、選択状態を解除するSelection.Collapseメソッドの、
Selection.Collapse Direction:=wdCollapseStart
引数Directionに、WdCollapseDirection列挙型に定義されている定数wdCollapseStart(実際の値は1)を指定して、
Selection.Collapse Direction:=wdCollapseStart
選択状態を、選択範囲の開始位置・先頭で解除しています。
YouTube「WordVBAでカーソルを文の先頭に」カーソルを文末に移動するコードとの比較
カーソルを文末に移動する基本的なコードが、
Selection.MoveEnd Unit:=wdSentence
Selection.Collapse Direction:=wdCollapseEnd
であるのに対し、カーソルを文頭に移動するコードは、
Selection.MoveStart Unit:=wdSentence, Count:=-1
Selection.Collapse Direction:=wdCollapseStart
です。
選択範囲を広げるメソッドが、文末の場合はMoveEnd、
文頭の場合はMoveStartです。
文頭のほうは、前に向かって移動したいので、引数Countに「-1」を指定しています。
範囲の選択を解除するCollapseメソッドの引数が、文末の場合はwdCollapseEndで、
文頭の場合はwdCollapseStartです。
Selection.Collapse Direction:=wdCollapseStartの挙動
なお「Selection.Collapse Direction:=wdCollapseStart」がどのような動きをするのかは、以下の動画も参考にしてください。
YouTube「Word VBAのSelection.Collapseとは」段落の先頭にカーソルがある場合
上記のコードのままでは、箇条書きの先頭にカーソルがあるときに、その前の箇条書き項目の先頭にカーソルが移動してしまいます。
これを回避するということは、段落の先頭にカーソルがあるときには、カーソル移動を行わないということです。
With Selection
If .Start <> .Paragraphs(1).Range.Start Then
.MoveStart Unit:=wdSentence, Count:=-1
.Collapse Direction:=wdCollapseStart
End If
End With
End Sub
以上のように、カーソル位置が、段落の先頭でないときに、先の処理を行うというIf文をかませると、
With Selection
If .Start <> .Paragraphs(1).Range.Start Then
段落の先頭のときにはカーソル移動は行われなくなります。
最終更新日時:2021-09-02 20:37
- Newer:Word VBAで表の中の表のデータを取得する
- Older:Word VBAでカーソルを行頭に移動する
Home » ワードマクロ・Word VBAの使い方 » 文・センテンス » Word VBAでカーソルを文・センテンスの先頭に移動する