みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
「初心者でもわかるエクセルVBAのクラスモジュール」をテーマにシリーズをお送りしています。
前回の記事はこちらです。
おそらく世界一簡単な「空っぽのクラス」を作成しました。
それで、その空っぽのクラスですが、クラスモジュールにいろいろとコードを追加していくことで、プロパティやメソッドなどのメンバーを追加していくことができるんです。
まずはプロパティからです。
ということで、今回はエクセルVBAでクラスに最も簡単なプロパティを追加する方法です。
では、行ってみましょう!
前回のおさらい
では、前回のおさらいからです。
題材は、以下のデータがSheet1に記載されている「メンバーリスト.xlsm」です。
このデータを「クラス化」して、いい感じに取り扱うというのを目標にシリーズを進めています。
ちなみに、本記事では上記のデータは一切使いません…汗
さて、前回はこのブックについて、以下手順でクラス「Person」を作成しました。
- 新規クラスモジュールを追加
- そのクラス名を「Person」に変更
…と言っても、メンバーなしの空っぽのクラスでした。
まずは、このクラスのモジュールにコードを書き込んで、メンバーを追加してみたいというわけです。
最も簡単なプロパティを作成する
では、この空っぽのクラス「Person」にプロパティ「FirstName」を追加していきますね。
おそらく、世界一簡単なプロパティではないかと思います。
クラスモジュール「Person」の宣言セクションに以下のコードを追加してください。
Public FirstName As String
はい、OK。
これで、プロパティの完成です!
え?簡単すぎやしないかって…?大丈夫です、ホントです!!
その証拠に、 F2 キーでオブジェクトブラウザーを開いて、VBAProjectのPersonのメンバーを見てやってください。
ほら、クラス「Person」に「FirstName」というメンバーが追加されていて、そのマークはいつも見慣れている「プロパティ」のものですよね。
そして、下部の「詳細ペイン」を見ると、「Public FirstName As String」ということで、String型のプロパティなんだということがわかりますね。
クラスモジュールのモジュールレベルの変数はプロパティ
コードの解説をしておきましょう。
前述のコードは、モジュールレベルの変数を宣言する命令です。
いつもプロシージャ内で使っている変数は、プロシージャレベルの変数ですが、宣言セクションで変数を宣言すると、モジュールレベルになります。
それで、大事なことを言いますよ。
クラスモジュールの宣言セクションで宣言した変数は、そのクラスのプロパティになります。
はい、これ大事です。
そして、モジュールレベルの変数はさらに以下の2種類があります。
- パブリック変数
- プライベート変数
今回宣言しているのはパブリック変数のほうです。
Publicステートメントでパブリック変数を宣言する
パブリック変数は、以下のPublicステートメントで宣言をします。
このようにPublicステートメントを使って宣言した変数は、プロジェクト内のどのモジュールからも使用できる変数を宣言できます。そのような変数をパブリック変数といいます。
それに対して、他のモジュールからは参照できないモジュール変数をプライベート変数と言います。
プライベート変数については、また別の記事で紹介するので、「へ~そんなのあったな~」レベルで覚えておいてください。
まとめ
以上、エクセルVBAでクラスに最も簡単なプロパティを追加する方法を紹介しました。
大事なことをもう一回。
クラスモジュールで宣言したモジュール変数はそのクラスのプロパティになります。
ただ、オブジェクトブラウザーで見ただけで、まだプロパティっぽいとこ見られてないですよね。
いいでしょう、次回お見せします。
クラスをオブジェクト化する、すなわちインスタンス化をして作成したプロパティを使ってみましょう。
どうぞお楽しみに!
連載目次:初心者でもわかる!エクセルVBAでクラスを作ろう
名前は聞いたことあるけどよくわからない「クラスモジュール」。本シリーズでは、初心者でも少しずつ丁寧にその作り方と便利さについてお伝えしていきますよ!- 【初心者でもできる】エクセルVBAで最も簡単なクラスを作る方法
- エクセルVBAでクラスに最も簡単なプロパティを追加する方法
- エクセルVBAで自作クラスをインスタンス化する方法
- エクセルVBAでクラスに最も簡単なメソッドを追加する方法
- エクセルVBAで表の1行分のデータを表すクラスを作成する方法
- エクセルVBAでProperty Getプロシージャを使って簡単なプロパティを作成する方法
- エクセルVBAでプロパティを他のモジュールからアクセスできないようにする方法
- エクセルVBAでProperty Letプロシージャを使ってプロパティ設定をする方法
- エクセルVBAでPropety Getプロシージャを使ってプライベート変数にアクセスする方法
- エクセルVBAでクラスのインスタンス生成時に初期データを格納するメソッドを作る方法
- エクセルVBAでインスタンスの集合をコレクション化する方法
- エクセルVBAでコレクション化したインスタンスを取り出す方法
- エクセルVBAでクラスモジュールを使って独自のコレクションを作る方法
- エクセルVBAでインスタンス生成時に自動で処理を実行するイベントプロシージャClass_Initialize
- エクセルVBAで自作コレクションのインスタンス生成時に初期データも投入する方法
- エクセルVBAで自作コレクションの要素を取得するプロパティの作り方
- エクセルVBAで自作のコレクションに要素を追加するメソッドを作成する
- エクセルVBAで自作コレクションの要素を削除するメソッドの作り方
- エクセルVBAでエクセル表のデータを反映するメソッドとクラスを使うメリット