Word VBAでカーソル移動をする基本中の基本!Moveメソッドの使い方


move

photo credit: thelearningcurvedotca CHIN Picnic Bike Races (22) via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

カーソル移動…それ自体は全く生産性がないくせに、うっかりしていると何気に手間がかかってしまいます。

そんな悩めるユーザーのために、Wordにはたくさんのカーソル移動に関するショートカットキーがあります。

文書の先頭や末尾、ページ単位、段落単位、単語単位…

ただ、もうちょっとその「間」が欲しいなぁと思うことありませんか?

例えば、句読点の単位でサクサク移動したり、見出しから見出しへピョンピョン移動したり。

欲しい機能は、Word VBAで作ってしまえば良いのでは?

ということで、本記事から何度かにわたって、便利なショートカットキーの作り方をお伝えしていきます。

まず、今回はWord VBAのカーソル移動の基本中の基本、Moveメソッドの使い方についてお伝えします。

では、行ってみましょう!

スポンサーリンク

Wordのカーソル移動に関するショートカットキー

Wordには便利なカーソル移動に関するショートカットキーがたくさん用意されています。

操作 ショートカットキー
単語単位で移動 Ctrl + /
行の先頭・末尾へ移動 End / Home
段落単位で移動 Ctrl + /
ページ単位で移動 Ctrl + PageDown / PageUp
ドキュメントの先頭・末尾へ移動 Ctrl + End / Home

どうですか?ちゃんと使いこなせていらっしゃいますか?

これらを使いこなしたとしても、Wordの場合、もうちょっと欲しくなるんですよね。

例えば

  • 句読点単位
  • 見出し単位

とかですね。単語と行の間、ページとドキュメントの間、それらにちょうどいい感じの移動ショートカットキーがあれば素敵ですよね。

Moveメソッドはカーソル移動の基本

では、それらのショートカットキーの自作を目指すべく、まずその一歩としてWord VBAのカーソル移動の基本中の基本であるMoveメソッドを紹介します。

今回は、カーソル移動なので、Selectionオブジェクトに対するメソッドになります。

書き方は

Selection.Move Unit, Count

となります。

Unitは移動の単位を指定しますが、以下WdUnits列挙型のいずれかを指定します。

定数 単位
wdCharacter 文字
wdWord 単語
wdSentence
wdParagraph 段落
wdLine
wdStory 文書の先頭または末尾
wdSection セクション

また、CountはUnitで指定した単位で移動する量を表します。プラスの数で指定したら、文書の末尾方向(順方向)へ、マイナスの数で指定したら文書の先頭方向(逆方向)への移動となります。

文単位で順方向へカーソル移動する

例として、文単位でカーソル移動をするプロシージャを作っていきましょう。

文単位でカーソル移動をする場合、Unitに指定する定数はwdSentence、Countは順方向に1、ということで以下のようなプロシージャを作ればOKです。

Sub moveForward()

Selection.Move wdSentence, 1

End Sub

このプロシージャを数回実行していくと、以下のようなカーソル移動となります。

Word VBAで順方向に文単位でカーソル移動

ちゃんと移動していますね。

逆方向に移動させる場合は、Countの値にマイナスを指定しますので

Sub moveForward()

Selection.Move wdSentence, -1

End Sub

とすればよいですね。

こちらの実行の様子は以下のようになります。

Word VBAで逆方向に文単位でカーソル移動

Unitに指定する単位を変更したり、移動量を変更したりすることで、色々なカーソル移動を実現できますよね。

Selectionが範囲になっている場合にMoveメソッドを使うとどうなるか

さて、Moveメソッドでカーソル移動できるのは良いのですが、Selectionが「範囲」だったときはどうなるでしょうか。

例えば、このような場合ですよね。

WordのSelectionが範囲になっている

Selectionの範囲つまりRangeは

  • Start:0
  • End:10

となっています。

これについて、以下プロシージャを実行してみましょうか。

Sub moveForward()

Selection.Move wdCharacter, 5

End Sub

つまり、文字単位で5つ、文末方向に移動をするのです。範囲がそのまま移動すると思いますか?どうでしょうね?

なんと、実行しますと

Word VBAで選択範囲をMove

こうなります。

つまり、SelectionのRangeは

  • Start:14
  • End:14

となります。つまり、範囲の選択は解除され、終了位置を起点として移動した位置がカーソル位置となります。

同様に、逆方向の移動でも範囲の選択は解除され、開始位置を起点として移動した位置がカーソル位置となります。

Selectionが範囲であったとしても、Moveメソッドで移動した時点で選択は解除されますので、覚えておいて下さいね。

まとめ

Word VBAでカーソル移動をする基本中の基本であるMoveメソッドについてお伝えしました。

UnitとCountの設定を変えていけば、Moveメソッド一つで多様なカーソル移動が実現できます。

ですが…欲しいのは「句読点単位」なんですよね~。

今回のwdSentence単位の移動は、正直、行単位や段落単位とあんまり変わらないですものね。

ということで、次回は句読点単位のカーソル移動を実現すべく、別の方法を模索していきます。

Word VBAでMoveUntilメソッドを使って句読点単位でカーソル移動をする方法
Word VBAで便利なカーソル移動のショートカットキーを作る方法をお伝えしています。今回はWord VBAでMoveUntilメソッドを使って句読点単位でカーソル移動をする方法です。

どうぞお楽しみに!

連載目次:Word VBAでカーソル移動の便利ショートカットキーを作る

Wordには便利なカーソル移動に関するショートカットキーがデフォルトでたくさん用意されていますが、マクロを使えば好みのカーソル移動に関するショートカットキーを自作することができます!本シリーズでは、その作り方を丁寧に解説していきます。
  1. Word VBAでカーソル移動をする基本中の基本!Moveメソッドの使い方
  2. Word VBAでMoveUntilメソッドを使って句読点単位でカーソル移動をする方法
  3. Word VBAで句読点単位のカーソル移動のショートカットキー化する方法
  4. Word VBAのGoToメソッドで見出し単位のカーソル移動をする方法
  5. Word VBAで見出し単位のカーソル移動をショートカットキー化する方法

タイトルとURLをコピーしました