Word (VBA)

Word VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
アクション前後での同一画面表示
投稿日時: 21/10/08 23:37:04
投稿者: rodeo540
メールを送信

アクション前後で画面表示を同一のものにしたいです。
 
Application.ScreenUpdating = False,true
を使用するという意味ではありません。
 
 
Sstr = Selection.Start
Send = Selection.End
 〜〜〜〜アクション〜〜〜〜
Range(Sstr, Send).Select
 
でカーソルの位置は戻りますが、カーソルが位置するページの先頭が
画面上の初めに来たりと、見えている画面は変わってしまいます。
視覚的に見えている画面そのものを
アクション前後で同じものに戻したいです。
 
どなたか、アドバイスお願い致します。

回答
投稿日時: 21/10/11 16:27:09
投稿者: Suzu

Pane の VerticalPercentScrolled プロパティーになります。
 
 
Selection を、文末に変更し、そこに「いろは」の文章を入れ
選択位置、スクロール位置を戻しています。
 
Sub Sumple1()
  Dim v As Long
  Dim sec As Selection
 
  Set sec = Selection
  v = ActiveWindow.ActivePane.VerticalPercentScrolled
 
 
  Selection.EndKey Unit:=wdStory
  Selection.TypeText Text:="いろは"
 
  ActiveDocument.Range(sec.Start, sec.End).Select
  ActiveWindow.ActivePane.VerticalPercentScrolled = v
End Sub
 
 
Selctionを使うから、選択位置や、画面のスクロール位置が変わってしまいます。
 
Selection を使わなければ、選択位置・画面のスクロール位置を戻す必要がありません。
 
 
Excelの場合もそうですが、マクロの自動記録動をつかいコードを生成すると
Seletion が使われます。
 
 
それを参考にコーディングを進めると、Selectionが必須の様に思えるかもしれませんが
多くの場合Selectionを使わない方法を採ることができます。
 
Sub Sumple2()
  ActiveDocument.Content.InsertAfter Text:="いろは"
End Sub
 
上記の様に、シンプルに済むことが多いです。
 
Selection は、複数のオブジェクトを含める事ができます。
Rangeであったり、Shapeであったり、なので、コーディングは楽チンかも知れませんが
 
可読性が悪くもなりますので、どのように使わないようにしたらよいかいろいろ調べてみてください。

投稿日時: 21/10/12 11:07:27
投稿者: rodeo540
メールを送信

>Pane の VerticalPercentScrolled プロパティーになります。
 
ありがとうございました。最後に画面を戻す際に
なぜか、F8で1行ずつ進めると代入できるのに、
普通に回すと代入できず、sleep、DoEventsでとめても代入できず、
ちょっと困っていましたが、原始的にまたSelect使ってしまいました。。。
 
エクセルだとSelect使わなくてもいいのですが、
ワードの場合、TEXTボックス、シェイプを挿入したりするとそこにフォーカスが移ってしまうので、
ある程度カーソルの位置は変わってしまいますよね?
その辺り、難しいところです。。
 
いずれにせよ、頂いたお返事でやりたいことが出来ました。
ありがとうございました!

投稿日時: 21/10/12 11:10:31
投稿者: rodeo540
メールを送信

解決済みにし忘れたので、そのための再投稿です。