| 
    
     |  | ▼つん さん: >>>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()関数の違い、
 私もつい最近なんです。気がついたのは・・・。
 
 
 >
 
 
 |  |