パソコン悪戦苦闘記録

DocumentオブジェクトのRangeは確かにメソッド

 昨日(2023年2月7日)、Word VBARange に関する記事を書きました。

 Word VBA で、Word文書内の
  特定の文字列範囲
  ある連続した領域
を指定するにはRangeを使用するけれども、このRangeは、Documentオブジェクトに用意されている「メソッド」とされています。
 なぜ、プロパティではなく、メソッドなのか、疑問である、という内容の記事です。

 その昨日の記事は、
  こちらをご覧ください。


 上記の記事を書いた後、あれこれと調べてみました。

 するとぉ・・・・、
  ありました、見つかりました、
  納得できる説明が。

 はい、Documentオブジェクトに用意されているRangeは、確かにメソッドです
 プロパティではありません。

 その納得できる説明文とは、
 「Wordにおける構成要素とRange」と題するWebページに掲載されていました。
 ググると、出てきます。





 その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
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事