Property Get プロシージャの使い方(私見)
クラスモジュールを少しだけ学んだ結果、Property Getプロシージャの存在を知った。しかもこちらは、標準モジュールやシートモジュールでも使うことが出来る。一体、どんな時にどう使えば良いのだろう?
正しい使い方は、専門書やプロの方に丸投げでお任せする。そのうえで、最近の私の理解と使い処を少しだけ紹介。
まず、少なくともそのブック内やモジュール内で変更が無いもの、変更してはいけないもの、変更して欲しくないものは、定数としている。例えば特定のフォルダーパスなどが、これに当たる。
例)
Option Explicit Const FolderPath As String = "C:\Temp"
こちらは「定数」なので、関数が使用できない。
例えば、↓ このような記載はエラーになる。
Option Explicit Const ExcelVersion As String = Application.Version Sub test() MsgBox ExcelVersion End Sub
そこで最近では、例えばこのような使い方で回避している。
Property Get PivotVersion() As XlPivotTableVersionList ' Excel のバージョンに対応する、ピボットテーブルのバージョン取得。 Select Case Application.Version ' Excel2010の場合 Case "14.0": PivotVersion = xlPivotTableVersion14 ' Excel2013の場合 Case "15.0": PivotVersion = xlPivotTableVersion15 ' Excel2016の場合 Case "16.0": PivotVersion = 6 End Select End Property
ピボットテーブルをマクロで自動生成する場合、ユーザー毎のExcel環境に合わせてピボットテーブルのバージョンが変わってくれる。今のところ、エラーは発生していない。
ちなみに以前は、このようにしていた。
Sub Sample() ' 前略 Dim PivotVersion As Long PivotVersion = Application.Version - 10 ' 後略 End Sub
ピボットテーブルを自動生成するサブプロシージャの中に、ピボットテーブルのバージョンを決定する箇所を設けていた。
当時は、XlPivotTableVersionListではなく、Long型で宣言していた。
しかも、Excelのバージョン値とピボットテーブルのバージョン値が10違いである(※)ことに「着目」し、10引くことで値を求めていた。
※Excel 2007 以前に於いては、この法則は成立しない。
これでは他の人が見ても、何のことやら解らない。現在猛省中。
ということで、現在はここに落ち着いている。
でも来年の今頃は、無責任にも、違うことを言っているかもしれない。
(ごめんなさい、先に謝っておきます)。
参考まで。