【Word VBA】改行記号を含まずに行末の文字まで選択する

2012年8月19日

改良版をこちらの記事に掲載しました。(16-07-18)

小さなことですが、こんなマクロも使っています。

このマクロでできること

カーソル位置から行の末尾までの文字列を選択します。

Wordのショートカットキーで実行できる機能ににています。

[Shift] + [End] 行の末尾まで選択

ただし、今回のマクロでは、選択した場合に、行末が改行記号などの場合には、それを除外します。

コピペをするときに、改行記号まで入ってしまっていらない改行まで貼付けられてやり直す経験ありませんか?

それを回避するために、行末にある改行記号を含まずに選択します。

例えば、こんな感じです。カーソルがThat の前にあります。

実行前

行末にある文章を別の部分に貼付ける場合などありますよね。

マクロを使わない場合

普通、[Shift] + [End] を押して行末まで選択します。

すると、改行記号がある場合には、それも含んでしまいますよね。

マクロを使う場合

マクロを使う場合

以下のように、行末の改行記号が選択されません。ほしい文字列だけが選択されているのです。

マクロを使う場合

私は、[Shift] + [End] に上書きで割り当てて使っています。

マクロの解説

行末にある改行記号以外に、タブや段区切り、ソフトリターン、改行・改ページも対象にしています。

実務上、このような記号が入ることありますからね。

Chr(9) タブ
Chr(10) 段区切り
Chr(11) ソフトリターン
Chr(12) 改行・改ページ
Chr(13) ハードリターン

選択範囲の末尾を移動させるには、MoveEndWhileメソッド を使います。

5行目のmyExcludesに除外文字を入れていますので、最後の一文字がこれに該当する場合には、後ろ向き(文書の先頭に向かって)選択範囲が変化します。

マクロ


Sub 行の末尾まで選択()

 Dim myExcludes As String

 myExcludes = Chr(9) & Chr(10) & Chr(11) & Chr(12) & Chr(13)

 Selection.EndKey Unit:=wdLine, Extend:=wdExtend
 Selection.MoveEndWhile Cset:=myExcludes, Count:=wdBackward

End Sub

-コード
-