Excel VBAのクラスを学ぶ1
はじめに
以前「Excel VBAのクラスを学ぶ前の準備 - モジュールとプロパティ -」という記事を書きました。 (現在受講中のVBAの講座内容です)
先日とうとうクラスの講座を受講しました!
まだまだ理解不足のところもありますが、そこで学んだことをまとめたいと思います。
◆目次◆
クラスがあると何ができるのか?
- クラス:設計書(オブジェクトとそのメンバーを定義)
- インスタンス化:クラスから実体のオブジェクトを生成
つまり、設計書をもとにオブジェクトが生成できます。 利点は、複数のオブジェクトが作れるので、コードの管理がしやすくなります。
クラスモジュールの作り方
- 挿入→クラスモジュール
- プロパティウィンドウのオブジェクト名を編集してクラスの名前をつける
オブジェクトの作り方
- クラスモジュールを作成する
- 標準モジュールでクラス型の変数を宣言し、インスタンス化する
例:人間の設計図として、Personクラスを作成し、オブジェクトを生成
'[Person]クラスモジュールを作成後に '[Module1]で以下を宣言すると、オブジェクトが生成される Dim myPerson As Person Set myPerson = New Person
まだこの段階ではPersonクラスモジュールに何も書いていないので、設計図の中身がない状態です。
では、クラス(設計図)にプロパティを加えます。
クラスにプロパティを定義する方法
オブジェクトにプロパティを追加する方法と同じです。
- モジュールレベル変数
- Property Let/Setプロシージャ
- Property Getプロシージャ
例:Personクラスに名前と年齢の設定を追加
'[Person]クラスモジュールにプロパティを追加する Public Name As String Private age_ As Long Public Property Get Age() As Long Age = age_ End Property Public Property Let Age(ByVal newAge As Long) If newAge > 0 Then age_ = newAge Else age_ = 0 End If End Property '[Module1]で以下のように宣言すると 'Personクラスの設計図をもとにmyPersonオブジェクトが生成され 'myPersonオブジェクトに名前と年齢が設定できる Sub personclass_test1() Dim myPerson As Person Set myPerson = New Person myPerson.Name = Bob myPerson.Age = 15 End Sub
クラスにはメソッドも定義できますが長くなるので、続きは次回にします。