ビルド11231.20130)書くコード量をできるだけ減らしつつも、実務で使えるかもしれないと感じていただくために、イベント処理を共通化するためにクラスモジュールを使ったサンプルをご紹介しています。「クラスってPropertyプロシージャが必要じゃないのだろうか?」という疑問を持つ方が、いらっしゃるかもしれません。[スポンサードリンク]クラスモジュールにPropertyプロシージャは必須ではない結論から言えれば、VBAのクラスモジュールにPropertyプロシージャは必須というわけではありません。取得も設定もできるプロパティにするならば、ご紹介したようにPublicで宣言したグローバル変数でも構いません。ちなみにPropertyプロシージャは、クラスモジュールでしか使えないというわけでもありません。マクロ高速化のために停止すべき3項目」で紹介されているPropertyプロシージャがおすすめです。取得も設定もできるプロパティをPropertyプロシージャで定義するもちろん先日ご紹介したクラスを、Propertyプロシージャを使って書くこともできます。Propertyプロシージャを使ってTargetSheetプロパティを実装するなら、以下のようなコードを書きます。Excel.Worksheetの1行で済んでいたのに、コードの行数は7倍と随分増えました。targetSheet__Deactivate()に修正する必要もあります。Propertyプロシージャでプロパティを実装したDataValidationクラスDataValidationクラスモジュール全体は以下のようになります。"シートのA1セルには必ずデータを入力してください。SubなおDataValidationクラスを利用している標準モジュール側は、修正不要です。Sub前回ご紹介した上記コードのままでOKです。これがクラスモジュールを使うメリットでもあります。変更内容は以下のとおりです。Excel.Worksheetにしています。Publicで宣言していたのをPrivateに変更して、変数名も少し変更しています。「TargetSheet」という名前だったのを、ここでは、先頭の1文字を小文字にし、末尾には「_」(アンダーバー・アンダースコア)を追加した「targetSheet_」にしています。変数名は絶対にこの形にしなければならないというわけではありません。(関連記事を書きました。Excel.Worksheet新たに定義しました。このサンプルでGetが必要なのか、という意見もあると思いますけれど、これも別記事で。(関連記事を書きました。2019-02-20)Propertyプロシージャを使ってプロパティを真面目に実装すれば、このようにコードは増えます。実務の中でクラスモジュールを使うのなら、Propertyプロシージャを必要とするケースが多くなるとは思いますが、一度クラスモジュールを使ってみたいという段階ならば、グローバル変数でお手軽に体験するというのも、ひとつの方略でしょう。体験してみてから、実務で使うのは、やめておこうと決定することも当然あるはずです。制限のないプロパティ設定/取得を簡単に書く」のあたりも読んでみることをおすすめします。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。(2006.12.29)「PERSONAL.XLSは編集中のためロックされています。