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

2012年3月29日

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

上付き文字に一括で変更します。

翻訳ソフトやエディタの場合、上付き文字を入力することができない場合があります。

そのようなときに、仮の文字を入力しておき、このマクロで一括して上付き文字に変換します。

かつて公開していたマクロがあったのですが、最近セミナーの受講生からのご要望があったので、新たに作ってみました。

このマクロでできること

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

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

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

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

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

マクロの解説

このような検索では、ワイルドカードを使って「^」の後に任意の半角数字とマイナス記号が続くような検索式を使いたくなりますよね。

しかし、ワイルドカード検索では、「^」を用いることができません。

ワイルドカード検索で「^」記号を検索するには、「^^」とします。ワイルドカードで用いる記号自体を検索する場合には、^を記号の前につけるというルールがあるからです。

今回は、ワイルドカードを使わずに実施しています。ワイルドカードの一括置換については、こちらの記事をご覧ください。

(追記:2012/04/03:ワイルドカードによる置換が可能でした。失礼しました。)

なので、少し面倒ですが、「^」自体は完全一致の条件で検索して、「^」自体を検索して、その後に続く半角数字とマイナス記号をMoveEndWhileメソッドを用いて特定して、上付きにしています。

(追記:2012/03/29:完全一致の条件は不要でした。失礼しました。こちらの記事でご確認ください。)

マクロ


Sub 書式変更_上付き()

 Dim myRange As Range '検索用

 Set myRange = ActiveDocument.Range(0, 0)

 With myRange.Find
   .Text = "^"
   .Highlight = False
   .Wrap = wdFindStop
'   .MatchWholeWord = True ←こちら不要です。

   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
      .Collapse direction:=wdCollapseEnd
     Else
      .HighlightColorIndex = wdBlue
      .Collapse direction:=wdCollapseEnd
     End If
    End With
   Loop

 End With

 Set myRange = Nothing

End Sub

コメント

 

  • 2. Re:はじめまして

    うらたさん、

    こんにちは。コメントをどうもありがとうございました。

    おっしゃるとおりですね。

    ハットマークは、ワイルドカードの場合^^でした(^^)。

    こちらの記事に別のマクロをかいてみました。

    ご覧ください。

    http://ameblo.jp/gidgeerock/entry-11211963870.html

    どうもありがとうございました。

  • 1. はじめまして

    こんにちは。いつも楽しく拝見しています。

    ハットマークですが、word2003では下記でワイルドカード検索できるようです。

    .Text = "^^"

    うらた

関連記事

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

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

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

-コード
-, , ,