Home » 電子書籍 » Excel VBAユーザーのためのWord VBA入門 » Word VBAでNewしたオブジェクト変数を代入する際にSetは不要

Word VBAでNewしたオブジェクト変数を代入する際にSetは不要

動作検証バージョン:Windows 11 Home + 64bit Word バージョン 2407(ビルド17816.20000クイック実行)ベータチャネル

拙著『Excel VBAユーザーのためのWord VBA入門(1)』では、Newキーワードを使ってWord文書とは無関係のオブジェクト変数を使って設定を行うサンプルをご紹介しています。

Newしたオブジェクト変数をプロパティに代入するサンプル

「4-5. WordではFontプロパティで設定もできる」では、以下のようなRange.FontプロパティにFont型オブジェクト変数を代入することで設定する例を、

Sub Font型変数をNewして設定する()
    Dim fon As Font
    Set fon = New Font

    fon.Size = 24
    fon.Name = "HG明朝E"

    ActiveDocument.Range(0, 1).Font = fon
End Sub

「5-4. ParagraphFormatで設定もできる」では、以下のようなRange.ParagraphFormatプロパティにParagraphFormat型オブジェクト変数を代入する例をご紹介しています。

Sub ParagraphFormat型変数をNewして設定する()
    Dim par_fmt As ParagraphFormat
    Set par_fmt = New ParagraphFormat

    par_fmt.LineSpacingRule = wdLineSpaceExactly
    par_fmt.LineSpacing = 24

    ActiveDocument.Range(0, 1).ParagraphFormat = par_fmt
End Sub

Newしたオブジェクト変数をプロパティに代入する際にSetは不要

これらのコードで、Fontプロパティ・ParagraphFormatプロパティにオブジェクト変数を代入する行に、Setキーワードが必要なのではないかと考える方がいらっしゃるかもしれません。

Word VBAで、こういったコードでSetキーワードは不要です。
上記2つのSubプロシージャの、

ActiveDocument.Range(0, 1).Font = fon
ActiveDocument.Range(0, 1).ParagraphFormat = par_fmt

に、以下のようにSetキーワードを付加して実行してみると、

Set ActiveDocument.Range(0, 1).Font = fon
Set ActiveDocument.Range(0, 1).ParagraphFormat = par_fmt

いずれも

実行時エラー '438'
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

実行時エラーが発生します。


Access VBAでは、こういった戻り値がオブジェクトのプロパティにNewしたオブジェクト変数を代入するときに、Setキーワードをつけてもつけなくても動作する例を私も見たような記憶があるのですが(曖昧でごめんなさい)。

[スポンサードリンク]

Home » 電子書籍 » Excel VBAユーザーのためのWord VBA入門 » Word VBAでNewしたオブジェクト変数を代入する際にSetは不要

「Excel VBAユーザーのためのWord VBA入門」の記事一覧

検索


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

.