メソッドとは
「メソッド」とは、オブジェクトに対する動作を命令するキーワードのことです。例えば、ワークシート「5月売上」を選択する操作を記録した場合、次のようなステートメントが記述されます。この「Select」がメソッドです。Selectメソッドは、ワークシートを選択するメソッドです。オブジェクトの記述に続いて「.(ピリオド)」が記述されています。この「.」は「を」や「に」に読み替えると良いでしょう。したがって、このステートメントは「ワークシート「5月売上」を選択する」と読み解くことができます。
まとめると、メソッドでオブジェクトを操作するステートメントは、次のような構文になります。
引数による記述
なお、動作に関する具体的な指示が記述される場合があります。例えば、ワークシート「4月売上」をワークシート「5月売上」の右側に移動した場合、次のようなステートメントが記述されます。「.」に続いて記述されているMoveメソッドは、ワークシートを移動するメソッドです。そして、半角スペースに続いて記述されている「After」は「引数」と呼ばれるキーワードで、メソッドに関する具体的な指示が記述されています。引数の値は「:=」に続いて記述されます。
ここで想定しているブックには、左から順番に、ワークシート「4月売上」とワークシート「5月売上」が作成されているので、記述されている具体的な指示は「2枚目のワークシート(つまり「5月売上」)の後(つまり右側)に移動する」ことを表しています。
したがって、このステートメントは「ワークシート『4月売上』をワークシート『5月売上』の右側に移動する」と読み解くことができます。
まとめると、引数の記述があるメソッドの構文は、次のようになります。なお、複数の引数がある場合は、「,(カンマ)」で区切って記述されます。
ピリオドの後はプロパティなのかメソッドなのか
これまでの構文をまとめると、次のようになります。こうして見ると、1番目と4番目の構文の場合、構文の形から「.(ピリオド)に続くキーワードがプロパティなのかメソッドなのか」を見分けることができそうです。
「.」に続くキーワードの後に、「=」が記述されていればプロパティですし、半角スペースに続いて「別キーワード:=」が記述されていればメソッドです。プロパティであると判別できれば「何かオブジェクトの値を設定しているのだな」と予想がつきます。メソッドであると判別できれば「オブジェクトの操作を表しているのだな」と予想がつきます。
ところが、2番目と3番目の構文の場合、構文の形に違いがないため、ぱっと見てプロパティなのかメソッドなのかを区別できません。この場合は、そのキーワード上にカーソルを置いてF1キーを押してみましょう。すると、VBAのヘルプが起動して、カーソルを置いたキーワードのヘルプが表示されます。表示されたヘルプを見れば、プロパティなのかメソッドなのかを確認できますし、もちろん、キーワードの詳細についても調べることができます。
使えるプロパティ・メソッドはオブジェクトごとに違う
Selectメソッドは、Worksheetオブジェクトに対して使えますが、Workbookオブジェクトに対して使えません。Workbookオブジェクトでは、Activateメソッドを使ってブックをアクティブにします。このように、オブジェクトごとに使えるプロパティ・メソッドが決まっています。そして、オブジェクトが持っているプロパティ・メソッドを総称して、そのオブジェクトの「メンバ」といいます。
マクロ記録で作成されたプロシージャ(ひとつのVBAプログラム)を読む上では、特に重要ではありませんが、今後、プロシージャを一から書く場合にも備えて、
「このオブジェクトに対して、どんなプロパティ・メソッドを使えるのか?」
といった視点は重要です。つまり、マクロで作成されたプロシージャを読みながら「オブジェクトのメンバを意識する」ということです。今のうちから、このような視点でプロシージャを読んでいきましょう。
「エクセルのマクロ基本構文と読み方(オブジェクト)」では、オブジェクトの階層構造の話やWithステートメントの読み方などについて紹介しています。こちらもぜひご覧ください。