インテリセンス機能の一つ、自動メンバー表示について、Cellsプロパティの場合「cells().」と引数の指定を後回しにしてやればとりあえず表示させられること、この方法はWorksheetsプロパティなどでは使えないということをご紹介しました。
自動メンバー表示されるものとされないものの違いとは
そもそも、VBE(Visual Basic Editor)でコーディングするときに、自動メンバー表示されるときとされないときの違いは何なのでしょうか。プロパティやメソッドの戻りがObject型など曖昧な型のため
プロパティやメソッドの戻りの型が、明確な場合は自動メンバー表示されるけれど、曖昧な場合には表示されないのです。
WorksheetsオブジェクトのデフォルトプロパティはObjectを返すので自動メンバー表示できない
例えば「Worksheets(1)」という記述は、Worksheetsのデフォルトのプロパティに「1」を指定しているわけです。
オブジェクトブラウザでWorksheetsオブジェクトのデフォルトプロパティを確認すると、詳細ペインに
「Property _Default(Index) As Object」
と記述されています。
Worksheetsコレクションオブジェクトの、_Defaultプロパティに、引数・Indexを指定すると、Objectが返される、ということが書かれています。
(お使いのオブジェクトブラウザで「_Default」が表示されていない場合、オブジェクトブラウザ内で右クリックして表示されるショートカットメニューで、[非表示のメンバーを表示]をOnの状態にしてください)
WorkbooksオブジェクトのデフォルトプロパティはWorkbookを返すので自動メンバー表示できる
比較のために、自動メンバー表示されるWorkbooksオブジェクトのデフォルトプロパティを確認しましょう。
「Property _Default(Index) As Workbook」
と書かれています。
Workbooksコレクションオブジェクトの、_Defaultプロパティに、引数・Indexを指定すると、Workbookが返されるということが書かれています。
ですから「workbooks(1).」と入力した場合には、Workbookオブジェクトのメンバーが自動的に表示されるのです。
Workbooksプロパティでは返されるのがWorkbookとはっきりしているため、Workbookオブジェクトのメンバーを自動的に表示できますが、Worksheetsプロパティでは返されるのがObjectという曖昧な状態ですから、自動メンバー表示しようがないのです。
ActiveSheetの戻りはObjectだから自動メンバー表示できず、ActiveBookの戻りはWorkbookだから自動メンバー表示できる
グローバルなプロパティでも同じことが確認できます。
ActiveSheetプロパティの戻りはObjectですから自動メンバー表示できず、
ActiveBookプロパティの戻りはWorkbookですから自動メンバー表示できるわけです。
これが、VBEで自動メンバー表示されるプロパティ・メソッドと、表示されないプロパティ・メソッドの違いです。違いの原則です。
じゃあCellsの場合は?
ここまで読んでいただけたら、もちろん、オブジェクトブラウザで、グローバルのCellsプロパティを確認してらっしゃることでしょう。
そして、オブジェクトブラウザでグローバルなCellsプロパティをご確認いただいた方は、更なる疑問を感じてらっしゃるはずです。
その解説は、別記事で行います。※Cellsプロパティで自動メンバー表示されない理由について記事を公開しました。(2013-01-24 追記)
Home » VBE(Visual Basic Editor) » インテリセンスが効いて自動メンバー表示されるものと、されないものの違い