【Word VBA】RangeオブジェクトとSelectionオブジェクト

2010年6月9日

違いの簡単な説明

Selectionオブジェクト:

処理を、目に見えるカーソル位置の場所で実行します。

なので、複数の場所に同時にselectionオブジェクトが存在することができません。

かならず、文書中に一つです。

よって、プログラムの動きの確認をするときに、やりやすいですね。

目で追えるので。

また、検索と置換のダイアログボックスと連動します。

マクロで使った検索条件が、検索と置換ダイアログボックスに反映されますし、そのまま残ります。

Rangeオブジェクト:

処理を、目に見えるカーソル位置とは関係なく実行します。

文書中に複数のrangeオブジェクトを作ることができます。

Rangeオブジェクトの場合

いくつかの利点があります。

①カーソル位置の記録不要

カーソルが動かないので、カーソル位置を記録させるためのプログラムが不要です。

②画面のちらつき防止不要

通常、プログラム処理中にカーソルが移動することで、画面がちらつくことがあります。

これを防止するために使うのが、「画面のちらつきをなくす 」1行マクロです。

Rangeオブジェクトなら、こういう小細工も不要になります。

③検索と置換のダイアログの初期化が不要

上記の通り、Selectionオブジェクトでは、マクロで使用した検索や置換条件がダイアログボックスに残るので、それをきれいにしておく必要があります。

別に残しておいてもいいんだけど、毎回削除するのは面倒ですからね。

でも、Rangeオブジェクトは、[検索と置換]ダイアログボックスと無関係なので、そのような後処理が不要になります。

結果、プログラム自体は非常にシンプルになります。

参考図書

もう、これしかない。「Learning Word Programming

関連記事

RangeオブジェクトとSelectionオブジェクト ←今ココ

RangeオブジェクトとSelectionオブジェクト(2)

コメント

2. Re:おおお!
>yumihenさん

そうなんです。
すごく楽しいですよ。

処理が速くなったりしますし。

今まで作られたSelectionオブジェクトをRangeオブジェクトに書き換える作業が、また面白かったりします。
新田順也☆ワードプログラマー 2010-06-09 23:08:26
返信する

1. おおお!
Range にはそんな機能があったのですか(@_@)
知りませんでした。
あってもなくても、どっちでもいいようなものだと思っていました(^_^;)

これからは意識して使い分けて見ます!
yumihen 2010-06-09 09:00:16

-コード
-, , ,