Property Get プロシージャの使い方(私見)

クラスモジュールを少しだけ学んだ結果、Property Getプロシージャの存在を知った。しかもこちらは、標準モジュールやシートモジュールでも使うことが出来る。一体、どんな時にどう使えば良いのだろう?
f:id:Infoment:20190228222352p:plain

正しい使い方は、専門書やプロの方に丸投げでお任せする。そのうえで、最近の私の理解と使い処を少しだけ紹介。

まず、少なくともそのブック内やモジュール内で変更が無いもの、変更してはいけないもの、変更して欲しくないものは、定数としている。例えば特定のフォルダーパスなどが、これに当たる。

例)

Option Explicit
Const FolderPath As String = "C:\Temp"

こちらは「定数」なので、関数が使用できない。
例えば、↓ このような記載はエラーになる。

Option Explicit
Const ExcelVersion As String = Application.Version

Sub test()
    MsgBox ExcelVersion
End Sub

f:id:Infoment:20190228223012p:plain

そこで最近では、例えばこのような使い方で回避している。

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 以前に於いては、この法則は成立しない。
これでは他の人が見ても、何のことやら解らない。現在猛省中。


ということで、現在はここに落ち着いている。
でも来年の今頃は、無責任にも、違うことを言っているかもしれない。
(ごめんなさい、先に謝っておきます)。

参考まで。