「WORD VBA Selection.End」
という検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。
Word VBAのSelectionオブジェクトに用意されている、Endプロパティについて調べていた方による検索です。
Selection.Endは選択箇所末尾の文字位置を返す
SelectionオブジェクトのEndプロパティを使うと、Word文書上でカーソルが何文字目なのか、選択されている箇所の末尾が何文字目なのかを表すLong型のデータを取得できます。
例えばアクティブ文書の本文に、先頭から、
あいうえお
の5文字が入力されているときに、
「あ」の前にカーソルがあるときに「0」を、
「あ」の後ろにカーソルがあれば「1」を、
「い」の後ろの場合は「2」を、Selection.Endプロパティは返します。
また、「あ」のみが選択されているときにSelection.Endは「1」を、「あい」が選択されているときには「2」を返します。
Selection.Startは選択箇所先頭の文字位置
Selection.Endと対になっているプロパティもあります。Startプロパティです。
先ほどの、
あいうえお
の5文字の例で、
「あ」の前にカーソルがあるときに「0」を、
「あ」の後ろにカーソルがあれば「1」を、
「い」の後ろの場合は「2」を、Selection.Startプロパティは返します。文字列が選択されていなければ、EndとStartは同じ値を返します。
文字列を選択しているときには、StartとEndは異なる値を返します。「あ」のみが選択されているときも、「あい」が選択されているときにも、Selection.Startは「0」を返します。
ExcelのRange.Endとは無関係
Excel VBAの経験があると、Word VBAの
Selection.End
といったコードを見たときに、ついExcel VBAの
Selection.End(xlDown)
Selection.End(xlUp)
のようなコードと関係があるのかなと、思ってしまうかもしれませんが、無関係です。
Excel VBAの「.End」とWord VBAの「.End」に、まったく関係はありません。
Excel VBAの「Selection.End」は、実際にはExcelライブラリのRangeオブジェクトに用意されているEndプロパティを利用しているコードです。
Word VBAの「Selection.End」は、ここまで見てきたとおり、WordライブラリのSelectionオブジェクトに用意されているEndプロパティを利用しているコードです。
Excel VBAの「Selection.End」は、実際には「Range.End」であり、戻り値はRangeオブジェクトです。
Word VBAの「Selection.End」の戻り値は、ここまで見てきたとおり、Long型の数値です。
Range.Endは設定も可能
Range.Endは、オブジェクトブラウザーの詳細ペインに「読み取り専用」表示がないことから読み取れるとおり、
設定も可能なプロパティです。
例えば、
Selection.End = Selection.End + 1
を実行すると、Word文書で選択箇所が1文字後ろに広がります。
最終更新日時:2022-01-17 10:29
Home » ワードマクロ・Word VBAの使い方 » Selection » Word VBAのSelection.Endとは