Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 「Tables.Add Range:=Selection.Range」とは

「Tables.Add Range:=Selection.Range」とは

動作検証バージョン:64bit Windows 10 Pro + 32bit Wordバージョン2104 ビルド13929.20296 Microsoft Store)

「Tables.Add Range:=Selection.Range」
といった検索キーワードでアクセスがあることに気が付きました

Word VBAの、
  ActiveDocument.Tables.Add _
    Range:=Selection.Range, _
    NumRows:=3, _
    NumColumns:=2
といったコードをご覧になった方による、検索でしょう。

[スポンサードリンク]

Tables.Add Range:=Selection.Rangeの意味

結論からお伝えすると「Tables.Add Range:=Selection.Range」とは、Tablesコレクションに用意されているAddメソッドを利用しているコードで、カーソルの位置に表を新規に作成するコードです。

「:=」の前の「Range」は、Tables.Addメソッドの引数名です。
  ActiveDocument.Tables.Add Range:=Selection.Range, …

「:=」の後ろの「Selection.Range」は、
  ActiveDocument.Tables.Add Range:=Selection.Range, …
拙著『Excel VBAユーザーのためのWord VBA入門(1)』の、「7-4.オブジェクトを返すSelectionの特徴的なプロパティ」でも解説している、Selectionオブジェクトに用意されているRangeプロパティを利用しているコード(式)です。

Tables.Addメソッドの引数RangeにはRangeオブジェクトを指定しなければならないため、Selection.Rangeプロパティでカーソル位置を表すRangeオブジェクトを取得しています。

Tables.Add Range:=Selection.Rangeを疑問に感じた方へ

「Tables.Add Range:=Selection.Range」の意味は上記のとおりですが、他にも疑問に感じる部分があるように思います。

カッコの有無

関数やメソッドで必ずカッコをつけるプログラミング言語に慣れている方の場合、
  ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=3, NumColumns:=2
といったカッコのつかないコードを気持ち悪いと感じるかもしれませんが、これはVBAの仕様です。

VBAでは関数・メソッド・プロパティで、そもそも引数を指定しない場合や、戻り値を使わない場合にカッコをつけません。

Tables.Addメソッドは、新規に挿入したテーブルを表すTableオブジェクトを返しますから、Tables.Addの戻り値をオブジェクト変数に代入する場合は、
  Dim tbl As Table
  Set tbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=3, NumColumns:=2)
のように引数をカッコで括る必要があります。

Tables.Add Range:=Selection.Rangeは代入文ではありません

VBAの名前付き引数に慣れていない方の場合、「Tables.Add Range:=Selection.Range」に「=」が使われているため、代入文と誤解しているケースもあるかもしれません。

その場合、名前付き引数についての記事を公開していますので一読して、「Tables.Add Range:=Selection.Range」が代入文でないことを強く意識してください。

[スポンサードリンク]

Home » ワードマクロ・Word VBAの使い方 » 表・テーブル » 「Tables.Add Range:=Selection.Range」とは

「表・テーブル」の記事一覧

検索


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

.