文字列を選択して、その文字列を丸かっこや鉤かっこで囲むマクロってけっこう役に立ちます。
特に、日本語を書いている最中に、半角の角かっこで文字を囲む場合には、この手のマクロは威力を発揮します。
カーソル移動だけではなく、IME(ATOK)のオン・オフもすべてやるのは面倒ですから。
先日の大阪のJTFセミナー以来、しんハムさんがいろいろとWordマクロ記事を書かれています。
しんハムさんのブログ記事(Wordマクロ その3 – 変数と定数の話 )のマクロを見て、このマクロを思い出しました。
Wordには、InsertBeforeやInsertAfterといった便利なメソッドも用意されているので、こんな書き方もありますよ、という紹介です。
<目次>
このマクロでできること
文字列を選択してマクロを実行すると、選択されている文字列の前に半角の角かっこ [ を入力し、選択されている文字列の後に、 ] タブ と入力します。角かっこと「タブ」の間には半角スペースが入っています。
そうです。「ファイル」を選択して実行すると、[ファイル] タブになるというわけです。
文字列入力後に選択が解除されて、タブの右側にカーソルが移動します。
(実行前) (実行後)
マクロの解説
InsertBefore メソッドで、選択範囲の直前に文字列を入力します。
入力できる文字列に書式を設定できません。選択された文字列の直前の文字の書式に一致します。
InsertAfter メソッドで、選択範囲の直後に文字列を入力します。
文字列の書式は、選択された文字列の最後の文字の書式に一致します。
これらのメソッドのよいところは、選択範囲にある文字列は一切触らないということです。書式がそのまま残りますから安全です。
選択された文字列に書式がない場合には、マクロ2の記載がシンプルでわかりやすいですね。
上記の特徴を比較してみましょう。それぞれの良し悪しがありますから、使い分けたらいいと思います。
・マクロ1
(実行前) (実行後)
・マクロ2
(実行前) (実行後)
マクロ1
Sub 文字列を選択範囲の前後に挿入する() With Selection .InsertBefore Text:="[" '選択範囲の直前 .InsertAfter Text:="] タブ" '選択範囲の直後 .Collapse Direction:=wdCollapseEnd '選択の解除 End With End Sub
マクロ2
Sub 文字列を選択範囲の前後に挿入する_2() With Selection .Text = "[" & .Text & "] タブ" .Collapse Direction:=wdCollapseEnd '選択の解除 End With End Sub
関連記事
しんハムさんのブログ記事(Wordマクロ その3 – 変数と定数の話 )