こんにちは、Ryoです。
Excel上で文字を表記する際に、上付き文字や下付き文字等、取り消し線などの文字飾りを設定したいことがあると思います。VBAでもSuperscript/Subscript/Strikethroughプロパティを使用することで実行出来ますので、今回はその内容について書いていきます。
1.サンプル概要
以下サンプル画像のように「πr2」「Al2O3」「見え消し」と書かれた文字列があるとします。
サンプルコードを実行することで、それぞれ上付き/下付き/取り消し線を設定します。
表内のC列に書いているのは使用するプロパティで、サンプル動作とは関係ありません(笑)
2.サンプルコード
Sub Sample1() '上付き文字を設定する Cells(1, 1).Characters(Start:=3, Length:=1).Font.Superscript = True '下付き文字を設定する(2ヶ所) With Cells(2, 1) .Characters(Start:=3, Length:=1).Font.Subscript = True .Characters(Start:=5, Length:=1).Font.Subscript = True End With '取り消し線を設定する Cells(3, 1).Font.Strikethrough = True End Sub
上付き文字を設定するには、
オブジェクト.Superscript = True
下付き文字を設定するには、
オブジェクト.Subscript = True
取り消し線を設定するには、
オブジェクト.Strikethrough = True
このような構文を使用することで設定出来ます。Trueで設定なので、解除する場合はFalseを指定すればOKです。
オブジェクトにはFontオブジェクトを指定しますが、SuperscriptプロパティとSubscriptプロパティはそれぞれ対象とする文字の位置を指定する必要があるので、Charactersプロパティを使用します。
オブジェクト.Characters(開始位置,長さ)
オブジェクトはRangeオブジェクトを指定し、対象とする文字の開始位置をStart:=●、長さをLength:=●として指定しますので、サンプルでは以下のようにしています。
Cells(1, 1).Characters(Start:=3, Length:=1).Font.Superscript = True
Cells(2, 1).Characters(Start:=3, Length:=1).Font.Subscript = True
Cells(2, 1).Characters(Start:=5, Length:=1).Font.Subscript = True
この指定でセルA1の文字3番目の1文字を上付きに、セルA2の文字3番目と5番目の1文字を下付きに設定するという形になります。
Strikethroughプロパティについては、特に難しいこともなくFontオブジェクトに対して指定するだけなので問題ないかと思います。
Cells(3, 1).Font.Strikethrough = True
◆参考
ちなみに上述で紹介しているCharactersプロパティですが、その中のStartとLengthは記述を省略することも可能なので、以下の様にも出来ます。
Sub Sample2() Cells(1, 1).Characters(3, 1).Font.Superscript = True With Cells(2, 1) .Characters(3, 1).Font.Subscript = True .Characters(5, 1).Font.Subscript = True End With Cells(3, 1).Font.Strikethrough = True End Sub
これで実行しても結果は同じです。記述が短くなってスッキリしますが、コメントなどに元の構文を書いておいた方が、すっかり時間経過した後に??とならないので良いかもしれませんね。
3.まとめ
文字飾りなので利用する機会は限られますが、処理した結果などを出力する際に知っておくと見やすい状態で文字表記出来ますから良いと思います。
私の場合は取り消し線を使うことが多いので、何か機会があればぜひご活用くださいね。
以上、上付き/下付き文字、取り消し線を設定する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo