「Cellsのときはどうして候補が表示されないのでしょうか?」
VBA(Visual Basic for Applications)でマクロ作成を始め、自動メンバー表示の便利さに気づいた方からいただく定番のご質問です。
例えば、Rangeプロパティを使って「range("A1").」と記述した場合、以下のようにRangeオブジェクトのメンバーが表示されます。
しかし、同じRangeオブジェクトを返すはずのCellsプロパティを使って「cells(1,1)」と記述した場合には自動メンバー表示されません。
ショートカットキー[Ctrl]+[スペース]を押しても、やっぱり表示されません。
そのため、先のようなご質問をいただくことになります。
Cellsで自動メンバー表示させる方法
どうしてCellsプロパティで候補が表示されないのかの理由は、説明がちょっと長くなりますので、とりあえず、解決策をご紹介しておきます。引数を指定せずに「cells.」または「cells().」と記述する
「cells(1, 1).」と記述した場合は自動メンバー表示されませんが、引数の指定を後回しにして、「cells.」「cells().」と入力した場合は下図のように、Rangeオブジェクトのメンバーが自動メンバー表示されます。
ですから、例えば、「cells().」と入力して、自動メンバー表示からValueプロパティを選択して「cells().Value」と入力してからカーソルを引数を指定するカッコ内に移動して「1, 1」という引数を追加してやれば、Cellsプロパティでも自動メンバー表示を使ってコーディングすることが可能です。
Cellsプロパティで、自動メンバー表示のリストから入力したいという方は一度お試しください。
補足
この記事を読んだ方の中には、他のプロパティでもこの技を使えると短絡的に考えてしまう方がいらっしゃるかもしれません。そんな方向けに『Worksheetsプロパティで自動メンバー表示されないときには、Cellsプロパティで使った技を使えない』という記事を公開しました。合わせてご参照ください。(2013-01-22 追記)
また、自動メンバー表示されるものとされないものの違いについて、解説記事を公開しました。(2013-01-23 追記)
更に、そもそもなぜCellsプロパティで自動メンバー表示されないのかについての解説記事を公開しました。(2013-01-24 追記)
Home » Excel VBA Rangeオブジェクト » Cellsプロパティ » Cellsプロパティで自動メンバー表示させる方法