少ないコード量で、クラスモジュールを実務で使えるかもと体感していただくためにイベント処理を共通化するクラスの簡単なサンプルと、プロパティをPropertyプロシージャで実装する例をご紹介しました。
プロパティをグローバル変数ではなく、Propertyプロシージャで実装するサンプルでは、モジュールレベル変数を「targetSheet_」としました。
この変数名について「変数名は絶対にこの形にしなければならないというわけではありません。詳細は別記事で。」と書いた件を、補足しておきます。
変数名のつけ方にはいくつかのスタイルがあり、2019年3月現在、クラスモジュールについて触れている入手しやすい日本語書籍のひとつ『Excel VBAの教科書』が、Propertyプロシージャとほぼ同じ名前で小文字始まりにして末尾にアンダーバーを付けるという「targetSheet_」タイプの命名ルールを採用しています。
プレフィックスをつけるスタイルの変数名
クラスモジュールについて記述のある他の日本語書籍『ExcelVBA 実戦のための技術』では、「targetSheet_」タイプとは異なる命名ルールを採用しています。
こちらの書籍では、Propetyプロシージャに、接頭辞・プレフィックス「m」を付けるというルールになっています。
このルールに則ってDaraValidationクラスをつくる場合、以下のようなコードになります。
Option ExplicitPrivate WithEvents mTargetSheet As Excel.Worksheet
Property Set TargetSheet(ByVal sh As Excel.Worksheet)
Set mTargetSheet = sh
End PropertyProperty Get TargetSheet() As Excel.Worksheet
Private Sub mTargetSheet_Deactivate()
Set TargetSheet = mTargetSheet
End Property
If mTargetSheet.Range("A1").Value = "" Then
mTargetSheet.Select
Range("A1").Select
MsgBox mTargetSheet.Name & "シートのA1セルには必ずデータを入力してください。"
End If
End Sub
ご紹介済みのDaraValidationクラスで「targetSheet_」となっていた箇所がすべて「mTargetSheet」に変更されています。
関係していることがわかり、かつ区別できること
プロパティを実装する際のモジュールレベル変数の名前は、結局のところ自由に決めてイイのですが、何らかの方針は必要です。
最低でも以下のような方針で名前を決めるのがいいだろうと、私は考えています。
モジュールレベル変数とPropertyプロシージャが強く関係していることを読み取れること、それでいてモジュールレベル変数とPropertyプロシージャが区別しやすいことです。
最終更新日時:2019-03-04 20:31
- Newer:再受講で理解度が各段に深まった
- Older:データ型を示すTYPE関数はもっと知られて欲しい
Home » エクセルマクロ・Excel VBAの使い方 » Propertyプロシージャでプロパティを実装する時の変数名