オブジェクトのメソッド
<< オブジェクトのプロパティ :前の記事
前回はオブジェクトのプロパティについて解説しました。プロパティの取得や設定について理解できたかと思います。今回は「メソッド」について解説していきます。
目次
メソッドとは
メソッドとはオブジェクトを操作する命令文のことでオブジェクトの動作になります。例えば、ExcelのA1セルというオブジェクトに「VBA」の文字列が入力されていたとします。このA1セルに対して削除・コピー・貼り付けなどを行うことができます。そのような「削除」「コピー」「貼り付け」がメソッドにあたります。
メソッドの使い方
メソッドを利用するには決まった書式に則って記述します。メソッドの使い方は、プロパティと同じでオブジェクト名とメソッド名の間に「.(ピリオド)」で結んで記述します。
オブジェクト名.メソッド名
メソッドを設定する
前回のおさらいも兼ねて以下のような事例でメソッドを設定してみます。RangeオブジェクトのSelectメソッドは、指定されたセルを選択するものです。こちらではA1セルを選択しています。
Sub Sample()
Range("A1").Select
End Sub
もう1つ事例を挙げるとまずExcelのA1セルに「VBA」の文字列を入力します。このA1セルの値をクリアにするために、ClearContentsメソッドを利用して以下のように記述します。ClearContentsメソッドは選択範囲から数式と文字を削除するものですので、これを実行するとA1セルの値が削除されます。
Sub Sample()
Range("A1").ClearContents
End Sub
メソッドの引数
メソッドの中には、引数を設定できるものがあります。引数とは、メソッドを実行するために利用される情報です。引数を利用することでメソッドの動作を細かく制御できます。
また、メソッドには引数を必要としないもの、引数の指定が必須のもの、引数が任意のオプションとなっているものがあります。先ほど挙げた2つの事例は引数を必要としないメソッドでしたが、こちらの条件はメソッドによって異なるのでその都度メソッドの内容を確認するようにしましょう。
引数を必要としないもの
- Selectメソッド
- ClearContentsメソッド
引数が必須なもの
- GetPhoneticメソッド
- OnKeyメソッド
引数がオプションとなっているもの
- Closeメソッド
- Arrangeメソッド
- Protectメソッド
引数の使い方
引数の指定には、「,(カンマ)」で区切る方法と名前付き引数を使用する方法の2種類があります。まずは、「,(カンマ)」で区切る方法について解説します。
「,(カンマ)」で区切る方法
メソッドに引数を設定する場合は、メソッド名の後に半角スペースを記述し、利用するメソッドで設定されている引数の設定値を記述します。複数引数がある場合は引数の設定値間に「,(カンマ)」を記述します。
オブジェクト名.メソッド名 引数1の設定値, 引数2の設定値・・・
こちらはWorkbookオブジェクトのCloseメソッドの事例です。WorkbookオブジェクトのCloseメソッドはブックを閉じるメソッドになります。こちらには、3つの引数が用意されており、今回は2つの引数に設定値を設定しています。
1つ目の引数は閉じる際に保存するかどうかをブール型(Boolean)の値で指定します。こちらは「True」を設定していますので、ワークブックの変更を保存します。
2つ目の引数は保存するファイル名を文字列で指定します。ちなみにこちらの引数はすべて省略可能です。
こちらを実行処理すると「VBAのIE制御.xls」ファイルが保存されます。このように引数を設定することで様々な制御を行うことが可能となります。尚、今回のCloseメソッドの引数は省略可能の引数がオプションとなっているメソッドになります。
Sub sample()
Workbooks("Book1").Close True, "VBAのIE制御"
End Sub
今回利用したWorkbookオブジェクトのCloseメソッドの引数はすべて省略可能と説明しました。省略可能な引数は設定値も省略することが可能です。設定値を省略する場合は「,(カンマ)」のみ記述します。以下は1つ目の引数の設定値を省略した形になります。
Sub sample()
Workbooks("Book1").Close , "VBAのIE制御"
End Sub
名前付き引数を使用する方法
名前付き引数とは、名前が定義されている引数のことです。
先ほど利用したCloseメソッドは以下のように引数が設定されています。「SaveChanges」「Filename」「RouteWorkbook」が名前付き引数となります。
オブジェクト名.Close(SaveChanges, Filename, RouteWorkbook)
名前付き引数を利用する場合は、引数名に「:=(コロンとイコール)」を記述し、その後に引数の設定値を記述します。こちらも複数の引数を設置する場合は、「,(カンマ)」で区切ります。
オブジェクト名.メソッド名 引数名1:=設定値, 引数名2:=設定値・・・
こちらは上記の事例と同じ処理になります。引数名に「:=(コロンとイコール)」を付けた形で記述しています。名前付き引数で記述した場合でも同じ結果になります。
Sub sample()
Workbooks("Book1").Close SaveChanges:=True, fileName:="VBAのIE制御"
End Sub
名前付き引数で記述した場合の特徴は引数を記述する順番を気にする必要がないということです。ですので、以下のように引数の順番を変えても同じように処理します。
Sub sample()
Workbooks("Book1").Close fileName:="VBAのIE制御", SaveChanges:=True
End Sub
メソッドの戻り値
メソッドの中には、実行後に実行結果の値を返す「戻り値」を取得できるものがあります。メソッドの戻り値は「=(イコール)」の代入演算子を利用して変数やプロパティに代入することも可能です。
変数 = オブジェクト名.メソッド名
値を返すメソッド
こちらは、値を返すメソッドの事例です。ApplicationオブジェクトのGetPhoneticメソッドは指定した文字列の日本語のふりがなを返すメソッドです。こちらでは「操作」の文字列を引数の設定値に設定しており、戻り値が「ソウサ」の文字列の値を返しています。
Sub sample()
a = Application.GetPhonetic("操作")
MsgBox a
End Sub
オブジェクトを返すメソッド
戻り値は、値を返すだけでなくオブジェクトを返すメソッドもあります。以下は新しいウィンドウを開くNewWindowメソッドを利用した事例ですが、新しいウィンドウを開いたらそのままそのウィンドウを操作することが多々あります。NewWindowメソッドは作成したウィンドウオブジェクトを戻り値として返しますので、そちらをオブジェクト変数とういものに格納して処理しています。細かい内容については割愛しますが、オブジェクトを返すメソッドもあることを覚えておきましょう。
Set オブジェクト変数 = オブジェクト名.メソッド名
Sub sample()
Dim newWin As Object
Set newWin = Windows("Book1").NewWindow
newWin.ActiveCell = "VBA"
End Sub
メソッドの見分け方
ここまで当たり前のようにメソッドを解説してきましたが、そもそもどれがメソッドなのか判断が付かないことが多いかと思います。例えば「Value」はプロパティですが、「Select」はメソッドです。
メソッドを見分けるコツはオブジェクト名とプロパティ値の間に「を」を入れて判断できます。例えば以下の例を見てみましょう。Selectメソッドは「選択」という意味ですので、「A1セルを選択する」ということになります。このように意味が通じるものはメソッドと判断するのが一般的です。
Sub Sample()
Range("A1").Select
End Sub
次にプロパティはどのように見分けるかというとオブジェクト名とプロパティ値の間に「の」を入れて判断できます。こちらも以下の例を見てみましょう。Valueプロパティは値そのものですので、「A1セルの値」ということになります。こちらも同様に意味が通じるものはプロパティと判断します。
Sub Sample()
Range("A1").Value = "エクセル"
End Sub
まとめ
今回はオブジェクトのメソッドについて解説しました。また、メソッドには値を返す「戻り値」というものやオブジェクトそのものを返すものもあります。こちらではメソッドの基本的な部分について理解しましょう。次回はオブジェクトに対し処理や操作を行う「イベント」について解説します。
次の記事: エクセルVBAのイベントとは >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。