先の記事「選択範囲の先頭・末尾の文字や単語を特定する 」で紹介したものに関連したプロパティです。
Previous プロパティとNext プロパティを使って選択範囲外の文字を特定してみます。
重要なのは、このプロパティでは単語は特定できないということです。
追記:16-09-09
単語も特定できます。本記事の末尾に説明を追記しました。
<目次>
できること(文字を特定)
たとえば、以下のような場合があります。
Selection.Characters.First.Previous とした場合には、選択範囲での先頭の文字の手前である a が選ばれます。
同じように
Selection.Characters.Last.Next とした場合には、選択範囲での末尾の文字の後ろである o が選ばれます。
できること(単語を特定)
この場合、一見、不規則な感じの値の取得になります。
Selection.Words.First.Previous とした場合には、選択範囲での先頭の単語の手前である 半角スペース が選ばれます。
以下の場合には注意が必要です。
Selection.Words.Last.Next とした場合には、選択範囲での末尾の単語の後ろである o が選ばれます。
上記のように"o" が選ばれる理由は何だと思いますか?
選択範囲内の最後の単語を特定した場合には、単語直後の半角スペースも含まれるのです。
よって、Lastの単語として"consists "が選ばれた次の1文字として、"of" の"o" が選ばれるのです。
解説追記(16-09-09)
上記のようになる理由は、PreviousプロパティとNextプロパティのデフォルト設定に関連しています。
これらのプロパティには、引数としてUnitとCountというパラメーターがあります。
デフォルトでは、Unitが文字単位を示す、wdCharacterに設定されており、Countは1文字になっています。
つまり、
Unit:=wdCharacter, Count:=1
なのです。
以下のSample1とSample2は同じ動きをします。
(実行前)
(実行後)
Sub Sample1() Selection.Words.First.Previous.Select End Sub Sub Sample2() Selection.Words.First.Previous(Unit:=wdCharacter, Count:=1).Select End Sub
さらに、Sample3のように単語単位で指定すれば、1つ前の単語を選択できるのです。
(実行前)
(実行後)
Sub Sample3() Selection.Words.First.Previous(Unit:=wdWord, Count:=1).Select End Sub
コメント