(Wordマクロ)記憶した位置に戻る(Old Selection Position)
Wordで、50ページも、100ページもある長い文書を編集していると、直前に見ていた箇所に戻りたいときがありますよね。
きちんと見出しの立っている文章ならば探しやすいのですが、そうでない文書も多々あるのも現状。Ctrl+Zは一つ前の編集箇所に戻れますが、Undoを使ったがために、編集したところをRedo(やり直し)し忘れた経験、誰しもがあるのではないでしょうか。
Wordの機能に、「ブックマーク機能」があります。ブックマーク機能の詳述は別のWebサイトに譲るとして、この機能を使えば、今回紹介するマクロは必要ありません。ただ、ブックマーク機能は名前を付けないといけなかったり、いったん付けたブックマークは削除しない限り残り続けたりと、多少面倒くさいところもあります。
今回紹介するマクロは、現在地を記憶しておき、カーソル位置を移動したあと、記憶した場所に戻りたいときに使用します。
記述位置
Normal.dotmに記述すればすべてのWord文書で利用できるので便利ですが、マクロを使用していることを明示したい場合はその文書の標準モジュールに記述しても構いません。この場合、マクロ有効文書(docm)として保存する必要がある点に注意してください。
コード
貼り付けるコード
以下のコードを標準モジュール内に貼り付けます。
Option Explicit Public Old_Selection As Range Public Sub 現在地を記憶() Set Old_Selection = ActiveDocument.Bookmarks("\StartOfSel").Range End Sub Public Sub 一つ前の位置に戻る() Old_Selection.Select End Sub
コード解説
まず、Range型のOld_Selectionをグローバル変数として定義します。
次に、「現在地を記憶」のプロシージャで、WordのVBAに標準で備わっているBookmark機能を使って、現在地を記憶します。
実際に記憶した位置に戻る必要があるときは、「一つ前の位置に戻る」プロシージャを呼び出します。
オブジェクト変数が解放されないことに違和感がある場合は、Old_selection.selectの次の行で、Set Old_Selection = Nothingと記述すればよいですが、このように記述してしまうと、1回しか記憶した位置に戻れないことになります。それが不便だという場合は、ThisDocumentでWord文書を閉じる際の挙動としてオブジェクト変数の解放を記述する方がよいでしょう。
Private Sub Document_Close() 'ThisDocument内に記述します Set Old_Selection = Nothing End Sub
ショートカットキーの割当
ショートカットキーに割り当てよう
上記のコードで目的の動作は達成できます。ただ、このままでは、いちいち開発タブからマクロを選んで、記憶して、戻りたいときはまた開発タブを選んで、マクロを選んで、…と非効率極まりありません。
そこでお勧めは、上記のコードを使っていないショートカットキーとして割り当ててしまうことです。
ショートカットキーの割当方法
オプションのリボンのユーザー設定から、ショートカットキーの「ユーザー設定」を選択します。
ショートカットキーの「ユーザー設定」を選択すると、下の画面が開きます。
分類のリストボックスの下の方に、「マクロ」がありますので、選択します。
文書単体に保存している場合は、保存先をNormal.dotmから、マクロ保存先の文書に選択し直します。
その場合、マクロが記録されている文書を開いていない場合は、ショートカットキーが有効となりませんので、注意してください。
最後に、普段使っていないショートカットキーを割り当てるキーとして選択し、「割り当て」を選択します。
これで一つ前の位置に戻るマクロをショートカットキーとして割り当てることができました。
まとめ
いかがでしたでしょうか。
3桁数字を超える図入りのWord文書はページ送りにも時間がかかり、不便なものです。
ちょっとしたストレスを軽減して、快適に文書制作に取りかかりたいものですね。
最近のコメント