Excel VBA入門 | 基本形「オブジェクト.プロパティ = 値」の派生形(その2)

Excel VBA入門

更新日:2018年1月7日 公開日:2018年1月3日

Excel VBAを学ぶ上で、文法の基本を学ぶことは言うまでもなく重要です。

ここではオブジェクト式のうち、「オブジェクト.プロパティ = 値」の派生形について解説します。

※オブジェクト式や基本形「オブジェクト.プロパティ = 値」については「Excel VBA入門 | オブジェクト式とプロパティ、メソッド」をご参照ください。

【注意事項】オブジェクト式の派生形について
サイト管理者の実務経験から帰納的に派生形としてまとめています。従って当サイト独自の考え方に基づくものです。また実務経験に基づくものであるため、不定期に更新する可能性があります。この点をご理解頂いたうえでお読みください。

1.「オブジェクト.プロパティ = 値」の派生形

「オブジェクト.プロパティ = 値」の派生形には、次の式があります。

【派生形1-1】 オブジェクト1.プロパティ1 = オブジェクト2.プロパティ2
今回解説→【派生形1-2】 オブジェクト1.オブジェクト2・・・.オブジェクトN.プロパティ = 値
【派生形1-3】 オブジェクト.プロパティ1.プロパティ2 ・・・ .プロパティN = 値
【派生形1-4】 オブジェクト.プロパティ = 関数( 引数1,引数2,・・・引数N )

【補足】もう一つのオブジェクト式(基本形)である、「オブジェクト.メソッド 引数 := 値」の派生形には、次の式があります。ご参考ください。

【派生形2-1】 オブジェクト.メソッド 引数1 := 値1 , 引数2 := 値2 ・・・ , 引数N := 値N
【派生形2-2】 オブジェクト1.オブジェクト2 ・・・ .オブジェクトN .メソッド 引数 := 値
【派生形2-3】 オブジェクト.メソッド 引数 := オブジェクト

2.【派生形1-2】 オブジェクト1.オブジェクト2・・・.オブジェクトN.プロパティ = 値

Nは数字を表します。これは、プロパティが所属するオブジェクトはオブジェクトNですが、より大きな分類のオブジェクトが存在し、それらのオブジェクトも含めてコーディングしないと、正しく動作しないので、記述するケースです。

この派生形で使用される代表的なオブジェクトとして、Rangeオブジェクトが存在します。

3.使用例

次の例では、ワークシート上のA2セルに「サンプル」と入力します。

【VBA実行前】

Excel VBA オブジェクト式の派生形

【プログラム】

Sub セルA2に値を代入する()

ActiveSheet.Range("A2").Value = "サンプル"   '(1)

End Sub

【VBA実行後】

Excel VBA オブジェクト式の派生形

【解説】

(1)ActiveSheet.Range("A2").Value = "サンプル"
RangeオブジェクトValueプロパティを使用して、セルA2に「サンプル」と入力します。ActiveSheetオブジェクトはRangeオブジェクトの上位オブジェクト(ワークシートを表すオブジェクト)です。

派生形「( オブジェクト1.オブジェクト2・・・.オブジェクトN).プロパティ = 値」の典型例になります。

Rangeオブジェクトは、「Range("セル")」でワークシート上のセルを表します。「"セル"」の部分には「"A2"」のように、「"(ダブルクォーテーション)」でセル記号を囲みます。

Valueプロパティは、Rangeオブジェクトのプロパティの1つです。Rangeオブジェクトで表されたセルの値を表します。

今回の使用例では、「Range("A2").Value = "サンプル"」と、「ActiveSheet.」の部分がなくても正常に動作しますが、より正しくコーディングするのであれば、「ActiveSheet.」の部分は記述すべきです。

ActiveSheetオブジェクトは、現在開いているワークシートを表す、Rangeオブジェクトの上位に位置するオブジェクトです。

例えば、複数のワークシートのセルに値を入力する場合には、「Range("A2").Value = "サンプル"」だけでは、VBAは「どのワークシートのセルなのか」を理解することができません。

従って、「ActiveSheet.」「Worksheet("Sheet1").」といったようにワークシートを表すオブジェクトを追加で記述しておく必要があります。

さらに、複数のExcelブックを操作するようなVBAコードを記述する場合には、ブックを表すオブジェクトも追加する必要があり、3種類のオブジェクトを記述しなければいけません。

以上をまとめると、「ActiveSheet.Range("A2").Value = "サンプル"」は、左辺の「ActiveSheet.Range("A2").Value(現在開いているワークシートのセルA2)」に右辺の「サンプル」という値を代入する、ということです。