以下の内容はhttps://thom.hateblo.jp/entry/2015/06/18/003417より取得しました。


VBA Now関数は実はFunctionではなくPropertyとして定義されている その2

先ほど以下の記事を投稿したばかりであるが、ひとつ勘違いが判明したので訂正記事。
thom.hateblo.jp


Now()はDateTimeクラスのプロパティと書いたが、そもそもDateTimeはクラスではなくてただのモジュールだったようだ。

「オブジェクトブラウザ」は、その名のとおりオブジェクトを閲覧するものだと勘違いしていた。

以下のようにDateTime型として宣言しようとすると、コンパイルエラーとなる。

    Dim x As VBA.DateTime


もう一度オブジェクトブラウザを確認すると、確かに左ペーンのヘッダはクラスと記載されているが、中身はModuleである。
f:id:t-hom:20150618001100p:plain

従って、少なくともFunctionはクラスのメソッドではなく、ただの関数と考えてよさそうだ。
そして、VBAライブラリの設計全般として、引数を取らず戻り値を返すものは、Functionではなく、プロパティとして実装されているようだ。

ちなみに、標準モジュールにも以下のようにプロパティを実装できる。

Sub テスト()
    MsgBox 作業フォルダ
End Sub

Property Get 作業フォルダ() As String
    作業フォルダ = "C:\"
End Property

引数無しのFunctionが作成できるように、引数付きのPropertyというのも作成することが出来るが、VBAライブラリでは設計上きちっと役割を分けているということだろう。

ひとつ勉強になった。




以上の内容はhttps://thom.hateblo.jp/entry/2015/06/18/003417より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14