• ベストアンサー

オフィス2010 今まで関数だったのがメソッドに

オフィス2003からオフィス2010にしたのですが vbaのオブジェクトブラウザを見ていると、今までヘルプには関数として書かれていたのもが メソッドになってるのですが、変わったのですか? たとえば、WorksheetFunctionクラスのCountなんて、もろ関数だと思うのですが、 F1を押してヘルプを見ると「WorksheetFunction.Count メソッド」となっています。 関数とメソッドは同じ意味なのでしょうか?

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

  • ベストアンサー
回答No.2

>関数とメソッドは同じ意味なのでしょうか? 言いたいことが違うといった感じ。 関数がない言語なんてないと思うのですが、メソッドは VBA 流の表現です。プログラマが引数を明示しない場合を含めて、メソッドは実質的に関数だと考えることができると思います。 つまり関数は、メソッドと呼ばれないものまで含め、いろんなシチュエーションで使える一般的な概念の用語で、メソッドは「オブジェクト.メソッド」と書いたときの「.」以下の部分のことを指す言葉ということです。そして、「メソッドは関数だ」と言う人がいても、違和感はないということ。 狭義での関数とは、VBA 関数とも呼ばれるもののことですね。これは「myArr = Split(…」という具合に「=」で代入する形で使われることが多いですが、MsgBox 関数のように、「=」も親オブジェクトもなくいきなり関数名から書かれることもあります。 >……WorksheetFunctionクラスのCountなんて、もろ関数だと思うのですが、…… これは、セルに「=COUNT(…」と入力することができるもの、つまりワークシート用の COUNT 関数のことなので、そういう意味ではいつでも関数と呼べます。一方、VBA コードとして「WorksheetFunction.Count」と書いたとき、Count はオブジェクトにぶら下がっているものなので、メソッドです。 つまりヘルプは間違いなどではないし、分かっている人にとっては十分に意味が通じます。もっとも初めて学ぶ人には、非常に意味不明&不親切で、不評なのも承知してますが(笑)

nfrxwwbeca
質問者

お礼

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

その他の回答 (1)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

メソッドは、"オブジェクト(クラス)の持つ関数"です。 VBA上では、WorksheetFunctionの"メソッド"。シート上では、WorksheetFunctionなんて括りは無いので、漠然と"関数"。 微妙に使い分けてるだけじゃないかな。

nfrxwwbeca
質問者

お礼

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

関連するQ&A

  • Replace関数ですか?Replaceメソッドで

    VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

  • Msgboxはメソッドなのでしょうか?関数なのでし

    オブジェクトブラウザでmsgboxを調べると画像のように出てきますが アイコンが「メソッド」です。 しかし、msgboxのヘルプを開くと、「MsgBox 関数」となっています。 Msgboxはメソッドなのでしょうか?関数なのでしょうか? ご回答よろしくお願いします。

  • ワークシート関数とはどのことなのですか?

    【1】エクセルのワークシート上で使う=TODAY()などの関数 【2】VBAのCountなどのWorksheetFunction 【3】VBAのLENなどの関数 どれのことを俗に言う「ワークシート関数」と言うのでしょうか? VBAで使う【2】【3】のことですか?

  • オブジェクト、プロパティ、メソッドの関係

    環境:OS.Win2000、Excel2000VBA プロパティやメソッドの呼び出し方法に疑問があります。 ExcelのVBAで以下の動作は確認しています。(例1) Dim xlApp As Application Dim xlBook As Worksheet '置換 xlApp.ActiveCell.Replace what:="A", replacement:="B", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False '検索 Set Oret = xlBook.Application.Cells.Find(what:="A", After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) 疑問に思っているのは「xlApp.ActiveCell.Replace」の”Replaceメソッド”を オブジェクトブラウザで調べるとRangeオブジェクトと、WorksheetFunctionオブ ジェクトにしか含まれないように受け取れます。またヘルプの「対象」を見ても Replaceが含まれているのは二つしかありません。ようするに以下の二通りでし か使えないように思えるのです。 Dim A As Range Dim B As WorksheetFunction A.Replace ~ B.Replace ~ しかし実際には(例1)のようにApplicationオブジェクトでも”Replaceメ ソッド”を使えます。”Replace関数”を見てみても引数を見ると”Replace メソッド”です。いまひとつ理解が浅いため目的の動作をさせるのにどのオ ブジェクトからメソッドを呼べば良いのか分かりません。基本的な事なのか もしれませんが、ぜひご回答くださいよろしくお願いします。

  • EXCEL VBAヘルプの使い方

    EXCEL VBA初心者です。webのVBAの実例集などで勉強中なのですが、ヘルプの使い方で質問です。 たとえばFindのパラメータ Find(What,After,LookIn,LookAt,SearchOrder・・・) のLookIn,LookAtなどの意味を調べるにはどうしたらいいのでしょう? Findメソッドのヘルプを見ながら オブジェクトブラウザでXlFindLookInクラスは見つけられても、右クリックでもう一度ヘルプを見ようとすると ”ヘルプ ファイルは使えません”と出ます。何かインストールが足りないのでしょうか? 皆さんはVBAのメソッドの構文がわからない時などどのようにヘルプを使われているのでしょう?宜しくお願い致します。

  • Officeのライブラリはヘルプは見れない?

    エクセル2007を使っています。 VBAのオブジェクトブラウザで Excelのライブラリで適当な単語を選んでF1を押すと、ヘルプファイルが出てきますが Officeのライブラリで同じことをすると 「ヘルプファイルは使えません」となってしまいます。 それに対するヘルプを開くと ーーーーーーーーーーーーーーーーーーーーーーーーーー すべてのエラーにヘルプ トピックが関連づけられているわけではありません。 エラーの原因と対処方法を次に示します。 ヘルプにないエラーを生成しました。 Readme ファイルを確認します。 Readme には、ヘルプに記載されていない最新のエラー情報が載っていることがあります。 ーーーーーーーーーーーーーーーーーーーーーーーーーー との事なので、 Officeのライブラリにヘルプファイルは存在しないということなのでしょうか?

  • 「ReDim」のヘルプが見れない

    VBAコードに、「ReDim」を使っているのですが その文字を反転させてF1を押しても、ヘルプは表示されません。 オブジェクトブラウザでReDimを検索しても出てこないのですがなぜでしょうか? メソッドでもイベントでもプロパティでもないからですか?

  • クラスは関数の寄せ集め??

    クラスという概念がいまいちわかりません。 例えばMathクラスにはmax,sin,cos,tanなどの関数がありますが、 ようはクラスって関数(メソッド)を集めたものと思います。 そのような理解であっておりますでしょうか? であるならば、わざわざクラスに分類しなくても、関数(メソッド)で良い様に思うのです。 何でわざわざnew演算子を使ってオブジェクトを作成してからでないと 関数が使えないようにしたのか、さっぱりわかりません。 関数でいいじゃないですか。と思うのです。 「キミはsin()関数を作ってね、キミはcos()関数を作ってね。」 と 「キミはMathクラスのsinメソッドを作ってね、キミはMathクラスのcosメソッド作ってね」 では意味的にはたいして違わないと思うのです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • 普通の関数とメソッドの違い【JavaScript】

    こんにちは 今、Javascriptについて勉強しているのですが、 普通の関数と、 オブジェクトの中にあるプロパティのメソッド(つまり関数) とは、何が違うのでしょうか・・・

  • 「static宣言されているメンバ関数」は、「インスタンスメソッド」な

    「static宣言されているメンバ関数」は、「インスタンスメソッド」なのでしょうか? それとも、「クラスメソッド」なのでしょうか? 先日、下記内容で質問して、その時は分かったつもりだったのですが、 やっぱり分かってなかったようなので、教えてください。 ▽「クラス関数」「メンバ関数」「メソッド」の違いを教えてください。   http://okwave.jp/qa/q5858806.html 例) ▽前提 ・Aクラスのインスタンスa ・static宣言されたpublicメソッド「static_public_method」 ・static宣言されていないpublicメソッド「public_method」 ▽メンバ関数呼び出し ・$a->static_public_method() ・A::static_public_method() ・A::public_method() このとき、「$a->static_public_method()」は、インスタンス経由でアクセスすることになるので、 「インスタンスメソッド」になるのでしょうか。それとも、static(静的)宣言しているので、「クラスメソッド」になるのでしょうか? また、「A::static_public_method()」や、「A::public_method()」は、どちらになるのでしょうか? ※現在、頭の中がこんがらがっているのは、下記3点です。どれかひとつでも構わないので、分かりやすい考え方等あれば、ぜひ教えてください。 ・「static宣言したメンバ関数」は、「インスタンスメソッド」? 「クラスメソッド」? ・「スタティック」宣言してるのに、メンバ関数へ、「->(アロー演算子)」(オブジェクト経由)でアクセスできる理由 ・「A::static_public_method()」と「A::public_method()」の違い

    • ベストアンサー
    • PHP

専門家に質問してみよう