VBAのオブジェクトとは?オブジェクト、プロパティ、メソッドの使い方

Excel
この記事は約7分で読めます。

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を付けます。

変数について詳しくはこちら↓

ExcelVBAの変数について。変数の使い方について解説
変数は値を入れるための箱です。何度も登場させたい文字や数字に関しては1つの箱(変数)に入れて、わかりやすい名前を付けて使いまわすことができます。 変数の使い方 Dim 変数名 変数名 = 値 まず[Dim 変数名]で変数に名前を付けて、使う...
Dim 検索結果

Set 検索結果 = Range("A1:E10").Find("こんにちは", LookAt:=xlPart)

 ここでの引数は2つあります。

1つは「こんにちは」という第一引数と、第二引数として検索オブションで、

LookAt:=xlPart

 部分一致として検索オブションの指定をしています。

完全一致の場合は、

LookAt:= xlWhole

 と指定します。

Range.Find メソッド (Excel) | Microsoft Learn

 

実行すると、メッセージボックスに戻り値が表示されました。

 

オブジェクトのプロパティとメソッドの確認

 オブジェクトにピリオド(.)を入力すると、そのオブジェクトが利用できるプロパティとメソッドの一覧が表示されます。

どのプロパティやメソッドを使えばよいかわからないときは、この一覧を確認すると便利です。

 

 いきなりオブジェクトの指定はできない

Sheet1VBAのコードを作成していたとします。このとき、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での操作対象のことです。

プロパティとは、オブジェクトがもつ属性のことです。属性とは性質や特徴などの情報です。

メソッドはオブジェクトに命令するためのキーワードです。

プロパティとメソッドは、オブジェクトにピリオド(.)を付けて指定することでオブジェクトに対する操作を行うことができます。