VBAについて調べていると「オブジェクト」という単語を良く目にすると思います。当たり前のように登場するこの「オブジェクト」とは、どういうものかお伝えします。
オブジェクトとは
オブジェクトとは、VBAでの操作対象のことです。
VBAで操作したいときというのは、
・シートの複製や追加や削除
・別ブックを開いて操作
などがあると思います。
そのときに操作の対象となるのが、セルやシートやブックです。これがオブジェクトです。その他にも、ボタンやグラフ、画像などもオブジェクトにあたります。
Excelのシートにボタンを設置した場合、このボタンには名前を付けることができます。このボタン名のことを[オブジェクト名]といいます。
VBAの中では、このオブジェクト名を記述することで、そのオブジェクトに対する操作を行うことができます。
オブジェクトに対する操作は、プロパティとメソッドを使ってできます。
プロパティの取得と設定
プロパティとは、オブジェクトがもつ属性のことです。属性とは性質や特徴などの情報です。
書き方はオブジェクト名にピリオド(.)を付けてプロパティ名を指定します。
オブジェクト名.プロパティ名
以下はValueプロパティを使用した例です。Valueはセル入力されているデータを取得します。プロパティは情報の取得もできますが、設定をするともできます。
’セルの値を取得 Dim セルの値
セルの値 = Cells(1, 1).Value ’セルに値を設定する Cells(1, 1).Value = "こんにちは"
試しにExcelを起動し、Sheet1のセルA1に文字を入力し、以下のコードを入力してテストをします。
Visual Basic Editorを開き、Sheet1のエディターに以下を入力してF5で実行します。
Sub test()
’セルの値を取得
Dim セルの値
セルの値 = Cells(1, 1).Value
Debug.Print セルの値
’セルに値を設定する
Cells(1, 1).Value = "こんにちは"
セルの値 = Cells(1, 1).Value
Debug.Print セルの値
End Sub
[表示]メニューから、イミディエイトウィンドウをクリックして表示させます。Debug.Printで表示したセルの内容が確認できます。
他にも、セルに背景色を設定する場合は、以下のプロパティで設定します。
Range(“A1:D3”) .Interior.ColorIndex = 3 (カラーインデックス番号)
これも試してみるとRangeで指定した範囲の背景色が変更されたのが確認できます。
カラーインデックス番号は、3が赤、4が緑、5が青、6が黄色です。
そのほかの番号については、以下が参考になります。
ColorIndex プロパティ (Excel グラフ) | Microsoft Learn
セルの文字に色を設定する場合は、以下のプロパティで設定します。
Range(“A1:D3”).Font.ColorIndex = 6 (カラーインデックス番号)
こちらも試すと以下のような結果になります。
メソッドについて
メソッドはオブジェクトに命令するためのキーワードです。
オブジェクトに操作を実行させる場合は、メソッドを使って命令を出します。
例えば、ブックやシートやセルのメソッドは以下のようなものがあります。
ブック名.Open | 別ブックを開く |
ブック名.Save | ブックの上書き保存 |
ブック名.Close | ブックを閉じる |
シート名.Copy | シートをコピー |
シート名.Delete | シートを削除 |
セル名.Copy | セルの値のコピー |
セル名.Paste | セルの値の貼り付け |
セル名.Select | セルの選択 |
書き方はオブジェクト名にピリオド(.)を付けてメソッド名を指定します。
オブジェクト名.メソッド名
例えば、セルの値をコピーして別のセルにペーストする場合は以下のように書けます。
コピー元セル.Copy コピー先セル
Copyメソッドを実際に書いて確認してみます。セルA1に「おはよう」という値が入力されているとします。
隣のセルB1にコピーするには以下のように書きます。
F5で実行するとコピーされたことが確認できます。
Range(“A1”)のコピーを行います。この場合、Range(”B1”)は引数となります。
引数とは
引数とは、メソッド名の後に指定するデータのことです。
メソッドは、渡された引数を使って処理を実行します。そのメソッドの実行結果を返却する場合、その実行結果のデータを戻り値といいます。
戻り値がないメソッドの場合は、Copyメソッドのようにメソッド名と引数の間にスペースを空けるだけで良いです。
コピー元セル.Copy コピー先セル
逆に、戻り値がある場合、メソッドの引数はカッコ()で囲う必要があります。カッコがないとエラーとなります。
戻り値のあるメソッドの例
Findメソッドを使って戻り値の例を書いていきます。
Findメソッドは、セル範囲内で指定した値を検索します。戻り値として一致したセルをRangeオブジェクトとして返します。
Range.Find メソッド (Excel) | Microsoft Learn
Range(“A1:E10”)の範囲に「おはよう」を入力し、その中にひとつだけある「こんにちは」を検索します。
コードは以下のようになります。
Findメソッドから返ってきた戻り値は、[検索結果]という変数に格納しています。
変数にオブジェクトを格納する場合は、Setを付けます。

Dim 検索結果
Set 検索結果 = Range("A1:E10").Find("こんにちは", LookAt:=xlPart)
ここでの引数は2つあります。
1つは「こんにちは」という第一引数と、第二引数として検索オブションで、
LookAt:=xlPart
部分一致として検索オブションの指定をしています。
完全一致の場合は、
LookAt:= xlWhole
と指定します。
Range.Find メソッド (Excel) | Microsoft Learn
実行すると、メッセージボックスに戻り値が表示されました。
オブジェクトのプロパティとメソッドの確認
オブジェクトにピリオド(.)を入力すると、そのオブジェクトが利用できるプロパティとメソッドの一覧が表示されます。
どのプロパティやメソッドを使えばよいかわからないときは、この一覧を確認すると便利です。
いきなりオブジェクトの指定はできない
Sheet1でVBAのコードを作成していたとします。このとき、Sheet2のセルを操作したいときはどうしたらよいでしょうか。
以下のように、いきなりSheet2のセルを指定することはできません。
‘セルA5にSheet2のセルA1の値を入力する
Range(“A5”).Value = Range(“A1”).Value
この場合、Sheet1のセルA5に、Sheet1のセルA1の値を入力してしまいます。
別のシートのオブジェクトを指定する場合は、ちゃんと別シートのオブジェクトを指定する必要があります。
‘セルA5にSheet2のセルA1の値を入力する
Range(“A5”).Value = Worksheets(“Sheet2”).Range(“A1”).Value
そして、開いている別ブックのオブジェクトの操作をしたい場合は、同じように別ブックを指定する必要があります。
‘セルA5にSheet2のセルA1の値を入力する
Range(“A5”).Value =
Workbooks("別ブック名.xlsx").Worksheets(“Sheet2”).Range(“A1”).Value
このように、どのオブジェクトの中のオブジェクトなのかを指定してあげないと、思った通りの動作をしません。
まとめ
オブジェクトとは、VBAでの操作対象のことです。
プロパティとは、オブジェクトがもつ属性のことです。属性とは性質や特徴などの情報です。
メソッドはオブジェクトに命令するためのキーワードです。
プロパティとメソッドは、オブジェクトにピリオド(.)を付けて指定することでオブジェクトに対する操作を行うことができます。