Word VBA で、Word文書内の
特定の文字列範囲
ある連続した領域
を指定するにはRangeを使用するけれども、このRangeは、Documentオブジェクトに用意されている「メソッド」とされています。
なぜ、プロパティではなく、メソッドなのか、疑問である、という内容の記事です。
その昨日の記事は、
⇒ こちらをご覧ください。
上記の記事を書いた後、あれこれと調べてみました。
するとぉ・・・・、
ありました、見つかりました、
納得できる説明が。
はい、Documentオブジェクトに用意されているRangeは、確かにメソッドです。
プロパティではありません。
その納得できる説明文とは、
「Wordにおける構成要素とRange」と題するWebページに掲載されていました。
ググると、出てきます。
![](https://blogimg.goo.ne.jp/user_image/0f/e3/81062ceddb9f47512d112a765ae6418c.jpg)
そのWebページでは、次のような、記述・解説がされています。
【1】 Rangeには、実はメソッドとプロパティの2種類がある。メソッドとしてのRangeと、プロパティとしてのRangeである。
【2】 DocumentオブジェクトのメンバーであるRangeは、
ActiveDocument.Range(0,5)
のように、範囲指定することによりRangeオブジェクトを生成する、メソッドである。
【3】 Paragraphなど、他のオブジェクトのメンバーであるRangeは、
ActiveDocument.Paragraphs(4).Range
のように、Rangeオブジェクトを引き出すためプロパティである。メソッドではない。
したがって、ActiveDocument.Paragraphs(4).Range(0,5)のような書き方はできない。
つまり、こういうことでしょう。
Rangeメソッドは、「Range(0,5)」のような形で使えるから、自由に範囲指定ができる。この実行によって、Rangeオブジェクトを生成できる、というわけです。
なるほど、これはまさにメソッドです。
プロパティではないですね。
Rangeオブジェクトを「生成する。」という表現が、実にうまいです。この表現ぶりは絶妙です。
メソッドの実行で、オブジェクトを「創造する」「新しく創り出す」といった意味合いでしょうか。
この点が、オブジェクトを「取得する」働きをするプロパティと異なるところです。
なるほどぉ、これで納得です。
ずっと疑問に思っていたこと、モヤモヤが、この解説文で一気に晴れました。
「こつんと肚に落ちる。」という感覚です。
「がってん、がってん!」「はぁ~、スッキリ。」
これにてえ、一件落着!!
それでは、また次の記事で
■■■■ goosyun ■■■■
![](https://blogimg.goo.ne.jp/user_image/1e/87/7ec16c3f05564997734a12eafbf1ca85.jpg)