Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2094

エクセルVBAでクラスに最も簡単なプロパティを追加する方法

$
0
0

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

「初心者でもわかるエクセルVBAのクラスモジュール」をテーマにシリーズをお送りしています。

前回の記事はこちらです。

【初心者でもできる】エクセルVBAで最も簡単なクラスを作る方法
「初心者でもわかる!エクセルVBAのクラスモジュールの活用法」をテーマに、その使い方と便利さについてシリーズでお伝えしていきます。今回は、エクセルVBAで最も簡単なクラスを作る方法をお伝えしていきます。

おそらく世界一簡単な「空っぽのクラス」を作成しました。

それで、その空っぽのクラスですが、クラスモジュールにいろいろとコードを追加していくことで、プロパティやメソッドなどのメンバーを追加していくことができるんです。

まずはプロパティからです。

ということで、今回はエクセルVBAでクラスに最も簡単なプロパティを追加する方法です。

では、行ってみましょう!

前回のおさらい

では、前回のおさらいからです。

題材は、以下のデータがSheet1に記載されている「メンバーリスト.xlsm」です。

エクセルVBAでクラス化するエクセル表

このデータを「クラス化」して、いい感じに取り扱うというのを目標にシリーズを進めています。

ちなみに、本記事では上記のデータは一切使いません…汗

さて、前回はこのブックについて、以下手順でクラス「Person」を作成しました。

  1. 新規クラスモジュールを追加
  2. そのクラス名を「Person」に変更

…と言っても、メンバーなしの空っぽのクラスでした。

まずは、このクラスのモジュールにコードを書き込んで、メンバーを追加してみたいというわけです。

最も簡単なプロパティを作成する

では、この空っぽのクラス「Person」にプロパティ「FirstName」を追加していきますね。

おそらく、世界一簡単なプロパティではないかと思います。

クラスモジュール「Person」の宣言セクションに以下のコードを追加してください。

Public FirstName As String

はい、OK。

これで、プロパティの完成です!

え?簡単すぎやしないかって…?大丈夫です、ホントです!!

その証拠に、 F2 キーでオブジェクトブラウザーを開いて、VBAProjectのPersonのメンバーを見てやってください。

クラスPersonにFirstNameプロパティが追加された

ほら、クラス「Person」に「FirstName」というメンバーが追加されていて、そのマークはいつも見慣れている「プロパティ」のものですよね。

そして、下部の「詳細ペイン」を見ると、「Public FirstName As String」ということで、String型のプロパティなんだということがわかりますね。

クラスモジュールのモジュールレベルの変数はプロパティ

コードの解説をしておきましょう。

前述のコードは、モジュールレベルの変数を宣言する命令です。

いつもプロシージャ内で使っている変数は、プロシージャレベルの変数ですが、宣言セクションで変数を宣言すると、モジュールレベルになります。

それで、大事なことを言いますよ。

クラスモジュールの宣言セクションで宣言した変数は、そのクラスのプロパティになります。

はい、これ大事です。

そして、モジュールレベルの変数はさらに以下の2種類があります。

  • パブリック変数
  • プライベート変数

今回宣言しているのはパブリック変数のほうです。

Publicステートメントでパブリック変数を宣言する

パブリック変数は、以下のPublicステートメントで宣言をします。

Puclic 変数名 As

このようにPublicステートメントを使って宣言した変数は、プロジェクト内のどのモジュールからも使用できる変数を宣言できます。そのような変数をパブリック変数といいます。

それに対して、他のモジュールからは参照できないモジュール変数をプライベート変数と言います。

プライベート変数については、また別の記事で紹介するので、「へ~そんなのあったな~」レベルで覚えておいてください。

まとめ

以上、エクセルVBAでクラスに最も簡単なプロパティを追加する方法を紹介しました。

大事なことをもう一回。

クラスモジュールで宣言したモジュール変数はそのクラスのプロパティになります。

ただ、オブジェクトブラウザーで見ただけで、まだプロパティっぽいとこ見られてないですよね。

いいでしょう、次回お見せします。

クラスをオブジェクト化する、すなわちインスタンス化をして作成したプロパティを使ってみましょう。

どうぞお楽しみに!


Viewing all articles
Browse latest Browse all 2094

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>