Selection.MoveRightメソッド(Word)の挙動に注意

[Selection].MoveRightメソッドの挙動に注意

[Selection].MoveRightメソッド([Selection].MoveLeftメソッド)を使用していて軽くハマったので、記しておく。

[Selection].MoveRightメソッド

[Selection].MoveRightメソッドというのは、Wordでドキュメント上のカーソルを動かすメソッド。

akashi-keirin.hatenablog.com

このときにも触れたことがある。

文字通りカーソルを右に動かすメソッド。

簡単におさらいをしておくと、使うときは

Call [Selection].MoveRight([Unit], [Count], [Extend])

と書く。

で、

  • 引数Unitで移動の単位
  • 引数Countで移動の量
  • 引数Extendで移動の仕方(単純にカーソルを動かすか、ドラッグしたように動かすか)

をそれぞれ指定する。

たとえば、

Selection.MoveRight(wdCharacter, 1, wdExtend)

と書けば、

  • 文字単位で
  • 1だけ
  • ドラッグしたように

カーソルを右に動かすことになる。

通常の挙動

たとえば、

f:id:akashi_keirin:20200122074421j:plain

このようなドキュメント(笑)上で、「強敵」の直前にカーソルを置いて、次のリスト1を実行するとどうなるか。

リスト1
Private Sub moveCursorTest()
  Call Selection.MoveRight(wdCharacter, 1, wdExtend)
End Sub

当然、

f:id:akashi_keirin:20200122074426g:plain

こうなる。

何の不思議もない。疑問などあろうはずがありません。

文字にルビが振られているとき

では、文字にルビが振られているとどうなるか。

今度は、先ほどのドキュメント(笑)を、

f:id:akashi_keirin:20200122074423j:plain

このように変更する。「強敵」の2文字に「とも」とルビを振った。

この状態で、「強敵」の直前にカーソルを置いて、リストを実行してみる。

すると、

f:id:akashi_keirin:20200122074440g:plain

なんと、こうなるのである!

おわりに

キーボード操作と全く同じ結果になるとはいえ、少し注意が必要かも知れない。