注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

【VBA】メソッド・コレクションとは?【入門】

  • 2019年2月17日
  • 2019年4月3日
  • VBA
  • 14回
  • 1件
VBA NO IMAGE

前回の記事ではVBAで使用する

オブジェクト・プロパティについて紹介しました。

今回の記事では

メソッドとは?

メソッドの引数について

メソッドの戻り値について

プロパティやメソッドの調べ方

コレクションとは?

以上を紹介していきます。

今回の記事まで見終わればプログラムの流れや書き方の基本がある程度把握できると思います。

100%理解しなくても大丈夫です!基本流れを理解したらあとは記述しながら慣れていきましょう。

メソッドとは?

VBAにおけるメソッドはオブジェクトに対して何らかの操作を実行する方法です。

セルに設定した書式を初期設定に戻したり、ワークシートを印刷したりといった操作は、プロパティではなくメソッドで実行します。

引数と書式

メソッドもプロパティと同様に対象のオブジェクトに「.」(半角ピリオド)使ってつないで使用します。プロパティとの違いはメソッドは記述するだけでスタートメントとして使用することができます。

メソッドでは処理を実行するときに使用するデータや処理の内容に関するオプション(引数)などの情報を一緒に記述することが多いです。

これらの情報は「引数」と呼び、引数はメソッド名の後に半角のスペースを空けて指定します。

複数の引数を使用する場合は「,」(半角カンマ)で区切ります。

名前付きの引数について

複数の引数を指定する場合は、それぞれの引数に付いている引数の名称を使って指定することが出来ます。引数の名称を使用する場合は、「:=」(半角コロンと半角イコール」を付けてつなぎます。

引数が5個設定できるメソッドの場合でも必須の引数以外は省略可能の為、第1引数、第2引数、、第5引数だけ設定したい場合には下記のように第3引数と第4引数は「,」(半角カンマ)のみ記述して設定します。

引数の名称で記述して設定する場合は引数の順位で記述する必要がなく、また後から引数を確認した場合に設定値を理解しやすいといったメリットがあります。

メソッドの戻り値について

メソッドには処理を実行するタイプと実行後にその結果を返すタイプがあります。

結果を返す(戻り値)メソッドはスタートメントとして使用する場合と戻り値を使用してコードを記述する式として使用する場合があります。

戻り値を使用しないメソッドはスタートメントの末尾で使用し、メソッド自体がスタートメントの処理になります。

戻り値を使用するメソッドはスタートメントの一部の式として記述します。

式として記述する場合はExcel関数と同様にメソッド名の後に「()」の中に引数を記述します。

プロパティやメソッドを調べる

目的の操作に使うプロパティやメソッドがどのような書式で記述すればよいかがわからない場合は

検索などで調べる場合が多いですがVBAの機能を使って調べる方法もあります。

いくつかの方法を紹介します。

マクロの記録機能を使用する

Excelの操作に関連するメソッドやプロパティに関してはマクロの記録機能を使ってExcel上で操作してコードを調べれば比較的簡単に情報を得ることがが可能です。

記録機能で生成されるコードは本来の目的以外の余分な部分が多く記述される場合が多い為その中から必要なメソッドやプロパティを調べる為には最低限のVBAの知識が必要になります。

【記録機能で生成したコード】

ヘルプを活用する

VBE(Visual Basic Editor」のヘルプ機能を利用してメソッドやプロパティを調べることも可能です。「ヘルプ」メニューから「Microsoft Visual Basic for Applicationsヘルプ」を選ぶか「F1」キーを押すとヘルプが表示されます。

ここの画面の目的の項目を一覧から探して表示するか検索ボタンにキーワードを入力して調べることもできます。

特定のプロパティやメソッドを調べるにはVBEのコードウィンドウに記述してその単語を選択して「F1」キーを押すことで直接そのプロパティやメソッドの情報を表示することもできます。

コレクションとは?

VBAでは、同種のオブジェクトの複数のまとまりを1つのオブジェクトとして使用することができます。このような複数のまとりのオブジェクトの事を「コレクション」と呼びます。例として作業中のすべてのブックや開いたブックに含まれているすべてのシートなどそれぞれ「コレクション」として1つのオブジェクトとして扱うことが出来ます。コレクションにはいくつかの共通した特徴があります。

コレクション内のすべてのオブジェクトに対してまとめて操作できる

単体のオブジェクトを操作するプロパティやメソッドがコレクションに対して用意されてはいませんが「For Each~Nextスタートメント」などを組み合わせて一括でコレクションに入っているすべてのオブジェクトに対して操作できます。

コレクション内のオブジェクトを単体のオブジェクトして取得できる

オブジェクトを特定するときは、番号や名前で指定します。この番号や名前の事を「インデックス」と呼びます。

オブジェクトを新規作成してコレクションに追加できる

新しいシートを作成する操作は、シートの集合を表すコレクションに対して行います。ただしオブジェクトによっては新たに追加出来ない場合もあります。

コレクションの使いかた

ここでは、作業中のブックのシートを表す「WorkSheetsコレクション」を使用例に解説していきます。

下記の式はスタートメントとしては実行できませんが、MsgBox関数を使うことによって結果をメッセージボックスにて確認することができます。
例と同様に作業中のブックに複数のシートがある状態であるものとします。

次の例ではすべてのコレクションで使用できるコレクションに含まれるオブジェクトの数を調べる「Countプロパティ」で作業中のブックのシートの数を求めます。

次の例では「Worksheetコレクション」にインデックスとして「2」を指定して該当するシートを「Nameプロパティ」でシート名を取得します。

「WorkSheetsコレクション」のインデックスは左のシートから順に1.2.3…と付けられています。

まとめ

今回の記事ではメソッドとコレクションについて紹介しました。

メソッドには様々な種類がありますが、全部覚える必要はありません。

コードを記述しながら必要なメソッドを調べる場合が多いので基本的な記述方法のみ覚えておけば大丈夫です。

また、コレクションは複数のセルやシートなどのオブジェクトに対して同時に処理を実行する場合に使用するので

次回以降の記事でも詳しく解説しますが、覚えておくと大変便利です。

 

前の記事から読み直す場合はこちらです。

【VBA】オブジェクト・プロパティとは?【入門】

VBAの記事一覧はこちらからです。

【基礎から学べる】ExcelマクロとVBA【入門】

NO IMAGE
最新情報をチェックしよう!