こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ワード 画面移動後に元の画面へ戻す方法

ワード・マクロ初心者です。

マクロで例えば検索・置換などの処理を行うと、画面がスクロールしてしまいますが
このような処理の後、元の画面に戻すことは可能でしょうか。

例えば、元の画面の最上位行が文書先頭から100行目に相当している状態で、
検索・置換により、画面の最上位行が文書先頭から50行目に移動した後、
再び元の画面の最上位行が文書先頭から100行目に相当している状態に戻したいのです。

目的としては、マクロで実行した検索・置換の影響を、
編集中の画面に出さずに、編集を続けさせたいからです。

よろしくお願いします。

カテゴリ デジタルライフ > ソフトウェア > Word(ワード)

投稿日時 - 2014-02-22 01:01:14

QNo.8485184

すぐに回答ほしいです

質問者が選んだベストアンサー

スクロールするのは、[マクロの記録]で記録したものですか?
どのような動作を記録したのでしょうか?

[マクロの記録]をした場合、[置換]ダイアログなどで記録をしたときの
動作と、マクロ実行時の動作は基本的に同じになります。
処理することでカーソル位置が変わるということは、[すべて置換]など
での動作ではなく、個々に処理したときの動作かと思います。

[マクロの記録]したものだと、Selection.Findで検索するので、個別に
処理した場合にスクロールしてしまいます。

これをRange.Findでの検索方法に書き換えると、[置換]ダイアログとの
関連がないので、スクロールすることなく(セレクトされないで)処理
されます。

投稿日時 - 2014-02-23 22:34:47

補足

enunokokoroさん、ありがとうございました。
SelectionではなくRangeを使うのがポイントですね。
Wordマクロのヘルプを参考に
画面をスクロールさせずに置換できるマクロができあがりました。
こんな感じでーす。

Dim rng As Range
Set rng = ActiveDocument.Range(0, 0)
n = 0
With rng.Find

' 置換する文字
.Text = "・??"

' 検索パラメータ
.MatchCase = False
.MatchByte = False
.MatchWildcards = True

' 置換ループ
While .Execute
' 段落番号をインクリメント
n = n + 1
With .Replacement
' 置換後の文字
.Text = "・" + StrConv(CStr(n)), vbWide)
End With

' 置換実行
.Execute Replace:=wdReplaceOne
Wend
End With

投稿日時 - 2014-02-26 19:27:02

このQ&Aは役に立ちましたか?

9人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問