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 fnt As Word.Font
 Set fnt = New Word.Font

 fnt.Bold = True
 fnt.ColorIndex = wdRed

 Selection.Font = fnt
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プロパティには「読み取り専用」という表示がなく設定もできることが、注意して読めばわかります。

最終更新日時:2018-12-13 03:12

[スポンサードリンク]

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

TrackBack:0

TrackBack URL
[スポンサードリンク]

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

「フォント」の記事一覧

検索


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

.