プログラミング初心者向けのVBA入門講座第6回です。
今回はVBAの構文のうちオブジェクト式について紹介します。VBAを使ううえで基本となる構文のひとつです。各用語についてもできるだけわかりやすく説明していきます。
VBAの構文
VBAには大きくわけて3種類の構文があります。
- オブジェクト式
- ステートメント
- 関数
オブジェクト式はオブジェクトを操作するときなどに使います。詳しくは後述します。
ステートメントは条件分岐や繰り返し処理などプログラムの実行を制御するもの、関数はある決まった計算結果を返すものですが、ステートメントおよび関数については別途後日紹介していきます。
オブジェクト、メソッド、プロパティについて
オブジェクト式に用いられる用語について簡単に説明します。
オブジェクトとは
オブジェクトとは操作などの対象となるモノのことです。
Excelのオブジェクトとしては主なものにブック、シート、セルといったものがあります。
ブックはWorkbookオブジェクト、シートはSheetオブジェクト(※)、セルはRangeオブジェクトです。Excel自体も Application というオブジェクトです。
「ブックを開く」「シートを選択する」「セルをコピーする」といった操作をするときの「~を」にあたる部分がオブジェクトです。
また、「ブックの名前」「シートの数」「セルの値」といった状態や様子をあらわすときの「~の」という対象でもあります。
メソッドとは
メソッドはオブジェクトを操作をさせるための命令です。
先ほどの例では「ブックを開く」「シートを選択する」「セルをコピーする」という操作として「開かせる」「選択させる」「コピーさせる」ための命令がメソッドになります。
プロパティとは
プロパティはオブジェクトの状態や様子のことです。
先ほどの例では「ブックの名前」「シートの数」「セルの値」のうちの「名前」「数」「値」の部分がプロパティです。
オブジェクト式
オブジェクト式は次の2種類です。
- オブジェクト.メソッド … オブジェクトを操作する
- オブジェクト.プロパティ … オブジェクトの状態/様子を参照または変更する
オブジェクト.メソッド
この構文にはさらに「どのように」操作するかといった条件やオプションを設定できます。それらの条件やオプションを引数(ひきすう)と呼びます。
引数の値は「:=」という記号で渡します。引数を複数設定するときは「,(カンマ)」で区切ります。
オブジェクト.メソッド 引数1:=値1, 引数2:=値2, …
というように書きます。

メソッドと引数の間は半角スペースを設けます。
例えば「ブックを閉じる」という操作で変更内容を保存しないときには
ThisWorkbook.Close SaveChanges:=False
となります。
引数のなかには省略できるものと必ず指定しないといけないものがあります。どのような引数があり、それらが省略できるかどうかはメソッドごとにあらかじめ決められています。
また引数の名称を省略して値だけで指定することもできます。
ThisWorkbook.Close False
ただしこの場合は注意することがあります。
たとえば引数1~引数4が与えられるメソッドで引数1と引数4だけを指定するとき、引数名称を省略しないのであれば
オプション.メソッド 引数1:=値1, 引数4:=値4
となりますが、引数名称を省略して値だけを記述する場合は
オプション.メソッド 値1, , ,値4
というように省略した引数2と引数3の分の「,(カンマ)」をつける必要があります。

その値が何番目の引数の値かわかるようにするためです。
オブジェクト.プロパティ
この構文によってプロパティの現在の値を参照することができます。
たとえば
MsgBox ActiveSheet.Name
とするとメッセージボックスに現在アクティブなシートのシート名が表示されます。
プロパティの値を変更するときは
オブジェクト.プロパティ = 値
と書きます。
このときの「=」は数式の「イコール」とは違い、右辺の値を左辺に代入するという意味の演算子です。このような代入演算子はプログラムでよく使われます。

かならず「左辺 ← 右辺(右辺の値を左辺に代入)」の関係になります。「左辺 → 右辺(左辺の値を右辺に代入)」にはできないので注意してください。
セルA1の値を100にするのは
Range(“A1”).Value = 100
となります。
プロパティのなかにはセルの値のように値を変更できるものと、読み取ることはできても変更できないものがあります。
たとえば
MsgBox Application.Name
とするとメッセージボックスにはExcelのアプリケーション名称である「Microsoft Excel」が表示されますが
Application.Name = “エクセル“
とするとエラーになります。
Excelのアプリケーション名称をユーザーが変えることはできないからです。
このようなプロパティを読み取り専用のプロパティといいます。

シート名はユーザーが自由に変更することができるので
ActiveSheet.Name = “集計シート“
とするとアクティブなシートのシート名が変更できます。
まとめ
今回の講座内容を簡単にまとめると
- オブジェクト … 操作などの対象となるモノ
- メソッド … オブジェクトを操作させる命令
- プロパティ … オブジェクトの状態や様子
オブジェクト式は
- オブジェクト.メソッド
- オブジェクト.プロパティ
となります。
コメント