セミナーを受講された方から、数字を下付き文字に変更したいとのご要望をいただきました。
化学式を扱われているそうで、数字の一つ一つを手で選択して下付きにされていたそうです。
この手のことはマクロが得意です。お試しください。
<目次>
このマクロでできること
選択範囲内にある半角数字を下付きにします。
文字列が選択されていない場合には、カーソル位置の単語を選択し、その単語内の半角数字を下付きにします。
マクロの解説
文字列が選択されているかどうかの判定は、Selection.Type プロパティ にて行います。
選択されていない場合には、カーソルが文字の入力個所(Insertion Point)に対応します。これが、wdSelectionIP というわけです。
If Selection.Type = wdSelectionIP Then と記載すれば、「文字が選択されていなければ」の意味になります。
Expand メソッドにて、選択範囲を拡大しています。
引数(ひきすう)にて設定しています。
今回の例では、単語単位で範囲を拡大しますので、wdWordとしています。
Expand メソッドがとる引数はUnitだけなので、Unitという記載自体を省略できます。
Selection.Expand wdWord
さらに、引数を何も設定しない場合には、デフォルト値が採用されます。
デフォルト値はwdWordなので、実は何も書かなくても単語が自動的に選択されます。
Selection.Expand
それ以降は、よくあるワイルドカードの置換です。
8行目と9行目で検索する文字列と置換後の文字列の書式をクリアしています。
ポイントは、.Wrap = wdFindStop です。
この部分を、wdFindContinue としておくと、選択範囲内だけではなく、カーソルのあるストーリー全体に対して置換をしてしまいますので注意してください。→(ストーリー種別とは? )
マクロ
Sub 半角数字を下付きにする()
If Selection.Type = wdSelectionIP Then
Selection.Expand Unit:=wdWord
End If
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "([0-9]{1,})"
.Replacement.Text = "\1"
.Replacement.Font.Subscript = True
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub





