Home » ワードマクロ・Word VBAの使い方 » Selection » Word VBAのSelection.Endとは

動作検証バージョン:64bit Windows 10 Pro + 32bit Word(バージョン2012 ビルド13530.20376 Microsoft Store)

「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とは

「Selection」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.