導入
Wordで文書を作成していると、見出しやポスター作成の際に「標準のフォントサイズ選択肢(最大72pt)では小さすぎる」と感じたことはありませんか?実は、フォントサイズボックスに直接数値を入力することで72pt以上のサイズも設定可能ですが、VBAを活用すれば、複数の見出しを一括で変更したり、複雑な帳票に合わせて細かくフォントサイズを制御したりすることが可能です。今回は、実務で役立つ「フォントサイズを自由に変更するVBAテクニック」を解説します。
基礎知識
Word VBAにおいてフォントサイズを操作するには、FontオブジェクトのSizeプロパティを使用します。
Wordのフォントサイズは「ポイント(pt)」単位で指定します。手動設定と同様に、VBAでも0.5pt単位での指定が可能です(例:10.5pt)。なお、指定できる数値は正の数である必要があります。
実装/解決策
フォントサイズを変更するには、対象となる「範囲(Range)」を指定し、そのFont.Sizeプロパティに数値を代入します。
例えば、現在選択している箇所のサイズを100ptにしたい場合は、Selection.Font.Size = 100 と記述するだけで完了します。
実務では、特定のスタイルが適用された文字列を一括変換したり、入力済みの特定箇所だけを強調したりする際にこの手法が非常に有効です。
サンプルプログラム
以下のコードは、文書内の選択範囲のフォントサイズを、指定した数値に変更するシンプルなマクロです。
Sub SetFontSizeCustom()
‘ ユーザーから数値を入力してもらうための変数
Dim targetSize As String
‘ ユーザーに希望のフォントサイズを入力させる
targetSize = InputBox(“フォントサイズをポイント単位で入力してください(例: 80)”, “フォントサイズ設定”)
‘ キャンセルボタンが押された場合や空欄の場合は終了
If targetSize = “” Or Not IsNumeric(targetSize) Then
MsgBox “有効な数値を入力してください。”, vbExclamation
Exit Sub
End If
‘ 選択範囲のフォントサイズを変更
‘ 0.5単位で指定可能。数値は文字列から変換
Selection.Font.Size = Val(targetSize)
MsgBox “フォントサイズを ” & targetSize & “pt に設定しました。”
End Sub
応用・注意点
1. 0.5単位の制約と丸め込み
前述の通り、Wordのフォントサイズは0.5pt単位です。もし「10.27pt」のように細かすぎる数値を指定すると、Word側で自動的に最も近い0.5pt単位に丸め込まれます。計算でサイズを算出する場合は、あらかじめ0.5の倍数になるように処理を挟むと意図しない表示崩れを防げます。
2. エラー回避のポイント
極端に大きな数値(例:1638pt以上)を指定すると、エラーが発生したり、文字が表示されなくなったりすることがあります。実務で自動化を行う際は、あらかじめ設定可能な上限値を定数などで定義しておき、入力値チェックを行うとより堅牢なプログラムになります。
3. 適用範囲の明確化
Selection(選択範囲)を使用するとユーザーの操作に依存してしまいます。大規模な文書を扱う場合は、特定のスタイルや特定の文字列を検索して範囲指定(Rangeオブジェクト)を行うコードに書き換えると、より安定した自動化が可能になります。
