Home » 電子書籍 » Excel VBAユーザーのためのWord VBA入門 » コレクションのItemメソッドに指定する引数の型を意識しましょう

コレクションのItemメソッドに指定する引数の型を意識しましょう

拙著『Excel VBAユーザーのためのWord VBA入門(1)』では、複数のコレクションについて、単独のオブジェクトを取得するItemメソッドをご紹介しています。

これらItemメソッドの引数に指定できるデータ型が、明確にLongと定義されているものと、型が明示されていないVariantのものがあることを、意識しておきましょう。

Paragraphs.ItemとDocuments.Itemの違い

例えば、
「6-2. ParagraphsからParagraphを取得する」で解説しているParagraphs.Itemメソッドは、
  Function Item(Index As Long) As Paragraph
と定義されていることが、オブジェクトブラウザーの詳細ペインからわかります。

一方、
「2-6. Documents.ItemでDocumentを取得する」で解説しているDocuments.Itemメソッドは、
  Function Item(Index) As Document
となっています。

引数Indexに指定できるデータが、Paragraphs.Itemの場合は「Index As Long」となっているのに対し、Documents.Itemの場合は「As 〇〇」といった表記がありません。

Paragraphs.Itemには整数しか指定できないのに対し、Documents.Itemの場合「1」などの整数も「sample.docx」のような文字列も指定できるためです。

実行時エラーメッセージの違い

このことは、実行時エラーのメッセージからも垣間見えます。

例えば、以下のようにParagrapsh.Itemメソッドの引数に空白文字列を指定したコードを実行した場合には、

Dim par As Paragraph
Set par = ActiveDocument.Paragraphs.Item("")

「実行時エラー '13': 型が一致しません。」となります。

Paragraphs.Itemは引数にLong型しか指定できないにも関わらず、文字列を指定しているので「型が一致しません。」です。

それに対し、Documents.Itemメソッドの引数に空白文字列を指定した場合、

Dim doc As Document
Set doc = Documents.Item("")

「実行時エラー '4160': ファイル名が無効です。」となります。
Documents.ItemはString型も引数として受け取れるため「型が一致しません。」ではないわけです。

最終更新日時:2021-04-03 15:23

[スポンサードリンク]

Home » 電子書籍 » Excel VBAユーザーのためのWord VBA入門 » コレクションのItemメソッドに指定する引数の型を意識しましょう

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

検索


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

.