|
▼つん さん:
>>>Now()を[ ]でくくるとシリアル値(?)になるんですね?
>>うーん、もしかしたら、解釈違ってられるかも・・・。
>えっ!?
>
>>VBAのnow()関数だって、シリアル値ですよ!!
>そうなの?
>だって、
>MsgBox [now()] だと「38152.70……」だし
>MsgBox Now() だと「04/06/14 17:01.29」だから、
>シリアル値に変換するのだとばかり・・・・
これは、「VBAのNOW()関数は、Date型で返され、
ワークシート関数の[now()]は、Double型で返されるからだ」
と私は認識しているですが・・・
Helpでは、
「日付型の変数では、日付はコントロール パネルで設定されている短い日付形式に従って表示されます。」となっていました。
'==================================
Sub test()
Dim bbb As Double
Dim aaa As Date
MsgBox Now()
aaa = [now()]
MsgBox aaa
bbb = Now()
MsgBox bbb
End Sub
このコードを実行して頂いてどうでしょうか?
さらにDate型の場合、
Helpには、
「0:00:00 〜 23:59:59 の範囲の時刻を表すことができます。」
つまり、VBAのNOW()関数は、Date型なので秒単位までしか値を持ってこないのでは
と思っています。
例えば、以下のコード
Sub test2()
Do While Cells(1, 2).Value = ""
Cells(1, 1).Value = [now()]
DoEvents
Loop
End Sub
セルA1の書式を"hh:mm:ss.00"に設定して実行すると
ちゃんと、0.00秒まで表示されますよね?
でも、
Sub test2()
Dim aaa As Date
Do While Cells(1, 2).Value = ""
aaa = [now()]
Cells(1, 1).Value = aaa
DoEvents
Loop
End Sub
としてしまうと、秒以下は、00になってしまうでしょう?
ワークシート関数のNOW()とVBAのNOW()関数の違い、
私もつい最近なんです。気がついたのは・・・。
>
|
|