VBAのNowは、結論から言えば、MSDNに関数と表記があるので、関数と呼んで良いのだろう。
VBA では、現在の日付や時刻を正確に調べるための関数として Now、Date、Time の 3 つの関数が提供されています。Now 関数は、Date 変数のうち日付と時刻の両方の部分を返します。たとえば Now 関数は次のような値を返します。
でも腑に落ちないことがある。
オブジェクトブラウザで確認すると、DateTimeクラスモジュールのプロパティとして定義されているのだ。
HourやMinuteはDateTimeクラスモジュールのFunctionなので、関数と呼んでもまあ差し支えは無いだろうけど、プロパティを関数と呼ぶのはやや抵抗がある。
それとも、DateTime.NowプロパティとNow関数は別物として定義されているのだろうか。
まあ、たまたま内部的にプロパティとして実装されているだけで、もし設計が違っていたら関数として実装されていてもおかしくは無い。
次のようにラッパー関数Nowを定義しても、何ら変わりなく動作する。
中身がDateTime.Nowなので当たり前であるが。
Sub 現在時刻() MsgBox Now End Sub Function Now() Now = VBA.DateTime.Now End Function
VBの設計者がメソッド、プロパティ、関数といった用語をどう使い分けているのか謎であるが、とりあえず便宜上は、「Nowは関数である」と言っておいてプログラミングに差し支えはなさそうである。
追記
※DateTimeはクラスだと思っていたらモジュールでした。
thom.hateblo.jp