Rangeオブジェクトの検索範囲指定

Rangeオブジェクトの検索範囲を指定するコードです。

●背景
検索をするときに最近多用するようになりましたが、馬鹿の一つ覚えみたいにずっとSelection.Rangeを使い続けました。

その中で、検索するときに、カーソルの位置は見えないけれど、検索を開始している位置があることに気づきました。

目に見えないだけにやっかいだと思い、今までは以下のコードを一行書いて、カーソル位置を文頭に移動しました。

Selection.HomeKey unit:=wdStory

結局、カーソルが見えないように処理していたのですが、このコードがあるためにカーソルを移動(画面を移動)する処理が入ることになりました。

別にスピード感として違いはわかりませんが、画面のちらつき(flickering)が増えてしまいます。参考記事はこちら

カーソルの移動を、画面のちらつきなしにする方法が少しわかってきたので、分かる範囲で紹介いたします。

●カーソル移動方法
以下のコードでは、すべてrngをrangeオブジェクトとして定義してあります。

つまり、

Dim rng as Range

がプロシージャの先頭に書かれていると想定してください。

また、以下の例では、Selection.Rangeではなくて、ActiveDocument.Rangeとしてみました。

この違いはうまく説明できませんが、ActiveDocument.Rangeとすると対象とする検索範囲は文書全体になるような気がしています。

■方法1

Set rng = ActiveDocument.Range
rng.C

(1/2) 次»

マクロプログラム
2009/06/13




コメント(0)|コメントを書く

カテゴリー一覧
最近のコメント

このブログを友達に教える

コミュニティ | 有名人・芸能人ブログ | ケータイ占い | ケータイ小説 | 掲示板


画面TOP↑


powered by cocolog