【Word VBA】カーソルを移動するWordマクロ

句読点などを手掛かりにしてカーソルを移動させると、カーソルの移動が速く、かつ正確になります。

キーボードの左右のキーを連打しなくてもよくなりますね。

このマクロでできること

カーソルを移動させます。

進める場合も戻す場合も、ともに、。、?!:;(全角の場合)の手前でカーソルが止まります。

ぱらぱら を使った上書き翻訳をする場合に、できるだけ速くカーソルを移動させたいので、このときに使います。

普段文章を書く時にも役立ちます。

Wordをチューニング する楽しみが広がるマクロですよ。

マクロの解説

3行目~13行目15行目~26行目の二つのマクロがあります。

カーソルを止めるキーワードをmyCsetというストリング型の定数に設定しています。

ここを変更すれば、カーソルが戻るときも進むときも同じようにコントロールすることができます。

直感的で気持ちい動きとなるように、ご自身で変更してみてください。

半角文字と全角文字を両方含むようにすれば、英文を扱う場合も日本文を扱う場合にも同じマクロで制御できます。

もう少し細かく

myCset の定数をPrivate キーワードで定義しています。

このように、特定のプロシージャー(Sub からEnd Subまでのプログラム文)の外に定数を宣言することができます。

Privateとすると、このモジュール内のすべてのプロシージャーからこの定数を参照することができます。

複数のプロシージャーで共通した定数であれば、このように一か所で定義するとわかりやすいですね。

変更するときにも、プロシージャーごとに変更する手間が省けるので便利です。

マクロ


Private Const myCset As String = "。、?!:;.,?!:;"

Sub カーソル_戻る()

  Dim myRange As Range
    
  Set myRange = Selection.Range
  myRange.MoveEndUntil cset:=myCset, Count:=wdBackward
  
  myRange.Start = myRange.Start - 1
  Selection.SetRange Start:=myRange.Start, End:=myRange.Start

End Sub

Sub カーソル_進む()

  Dim myRange As Range
    
  Set myRange = Selection.Range
  
  myRange.End = myRange.End + 1
  myRange.MoveEndUntil cset:=myCset, Count:=wdForward
  
  Selection.SetRange Start:=myRange.End, End:=myRange.End

End Sub

コメント

  • 2. Re:このマクロきにいったので

    >ちえぞうさん

    コメントをどうもありがとうございます。

    作られたマクロもいいですね。

    泥臭くても動けばいいと思います!

    そういえば、私は選択範囲の変更マクロは公開してませんでしたね。

    次に記事にします。

  • 1. このマクロきにいったので
    また別のマクロをつくってみましたよ。
    今カーソルがあるところからピリオドまで選択するマクロです。原始的なマクロだけど。
    ちえぞう
トップへ戻る