この記事では
- VBAのクラスモジュールの使い方を解説しています。
- オブジェクト指向の最低限の理解がある前提で、クラスモジュールについて解説しています。
- オブジェクト指向については前回の記事で解説しています→挫折した人のためのVBAクラスモジュール入門_その2 - 適材適所。
- この記事はクラスモジュールの実践的な使い方を学びたい人に向けて書いています。
- シリーズものです。その1はこちら→挫折した人のためのVBAクラスモジュール入門_その1 - 適材適所。
オブジェクトの情報を定義する場所がクラスモジュール
これまでオブジェクトの話をしてきました。
ではVBAを使ってそのオブジェクトを扱うにはどうしたらいいでしょうか。
オブジェクトを作るためには、「そのオブジェクトがどういった情報を持っているか」を定義する必要があります。
それを定義する場所が、クラスモジュールなのです。
ここで初めてクラスモジュールの話になりました。長かった。
クラスモジュールは「オブジェクトが持つ情報を定義する場所」です。情報を定義する場所なのです。
情報とは「プロパティ」と呼ばれるものです。今回の例でいうと「氏名」や「住所」になります。
クラスモジュールのコード
神エクセルを例にクラスモジュールを書いてみます。
神エクセルの情報を持つオブジェクトを生成するためのクラスです。
簡素化するために、氏名フリガナだけに限定します。
'GodExcel.cls 'プロパティ Dim pNameFurigana As String
GodExcelクラス・・・( ^ω^)
このクラスは情報、つまりプロパティとしてフリガナの名前が定義されています。
このクラスを使って、実際のオブジェクトを生成することができます。
まずは文法的な話を少しします。
クラスモジュールの文法的な話
オブジェクトにはプロパティがある、という話をしました。そしてクラスはオブジェクトを定義する場所であるとも説明しました。 つまり、クラスにはプロパティを定義する必要があります。
Dim pNameFurigana As String
これがプロパティを定義しているところです。このクラスから生成されるオブジェクトは、pNameFuriganaというプロパティを持っているということになります。
- pNameFurigana⇒プロパティの名前
- as String⇒データ型はString
分解するとこのような意味になります。 このクラスから生成されるオブジェクトを、便宜的に神オブジェクトと呼びます。神エクセルはpNameFuriganaという属性を持ちます。
単純過ぎますが、これも一つのクラスです。このクラスを使ってオブジェクトを生成することができます。
では実際にこれをクラスモジュールを挿入して貼り付けてみましょう。
VBEのプロジェクトエクスプローラーで右クリック→クラスモジュール プロパティウィンドウのオブジェクト名を「GodExcel」に変更する
GodExcelに前出のコードをコピペする。
これで準備ができました。
では実際にオブジェクトを生成してみましょう。
オブジェクトを生成する
オブジェクトの生成のための文法は次のとおりです。
Sub sample() Dim god As GodExcel Set god = New GodExcel End Sub
godという変数の型はGodExcel型、つまり先ほど定義したクラスになります。
そして、これを基にオブジェクトを生成するコードが「Set god=New GodExcel」です。
このあたりはもう、決まり文句みたいなものです。
これで変数godはGodExcelオブジェクトになりました。
でも、このgod、いったい何の役に立つのでしょうか?
まだまだ役に立つオブジェクトではない
そうなんです、まだまだ役に立たないんです。
これがどうやって使えるプログラムになるのか。
結論から言うと、現段階のこのGodExcelオブジェクトは全く役に立ちません。
このGodは「ダメGod」です。
どうして役に立たないのか。
せっかく定義したpNameFuriganaプロパティに触ることができないからです。
これではプロパティに値をセットしたり、値を取得したりすることができません。
GodExcelオブジェクトは、神エクセルの内容を知る神オブジェクトのはずなのに何も知りません。
これから何回かかけて、このダメGodを誰もが驚くすごいオブジェクトに成長させていきたいと思います(おおげさ)。
次回は成長させるため、プロパティに触れるようにしていきます。
ここまでお読みいただき、ありがとうございました。