
動画でExcel クラスモジュール3、クラスにプロパティを追加する
前回はクラスにメソッドを追加しました。3回ではクラスにプロパティを追加する方法を説明します。
作成したクラスにPropertyというメンバーを加えます。
方法は、クラスモジュールの宣言セクションで宣言すると、そのクラスのプロパティになります。クラスのメンバーとも言います。
(サンプルファイルは、こちらです。 クラスモジュール3、クラスにプロパティを追加する、サンプルrn回)
オブジェクトは、何かをするというメソッドと、それからオブジェクトが持っている性質属性を表すものとしてのプロパティ二つを備えて持っています。

プロパティは、オブジェクトの特徴として性質や属性を表すために使います。
これはクラスモジュールの宣言セクションで宣言すると、そのクラスのプロパティになります。

たとえば猫というオブジェクトを作る場合、猫には猫のメソッドを与えてやる必要があります。
またその特徴をつけるためにプロパティも必要です。

今回動画のサンプルとして、DVD のコレクションのデータを表にしました。 その表に必要なオブジェクトやプロパティを作っていきましょう。

VBEを開いて、クラスモジュールを挿入します。
そしてコードを分かりやすくするために、クラスモジュールのオブジェクト名を MYDVD と変更しておきます。

クラスモジュールの宣言セクションにMovieTitleとYearとCountryという三つの変数を(プロパティ)を宣言しました。

Public MovieTitle As String Public Year As Long Public Country As Strin
本当にプロパティとして追加されたかどうか確認してみましょう。
F 2キーを押すとオブジェクトブラウザが表示されますので、
選択のプルダウンから VBA プロジェクトを選択してもらうと、
MYDVD というクラスがあります。
プライベートクラスとなってますね確かにクラスです。

そしてMYDVD のメンバーとしてMovieTitleとYearとCountryとこの三つが表示されています。
このアイコンを見てもらうと、シートのようなある特定の場所を指さして中身ですよ、みたいな意味にとれます。
これがプロパティのアイコンです。

さてまだ実体となるオブジェクトがないので何もできません。まずはモジュールの名前を使いやすいように変更しましょう。

なぜモジュールの名称を変更したのかと言うと、クラスモジュールの名称と対応しているので、自分にとってわかりやすいということからです。

では今作成したプロパティを使ってコードを書いてみましょう。

Dim dvd As MyDvd
Set dvd = New MyDvd
上記2行でdvdという変数をMydvdというクラスで宣言し、新しいMydvdオブジェクトにセットしています。これがインスタンス化です。
F8キーを押して1行ずつ実行するとローカルウィンドウに、プロパティに値が代入されていくのを確認することができます。

次にイミディエイトウィンドウに書き出す場合のコードは次のようになります。

Sub Mymovie()
Dim dvd As MyDvd
Set dvd = New MyDvd
With Sheet1
dvd.MovieTitile = .Cells(1, 1).Value
dvd.Year = .Cells(1, 2).Value
dvd.Country = .Cells(1, 3).Value
End With
Debug.Print dvd.MovieTitile & "," & dvd.Year & " ," & dvd.Country
End Sub
単純なコードですが、何の為にわざわざ書いたのかというと、青く反転させた部分をメソッド化してしまえば、モジュールに書くコードが簡略化できるということを紹介するためです。

クラスモジュールに次のメソッドを書きます。

そして、標準モジュールDvdColectの方のコードには、メソッドを記述してやります。

ここまできたら、次は、FOR文を使ってデータの行数分同じ操作をすれば、全部取得して書き出せると想像できるかと思います。
次回は、このつづきのコードを書いていきましょう。
