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

Word VBAでカーソルを文・センテンスの先頭に移動する

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

Word VBAでカーソルを文・センテンスの先頭に移動する

Word VBAで、文(センテンス)の末尾・最後にカーソルを移動するコードをご紹介しています。

文の先頭・最初へカーソル移動を行うコードについては、
  Selection.Move Unit:=wdSentence, Count:=-1
あたりで済むケースも多そうですが、文末にカーソルを移動するのと似たコードも確認しておくと良さそうです。

[スポンサードリンク]

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

以下のSubプロシージャを実行すると、カーソルのあった文(センテンス)の先頭・最初に、カーソルが移動します。

ただし、箇条書きの先頭にカーソルがある場合には、その前の箇条書き項目の先頭にカーソルが移動します。これの回避は、この記事の後半でお伝えします。

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、

Word.Selection.MoveEnd

文頭の場合はMoveStartです。

Word.Selection.MoveStart

文頭のほうは、前に向かって移動したいので、引数Countに「-1」を指定しています。

範囲の選択を解除するCollapseメソッドの引数が、文末の場合はwdCollapseEndで、

Word.WdCollapseDirection.wdCollapseEnd

文頭の場合はwdCollapseStartです。

Word.WdCollapseDirection.wdCollapseStart

Selection.Collapse Direction:=wdCollapseStartの挙動

なお「Selection.Collapse Direction:=wdCollapseStart」がどのような動きをするのかは、以下の動画も参考にしてください。

YouTube「Word VBAのSelection.Collapseとは」

段落の先頭にカーソルがある場合

上記のコードのままでは、箇条書きの先頭にカーソルがあるときに、その前の箇条書き項目の先頭にカーソルが移動してしまいます。

これを回避するということは、段落の先頭にカーソルがあるときには、カーソル移動を行わないということです。

Sub センテンスの先頭にカーソルを移動する()
 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

[スポンサードリンク]

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

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

検索


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

.