プロが教えるわが家の防犯対策術!

オフィス2003からオフィス2010にしたのですが
vbaのオブジェクトブラウザを見ていると、今までヘルプには関数として書かれていたのもが
メソッドになってるのですが、変わったのですか?

たとえば、WorksheetFunctionクラスのCountなんて、もろ関数だと思うのですが、
F1を押してヘルプを見ると「WorksheetFunction.Count メソッド」となっています。

関数とメソッドは同じ意味なのでしょうか?

「オフィス2010 今まで関数だったのがメ」の質問画像

A 回答 (2件)

>関数とメソッドは同じ意味なのでしょうか?



言いたいことが違うといった感じ。

関数がない言語なんてないと思うのですが、メソッドは VBA 流の表現です。プログラマが引数を明示しない場合を含めて、メソッドは実質的に関数だと考えることができると思います。

つまり関数は、メソッドと呼ばれないものまで含め、いろんなシチュエーションで使える一般的な概念の用語で、メソッドは「オブジェクト.メソッド」と書いたときの「.」以下の部分のことを指す言葉ということです。そして、「メソッドは関数だ」と言う人がいても、違和感はないということ。

狭義での関数とは、VBA 関数とも呼ばれるもののことですね。これは「myArr = Split(…」という具合に「=」で代入する形で使われることが多いですが、MsgBox 関数のように、「=」も親オブジェクトもなくいきなり関数名から書かれることもあります。


>……WorksheetFunctionクラスのCountなんて、もろ関数だと思うのですが、……

これは、セルに「=COUNT(…」と入力することができるもの、つまりワークシート用の COUNT 関数のことなので、そういう意味ではいつでも関数と呼べます。一方、VBA コードとして「WorksheetFunction.Count」と書いたとき、Count はオブジェクトにぶら下がっているものなので、メソッドです。

つまりヘルプは間違いなどではないし、分かっている人にとっては十分に意味が通じます。もっとも初めて学ぶ人には、非常に意味不明&不親切で、不評なのも承知してますが(笑)
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/02/17 12:59

メソッドは、"オブジェクト(クラス)の持つ関数"です。


VBA上では、WorksheetFunctionの"メソッド"。シート上では、WorksheetFunctionなんて括りは無いので、漠然と"関数"。
微妙に使い分けてるだけじゃないかな。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2013/02/17 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!