★独学者が1年後にExcelVBAを爆発的に伸ばすための最低限の基礎知識メモ(ダイジェスト):Vol0008:挫折しないための「メソッド」とは?
  
バックナンバー目次ページは→こちらです。

まぐまぐのページは以下です。
https://www.mag2.com/m/0001691660.html
  
  
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)

Vol.0008

タイトル:挫折しないための「メソッド」とは?

バックナンバー目次とサンプル号
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

前々回の「コレクション」の項ですが、少し誤りがあったので修正しました。
横線を引っ張って補足を加えてあります。

またこちらのバックナンバーを読んでみてください。
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01-06
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
  

では、以降、今回分の本文です。

今回はちょっと修正疲れしてしまいましたので少し短いです。

すみませんがよろしくお願い致します。

==================

★ 「メソッド」に関する補足

前回、

****************

VBAには、
「VBA関数」、
「ワークシート関数」、
「自作関数(ユーザー定義関数・あるいはプロシージャ)」、などなど、
色々とありますけど、

▼関数は関数でも、

「特定の単一オブジェクトやコレクションオブジェクトに紐付けされた」
「特定の単一オブジェクトやコレクションオブジェクトでないと動かない」
「そういう・関数」

それが

「プロパティやメソッド」・・・

****************

と書きました。

で、

「プロパティは設定系の関数で、メソッドは動作系の関数」・・・

みたいな感じです。

さらに少し、メソッドについてだけ、補足します。

まず、関数=命令、と捉えて頂いて良いのですが、実生活でのメソッドとは、
どんなものがあるでしょうか?

実生活のメカをオブジェクトとしてとらえてみますと、

オーブン・スチーム・電子レンジ
ATM
テレビ
エアコン

などがあります。

で、例えばオーブン・スチーム・電子レンジの場合のメソッドを考えてみます。

その場合、例えば、
「焼く」
「スチームする」
「レンジをかける」
となると思います。

ATMの場合のメソッドは次のようになると思います。
「通教記入」
「お振込み」
「お預入れ」
「お引き出し」
など。

テレビの場合なら
「チャンネルを切り替える」
「音量を大小する」
「録画する」
「CDを聞く」
などです。

エアコンなら
「冷房」
「暖房」
「除湿」
などです。

このとき、

「特定の単一オブジェクトやコレクションオブジェクトに紐付けされた」
「特定の単一オブジェクトやコレクションオブジェクトでないと動かない」

ということを見てみたいと思うのですが、一目瞭然ですよね。

テレビに「冷房、暖房、除湿」はできませんし、
反対に
エアコンに「録画、CDを聞く」などはできません。
ATMの「お振込み」やレンジの「スチーム」なども同じです。

それぞれのメカに、特有の、「あらかじめ決められた」「動き=命令」たちです。

メソッドも同じです。

特定のオブジェクトに紐ついた、「あらかじめ決めたれた」「動き=やれること」が
「メソッド」です。

なお、その意味では「プロパティも同じ」です。
特定のオブジェクトでだけでしか使えません。
「あらかじめきめられた」「各種設定をする命令」です。

例えば「温度を設定する」というプロパティ(?どちらかというと引数か?まいっか)は、
エアコンやレンジにはできるかもしれませんが、
テレビやATMにはできません。

逆に、「温度を設定する」というプロパティは、
エアコンにも、レンジにも、紐ついている、という側面もあります。

これは「Color」というプロパティが、
「セル(Range)」というオブジェクトや「フォント(Font)」というオブジェクト、
「シート見出し(Tab)」というオブジェクト、
はたまた、その他のオブジェクトにも使える・・・、
ということと似ていますよね。

****************

▼関数は関数でも、

「特定の単一オブジェクトやコレクションオブジェクトに(あらかじめ)紐付けされた」
「特定の単一オブジェクトやコレクションオブジェクトでないと動かない」
「そういう・関数」

それが

「プロパティやメソッド」・・・

で、

「プロパティは設定系の関数で、メソッドは動作系の関数」・・・

みたいな感じです。

****************

と、そんな感じで考えてみてください。

※参考Webページ
よりちゃんとしたことを学びたい方は、手始めに以降に示したURL先を見てみてください。
ただ、「正確に奥深くを学ぼうとするあまり」、先にこちらを学ぼうとすると「かえって難しすぎてワケがわからなくなる」ので、
「オブジェクトを返す色んなタイプの自作関数が自由に作れる」あるいは
「クラスモジュールをある程度扱えるようになる」までは、あるいは、
「せめてオブジェクトブラウザが扱えるようになるまでは」、
前述のように「関数は関数でも、・・・」という風にとらえてください。
引数を持っていたり、名前付き引数が使えたり、カッコを付ける/付けないの基準が同じだったり、ということには変わりないので、「関数は関数でも、・・・」という風にざくっと捉えてしまうほうが、初心者のうち、とくに、「自作関数がまだ作れない場合」には、覚えやすいですので。
オブジェクトブラウザ自体も、「関数は関数でも、・・・」という風にとらえたほうが、「確実に」、覚えやすいし使いやすいです。
特に、以下の2つのサイトの前者のサイトは「とても参考になる良いサイト」ですが、ただ、メソッドをこのように正確?に理解してしまうと、多分、初心者の方は「オブジェクトブラウザが扱えなくなってしまう」と思います。
ここに書いてあることは、「関数は関数でも、・・・という風にざくっと覚えてオブジェクトブラウザが扱えるようになってから学ぶ」のでもぜんぜん遅くないです。なので、そのような感じで「深く正しく学ぶ」ということで大丈夫です。

