【Word VBA】指数を上付きに変更するWordマクロ(その2)

2012年3月29日

(追記)このマクロには改良版があります。
指数を上付きに変更するWordマクロ(その3)

かつて紹介した「指数を上付きに変更するマクロ」をもう一度紹介してみます。

これ、なかなかいいですね。

先日のサン・フレア アカデミーさんのセミナー(【開催報告】Wordマクロで作業スピードアップ』セミナー)にてご要望をいただきました。

要は、翻訳でなくとも、技術文書を作成していれば上付きの数字を必要とすることありますよね。

しかも、その出現頻度が高い場合、わざわざ上付きにするの面倒です。

ショートカットキーもあります。

ちなみに、デフォルトでショートカットキーが割り当てられています。

[Ctrl] + [Shift] + [+]

そうであっても、毎回毎回これを押すのは面倒だ。

そんなわけで、上付きにしたい部分に印をつけておいて、後で一括で上付き文字にする方法をご紹介します。

このマクロでできること

数式の指数を上付きにします。

^ (ハット)の後にある数字とマイナス記号を上付きにして、黄色蛍光ペンで着色します。

^ (ハット)が単独で用いられている場合には、青色蛍光ペンで着色します。

一括置換をするときには、かならず蛍光ペンなどで色を付けるようにするといいですね。

あとで自動処理をした箇所を目視で確認できますから。

マクロの解説

前回紹介したマクロと少し変更しました。

「^」をまず検索して、その後に続く半角数字とマイナス記号をMoveEndWhileメソッドを用いて特定して(14行目)、上付きにしています(17行目)。

指数に英文字(例えば、nなど)を使う場合には、cset:="1234567890-abcnm"などに変更してみてください(14行目)。

 

ちなみに、前回の記事ではハット(^)を完全一致で検索する方法をご紹介していましたが、別に完全一致にする必要なんてないですよね。

どうしてそう思ったのかな(笑)。しかも、Wordの仕様上、ハットを完全一致で検索することはできないし。(「検索と置換」ダイアログボックスでお試しください。)

失礼しました。

完全一致の条件を外しました。

 

→後日、ワイルドカードを用いた一括置換での実施方法もご紹介しました。ご覧ください。(指数を上付きに変更するマクロ(その3) )。

マクロ


Sub 書式変更_上付き()

 Dim myRange As Range '検索用

 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
   .Text = "^"
   .Highlight = False
   .Wrap = wdFindStop

   Do While .Execute = True
    With myRange
     .MoveEndWhile cset:="1234567890-"
     If Len(myRange.Text) > 1 Then
      .Text = Mid(myRange.Text, 2)
      .Font.Superscript = True
      .HighlightColorIndex = wdYellow
     Else
      .HighlightColorIndex = wdBlue
     End If
     .Collapse direction:=wdCollapseEnd
    End With
   Loop

 End With

 Set myRange = Nothing

End Sub

関連記事

指数を上付きに変更するWordマクロ

指数を上付きに変更するWordマクロ(その2)

指数を上付きに変更するWordマクロ(その3)

-コード
-, , ,