Home » ワードマクロ・Word VBAの使い方 » フォント » Word VBAのFontはオブジェクトを返すプロパティだが設定も可能

Word VBAのFontはオブジェクトを返すプロパティだが設定も可能

動作検証バージョン:Windows版Word(バージョン1810 ビルド11029.20079)

拙著『いちばんやさしいExcel VBAの教本』の、Lesson 52「プロパティは2種類あることを知っておきましょう」に、以下のような一文を書きました。

データを返すプロパティの一部は、データを設定することもできます。

Excel VBAの主なオブジェクトのプロパティで、取得だけでなく設定もできるのは、単なるデータを返すプロパティであるため、入れた一文です。

実はWord VBAの場合、主要なオブジェクトを返すプロパティの中に、設定できるものがいくつか存在します。

確認しやすいのは、RangeオブジェクトやSelectionオブジェクトの、Fontプロパティです。

Fontプロパティをオブジェクト変数から設定するサンプルマクロ

Word VBAでは、以下のようなSubプロシージャを実行できてしまいます。

Sub Fontプロパティをオブジェクト変数から設定する()
 Dim fon As Word.Font
 Set fon = New Word.Font

 fon.Bold = True
 fon.ColorIndex = wdRed

 Selection.Font = fon
End Sub

上記のSubプロシージャを実行すると、アクティブ文書で選択されている文字列が、太字の赤色になります。

VBAの経験がある方にとっても、ちょっと見慣れないコードだと思いますけれど、
 Sub sample()
  Selection.Font.Bold = True
  Selection.Font.ColorIndex = wdRed
 End Sub
といったSubプロシージャを実行したのと同じ結果となります。

サンプルマクロで行っている処理の流れ

Font型のオブジェクト変数を宣言して、
  Dim fon As Word.Font
インスタンスを生成しています。
  Set fon = New Word.Font

そもそも、このような形でいきなりインスタンスを生成できるオブジェクトは、それほどありません。

ライブラリ名を省略して、
  Dim fon As Font
  Set fon = New Font
と書いてもOKです。

その後、このFontオブジェクトのプロパティを設定しておいてから、
  fon.Bold = True
  fon.ColorIndex = wdRed

選択範囲を表すSelectionオブジェクトのFontプロパティに対して、上記のオブジェクト変数fntを設定しています。
  Selection.Font = fon

この代入に、Setキーワードは不要です。

設定もできるオブジェクトを返すプロパティの見分け方

ほとんどのオブジェクトを返すプロパティは、オブジェクトブラウザーの詳細ペインに「読み取り専用」と表示され、取得はできますが設定はできません。

これに対し、RangeオブジェクトやSelectionオブジェクトのFontプロパティには「読み取り専用」という表示がなく設定もできることが、注意して読めばわかります。

最終更新日時:2021-03-12 14:35

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » フォント » Word VBAのFontはオブジェクトを返すプロパティだが設定も可能

Copyright © インストラクターのネタ帳 All Rights Reserved.

.