VBA マクロ、プロシージャ、メソッドなどの用語について正確に理解する
「関数」と「メソッド」の違い

  
  

  

★ (11)挫折しないための「メソッド」とは?

「メソッド」とは、オブジェクトに含まれる、内包される命令・機能のことであり、おおまかな全体像はプロパティと全く同じです。
(具体的な動きが少し違うだけ。)

市販書籍などが「メソッド=動作」としか教えないから、初心者の方々がみんな脱落していきます。

実際には、「メソッド=動作」だけで片付けられるモノではまったくありません。

「メソッド=動作」などといった、それだけの理解だけで終わってしまうと、まず上達できません。
それだとオブジェクトブラウザが「全く読めない状況」に追い込まれてしまいますので・・・。

現実には「メソッド」は、最低限、以下の(a)~(c)の機能を有していて、かつ、プロパティと同様、
「値やオブジェクトを返す自作関数」と似たような仕組みで動きます。
(引数も必要だし、名前付き引数のルールが使えるし、カッコを付ける付けないのルールも同じだし、
値やオブジェクトを返してくれるし、設定(代入)もできます。)

※ただ、メソッドの場合はプロパティの場合と少し異なっていて、
「何らかの動作だけをする・値もオブジェクトも返さない自作関数」に似ています。
 そのようなタイプのモノのほうが多いです。
 (多い、ということだけですので、もちろん、
  値やオブジェクトが返ってくるタイプのものもあります。)

(a)オブジェクトの何らかの動作を開始させる。
オブジェクトにあらかじめ紐付けられた動作命令を実行する。
開く、閉じる、新規作成、くっつける、切り離す、印刷する、など。

(b)下位の単一オブジェクトを取得する役割。
(下位のコレクション+Itemなどを通じて。Worksheet.PivotTables メソッドや、PivotTable.PivotCacheメソッドなど。)
下位のオブジェクトを取得するプロパティと同じような感じです。
同じ「Item」という名前なのに、なんで、プロパティとメソッドにいちいち分かれているのは不明です。

(c)開く、新規作成、くっつける、等々の、「何らかの動作」をし、ついでに、単一オブジェクトをも取得する役割。
(Application.Union メソッド、×××.Addメソッド、Workbooks.Openメソッド、RecentFile.Openメソッドなど。)
※メソッドではありませんが、「CreateObject関数」や「Getobject関数」も同じような動きをします。
  

※プロパティの「※★ 注意!!「プロパティ」は実は「値」ではない。」のところも読んでください。
  
  

なお、「メソッド」とは、本来、「動作命令のこと」で、「命令の一種」ですが、
「メソッド」という言葉自体を「動作項目」とか「動作内容」という意味合いで使うことも多いです。
前後の文脈によって読み分けてください。
ただ、それは正式な使い方ではなく、本来なら「メソッド項目」とか、「メソッド内容」と表現したほうがしっくりくると思います。

また、「プロパティ」にも「メソッド」にも「設定値」がありますが、
「プロパティ」の「設定値」は、ユーザーが「自由にテキストを書き換える」ことで変更ができます。
これは、VBEの「プロパティウィンドウ」で値を書き換えることと同じですので、そのイメージを持ってください。
(TrueやFalseなどは選ぶだけですが。メソッドの設定値と同様に、「列挙や定数を使っての設定」もあります。)

一方、「メソッド」にもプロパティと同様に「設定値」があり、もちろん変更ができます。

ただし「メソッド」の場合は、多くが「列挙(Enum)」とか「定数」といったかたちで、
「設定値」が「あらかじめ決められて紐付けられて」おり、
「ユーザーは勝手にはテキスト内容を書き換えできません。

プロパティの設定値書き換えのように、自由にはできません。
既に在る(出来合いの)その設定項目たちや値たちを「選ぶだけ」になっています。

これは、Excel画面の各種ダイアログボックスで、丸ポチを付けたり、ドロップダウンメニューから設定値(定数など)を選ぶのと同じです。
そのようなイメージを持ってみてください。
  
  
  

==============================
  

今回は以上です。

==========================================================================

バックナンバー目次とサンプル号
  
https://euc-access-excel-db.com/tips/ct07_se/ct075012_xls2k_vba_tips/mag2-01
  
  

----------------------------------------------------------------------
■独学者が1年後にExcelVBAを爆発的に上達させるための最低限の基礎知識メモ(ダイジェスト)
発行システム:『まぐまぐ!』 http://www.mag2.com/
配信中止はこちら https://www.mag2.com/m/0001691660.html
----------------------------------------------------------------------