クラスモジュール3、クラスにプロパティを追加する
動画でExcel クラスモジュール3、クラスにプロパティを追加する
クラスモジュール3、クラスにプロパティを追加する
前回はクラスにメソッドを追加しました。3回ではクラスにプロパティを追加する方法を説明します。
作成したクラスにPropertyというメンバーを加えます。
方法は、クラスモジュールの宣言セクションで宣言すると、そのクラスのプロパティになります。クラスのメンバーとも言います。
(サンプルファイルは、こちらです。 クラスモジュール3、クラスにプロパティを追加する、サンプルrn回)
マクロ動画 クラスモジュール3、クラスにプロパティを追加する
https://youtu.be/_mbkz4hz8kkクラスのメソッドとプロパティ
-
オブジェクトは、何かをするというメソッドと、それからオブジェクトが持っている性質属性を表すものとしてのプロパティ二つを備えて持っています。
-
プロパティは、オブジェクトの特徴として性質や属性を表すために使います。
これはクラスモジュールの宣言セクションで宣言すると、そのクラスのプロパティになります。 -
たとえば猫というオブジェクトを作る場合、猫には猫のメソッドを与えてやる必要があります。
またその特徴をつけるためにプロパティも必要です。 -
今回動画のサンプルとして、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文を使ってデータの行数分同じ操作をすれば、全部取得して書き出せると想像できるかと思います。
次回は、このつづきのコードを書いていきましょう。