Word VBAの、RangeオブジェクトやSelectionオブジェクトのFontプロパティは、オブジェクトを返すプロパティですが、設定もできることを記事にしました。
他にもそういったプロパティが存在します。
RangeオブジェクトやSelectionオブジェクトのParagraphFormatプロパティも、
単なるデータではなくオブジェクトを返すプロパティですけれど、設定することができます。
SelectionオブジェクトのParagraphFormatをオブジェクト変数から設定するサンプルマクロ
以下のSubプロシージャを実行すると、カーソルの置かれている段落の左右インデント幅が50ポイントに設定されます。
Dim par_fmt As Word.ParagraphFormat
Set par_fmt = New Word.ParagraphFormat
par_fmt.LeftIndent = 50
par_fmt.RightIndent = 50
End Sub
Sub sample()
Selection.ParagraphFormat.LeftIndent = 50
Selection.ParagraphFormat.RightIndent = 50
End Sub
のようなSubプロシージャを実行したときと同じ結果になります。
サンプルマクロで行っている処理の流れ
オブジェクト変数par_fmtに、
Dim par_fmt As Word.ParagraphFormat
Set par_fmt = New Word.ParagraphFormat
ParagraphFormatオブジェクトのインスタンスを生成して参照を格納しておきます。
この部分は、
Dim par_fmt As ParagraphFormat
Set par_fmt = New ParagraphFormat
でもOKです。
その後、オブジェクト変数のプロパティを設定して、
par_fmt.LeftIndent = 50
par_fmt.RightIndent = 50
SelectionオブジェクトのParagraphFormatプロパティに、オブジェクト変数par_fmtを設定しています。
Selection.ParagraphFormat = par_fmt
SelectionオブジェクトのParagraphFormatプロパティを、オブジェクトブラウザーで調べると詳細ペインに「読み取り専用」の表示はありません。オブジェクトを返すプロパティであるにも関わらず、設定もできることを確認できます。
オブジェクト変数に参照を代入する場合はSetステートメントにする必要がありますけれど、Fontプロパティと同様、
Selection.ParagraphFormat = par_fmt
の部分にSetキーワードは不要です。
最終更新日時:2021-05-20 10:02
Home » ワードマクロ・Word VBAの使い方 » 段落・パラグラフ » Word VBAのParagraphFormatもオブジェクトを返すプロパティだが設定も可能