オブジェクトとは
オブジェクトとはブックやシート、セルなどVBAから操作可能な “もの” の総称です。オブジェクトにはプロパティとメソッドと呼ばれるものが備わっており、プロパティはオブジェクトの情報を取得・設定するもの、メソッドはオブジェクトに命令を与えるものになります。プロパティとメソッドを合わせてメンバと言ったりします。
ここでは例としてRangeオブジェクトのプロパティとメソッドの一部を解説します。プロパティやメソッドはオブジェクト名とドット”.” で結合して記述します。
Rangeオブジェクトのプロパティ例
プロパティ | 説明 |
---|---|
Value | 値の取得・設定 |
Row | 行の取得のみ(※) |
Column | 列の取得のみ(※) |
プロパティには値の取得のみ可能で、値の設定ができないものがあります。
- A1セルに値を設定する例
Sub test1() Range("A1").Value = "Hello!!" End Sub
- A1セルの値を取得し、その値をメッセージボックスに表示する例
Sub test2() MsgBox Range("A1").Value End Sub
Rangeオブジェクトのメソッド例
メソッド | 説明 |
---|---|
Clear | 値・数式・書式・コメントのクリア |
Delete | セルの削除 |
Copy | セルのコピー |
- A1セルの値・数式・書式などをクリアする例
Sub test3() Range("A1").Clear End Sub
コレクションとオブジェクトの関係
複数のオブジェクトの集合体をコレクションと呼びます。コレクションにもプロパティとメソッドが備わっています。コレクションは頂点をApplicationオブジェクトとする階層構造になっています。
コレクションの例
コレクション | 説明 |
---|---|
Workbooks | ワークブックオブジェクトの集合体 |
Worksheets | ワークシートオブジェクトの集合体 |
Cells | セルオブジェクトの集合体 |
Range | セルオブジェクトの集合体 ※”Cells”とは参照方法が異なる。 |
Shapes | 図形オブジェクトの集合体 |
Charts | チャートオブジェクトの集合体 |
Worksheetsコレクションのプロパティ例
プロパティ | 説明 |
---|---|
Count | シート数の取得のみ |
- Worksheetオブジェクトの数を取得し、その値をメッセージボックスに表示する例
Sub test4() MsgBox Worksheets.Count End Sub
Worksheetsコレクションのメソッド例
メソッド | 説明 |
---|---|
Add | 新規シートの追加 |
- 新規シートを追加する例
Sub test5() Worksheets.Add End Sub
コレクションの中からオブジェクトを選択
コレクションにインデックスや名前を指定することでオブジェクトを選択することができます。これを繰り返して目的のオブジェクトまで順にたどっていき、最後にプロパティやメソッドを指定することで、目的のオブジェクトの情報を取得したり、操作したりすることができます。
- インデックスでセルを選択し、値を設定する例
Sub test6() Workbooks(1).Worksheets(1).Cells(1, 2).Value = "Hello!!" End Sub
- 名前でセルを選択し、値を設定する例
※それぞれの名前に対応するブック、シート、セルが存在していることが前提となります。
Sub test7() Workbooks("VBA入門.xlsm").Worksheets("Sheet1") _ .Range("MSG").Value = "Hello!!" End Sub
コレクションの省略
ブック、シートなど上位階層のオブジェクトは省略することができます。この場合、マクロ実行時にアクティブになっているオブジェクト(最前面に表示されているブック・シート)が操作の対象となります。
- ブック、シートを省略したコード
Sub test8() Cells(1, 1).Value = "Hello!!" End Sub
- 上記test8と同等の処理で、ブック、シートを省略しないコード
Sub test9() ActiveWorkbook.ActiveSheet.Cells(1, 1).Value = "Hello!!" End Sub