拙著『いちばんやさしいExcel VBAの教本』の、Lesson 52「プロパティは2種類あることを知っておきましょう」に、以下のような一文を書きました。
データを返すプロパティの一部は、データを設定することもできます。
Excel VBAの主なオブジェクトのプロパティで、取得だけでなく設定もできるのは、単なるデータを返すプロパティであるため、入れた一文です。
実はWord VBAの場合、主要なオブジェクトを返すプロパティの中に、設定できるものがいくつか存在します。
確認しやすいのは、RangeオブジェクトやSelectionオブジェクトの、Fontプロパティです。
Fontプロパティをオブジェクト変数から設定するサンプルマクロ
Word VBAでは、以下のようなSubプロシージャを実行できてしまいます。
Dim fnt As Word.Font
Set fnt = New Word.Font
fnt.Bold = True
fnt.ColorIndex = wdRed
End Sub
上記のSubプロシージャを実行すると、アクティブ文書で選択されている文字列が、太字の赤色になります。
VBAの経験がある方にとっても、ちょっと見慣れないコードだと思いますけれど、
Sub sample()
Selection.Font.Bold = True
Selection.Font.ColorIndex = wdRed
End Sub
といったSubプロシージャを実行したのと同じ結果となります。
サンプルマクロで行っている処理の流れ
Font型のオブジェクト変数を宣言して、
Dim fnt As Word.Font
インスタンスを生成しています。
Set fnt = New Word.Font
そもそも、このような形でいきなりインスタンスを生成できるオブジェクトは、それほどありません。
Word VBAのコードですからライブラリ名を省略して、
Dim fnt As Font
Set fnt = New Font
と書いてもOKです。
その後、このFontオブジェクトのプロパティを設定しておいてから、
fnt.Bold = True
fnt.ColorIndex = wdRed
選択範囲を表すSelectionオブジェクトのFontプロパティに対して、上記のオブジェクト変数fntを設定しています。
Selection.Font = fnt
Setキーワードは不要です。
設定もできるオブジェクトを返すプロパティの見分け方
ほとんどのオブジェクトを返すプロパティは、オブジェクトブラウザーの詳細ペインに「読み取り専用」と表示され、取得はできますが設定はできません。
これに対し、RangeオブジェクトやSelectionオブジェクトのFontプロパティには「読み取り専用」という表示がなく設定もできることが、注意して読めばわかります。
最終更新日時:2020-01-17 03:37
Home » ワードマクロ・Word VBAの使い方 » フォント » Word VBAのFontはオブジェクトを返すプロパティだが設定も可能
TrackBack:1
- TrackBack URL
- Word VBAのParagraphFormatもオブジェクトを返すプロパティだが設定も可能 from インストラクターのネタ帳
- Word VBAで、RangeやSelectionに用意されているParagraphFormatプロパティは、オブジェクトを返すプロパティですが設定もできます。