Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


66235 / 76734 ←次へ | 前へ→

【15064】Re:変数 = [Now()]・・・って
発言  ichinose  - 04/6/14(月) 18:10 -

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


>
2 hits

【15011】UserForm上のイメージを動かす ゆう 04/6/13(日) 13:35 質問
【15012】Re:UserForm上のイメージを動かす つん 04/6/13(日) 14:05 回答
【15013】Re:UserForm上のイメージを動かす ゆう 04/6/13(日) 14:33 質問
【15018】Re:UserForm上のイメージを動かす クウガ 04/6/13(日) 15:58 回答
【15028】Re:UserForm上のイメージを動かす ゆう 04/6/13(日) 20:57 お礼
【15053】変数 = [Now()]・・・って つん 04/6/14(月) 15:56 発言
【15057】Re:変数 = [Now()]・・・って ichinose 04/6/14(月) 16:31 発言
【15059】Re:変数 = [Now()]・・・って つん 04/6/14(月) 17:06 発言
【15064】Re:変数 = [Now()]・・・って ichinose 04/6/14(月) 18:10 発言
【15076】Re:変数 = [Now()]・・・って つん 04/6/15(火) 10:46 お礼
【15079】Re:変数 = [Now()]・・・って クウガ 04/6/15(火) 11:31 発言

66235 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free