拙著『いちばんやさしいExcel VBAの教本』の、Lesson 52「プロパティは2種類あることを知っておきましょう」に、以下のような一文を書きました。
データを返すプロパティの一部は、データを設定することもできます。
Excel VBAの主なオブジェクトのプロパティで、取得だけでなく設定もできるのは、単なるデータを返すプロパティであるため、入れた一文です。
実はWord VBAの場合、主要なオブジェクトを返すプロパティの中に、設定できるものがいくつか存在します。
確認しやすいのは、RangeオブジェクトやSelectionオブジェクトの、Fontプロパティです。
Fontプロパティをオブジェクト変数から設定するサンプルマクロ
Word VBAでは、以下のようなSubプロシージャを実行できてしまいます。
Dim fon As Word.Font
Set fon = New Word.Font
fon.Bold = True
fon.ColorIndex = wdRed
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はオブジェクトを返すプロパティだが設定も可能