• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロパティとメソッドが混乱してくる)

プロパティとメソッドが混乱してくる

このQ&Aのポイント
  • プロパティとメソッドの区別がつかない場合、特にドットが連なると混乱します。例えば、ActiveSheet.Cells.SpecialCells(xlLastCell).Addressのステートメントでは、どれがメソッドで、どれがプロパティで、どれがオブジェクトで、どれがコレクションかわかりにくくなります。
  • 混乱を避けるためには、オブジェクト.メソッドやオブジェクト.プロパティという形式で記述されているか確認することが重要です。たとえば、ActiveSheetオブジェクトのCellsメソッドのSpecialCellsプロパティのAddressプロパティは、オブジェクト.メソッド.プロパティの順番で記述されています。
  • メソッドとプロパティの違いを理解している場合でも、ドットが連なると意味がわかりにくくなります。見分けるためには、コードのドキュメンテーションやマニュアルを参照することが役立ちます。また、コードエディタの補完機能やツールチップを活用して、適切なメソッドやプロパティを選択することもオススメです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KI401
  • ベストアンサー率53% (44/82)
回答No.1

先に言っておくが、VBAは全然詳しくない。 > メソッド、プロパティの違いは理解しているつもりです。 理解できてない。 obj.fizz(buzz)ならfizzはobjのメソッド。 obj.hogeならhogeはobjのプロパティ。 fizz,hogeはどちらも、objのメンバ。 カッコがついていればそれは明らかにメソッドで、関数適用している。 VBAで関数オブジェクトとか存在するのかどうか知らないが、 メソッドなんていうのは普通オブジェクトの特殊なメンバに対する呼び名でしかない。 メソッドとプロパティの差異がハッキリと出る言語も存在するが、どちらもオブジェクトの メンバであるという点に関しては同じで、ただメソッドは「動く」ってだけのこと。 だから普段メソッドとして使っている"Cells"という名前だろうとなんだろうと、 それが動くか否かでメソッドかプロパティかは決まる。結局カッコがあるかないかに帰着するわけだ。 0: ActiveSheet [オブジェクト] 1: .Cells [0のメンバ(型は関数オブジェクト?)] 2: .SpecialCells(xlLastCell) [1のメソッド] 3: .Address [2の返り値のプロパティ] 1については、ひょっとしたらVBA的にはプロパティと呼ばないかもしれないと思ったので 一応「メンバ」と呼んでおいたが、Cellsはただのオブジェクトのようなので、 プロパティと呼んでも構わないと思う。 もしかするとVBAの専門家からするとチグハグなこと言ってるかもしれないけれど、 JavaScriptみたいな関数型言語を一度でも扱ったことがあれば自然とこういう考え方になると思う。 参考になれば幸い。では。

関連するQ&A

専門家に質問してみよう