本ページには広告が含まれています。

ExcelVBA Now 関数 現在の日付時刻を示す値を返します

ExcelVBA Now 関数 現在の日付時刻を返します

Excel VBAの「Now 関数」について解説します。

スポンサーリンク

Now 関数とは

Excel VBA の Now 関数は、現在のシステムの日付と時刻を示す Variant (Date) を返します。

では、Now 関数の構文や引数の設定など、実際の使い方について解説していきたいと思います。

Now 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

Now

引数

Now 関数に引数はありません。

戻り値

戻り値説明
日付時刻を示す値システムの現在日時を示す Variant (Date) を返します

Now 関数の戻り値は、日付時刻が格納されたシリアル値なので小数が含まれています。シリアル値は整数部分が日付(1日を1とした値)です。そして、小数以下に時刻の値が格納されています。

VBAで Now 関数のシリアル値を扱う場合、格納する変数の型によって出力が異なるので注意が必要です。
・String型:日時がそのまま文字列として格納されます。
・Double型: シリアル値が小数以下まですべて(日付+時刻)格納されます。
・Long型:シリアル値の整数部分(日付)だけ格納されます。

日付シリアル値は、1日を1とした値です。小数以下が時間を表します。
シリアル値の1日は1です。1日は24時間ですので、
1時間は、1/24 です。(0.0416666666…割り切れません)
1分は、1/24/60 です。(0.000694444…)
1秒は、1/24/60/60 です。(0.000011574…)
※割り切れないので分数で計算します。(+)プラスは未来、(-)マイナスなら過去です。

解説(使用例)

Now 関数で現在の日時を取得できます。取得した Variant (Date) について見ていきます。

Now 関数の戻り値を確認するサンプル

Now 関数の戻り値を各数値型変数に代入して表示するサンプルです。

'■Now関数の戻り値を確認するサンプル
Sub Now_Sample()
'▼戻り値を格納する変数を宣言
  Dim dt As Date
  Dim dl As Long
  Dim dd As Double
Debug.Print _
"▼各変数に格納して値を表示する"
  dt = Now
  Debug.Print "Now(Variant):" & (dt)
  dl = dt
  Debug.Print "Long型:" & (dl)
  dd = dt
  Debug.Print "Double型:" & (dd)

Debug.Print _
"▼変数の型をDate型に変換して表示する"
  Debug.Print "Long型をDateに変換:" & CDate(dl)
  Debug.Print "Double型をDateに変換:" & CDate(dd)
  
Debug.Print _
"▼Format関数で変換して表示する"
  Debug.Print "Format(dl, ""yyyy/mm/dd""):" & _
  Format(dl, "yyyy/mm/dd")
  Debug.Print "Format(dd, ""yyyy/mm/dd hh:mm:ss""):" & _
  Format(dd, "yyyy/mm/dd hh:mm:ss")
End Sub

6時に実行したイミディエイト画像 です。

Now_Smple 実行実行MsgBox画像(1)

13時に実行したイミディエイト画像がこちらです。Long型データでは、小数以下が四捨五入されてしまうため Date型に再変換すると1日繰り上がってしまうことが確認できます。これは要注意です!

Now_Smple 実行実行MsgBox画像(2)

▼戻り値を格納する変数を宣言
4~7行目、Date型変数 dt、Long型変数 dl、Double型変数 dd を宣言しています。

▼各変数に格納して値を表示する
9~10行目、dt = Now Date型変数に実行時の日付日時を代入し、表示させています。
11~12行目、dl = dt Long型変数に dt を代し、dl の値を表示させています。
13~14行目、dd = dt Long型変数に dt を代し、dd の値を表示させています。

▼変数の型をDate型に変換して表示する
18行目、CDate関数でLong型変数 dl をDate型に変換して表示します。
19行目、CDate関数でDouble型変数 dd をDate型に変換して表示します。

▼Format関数で変換して表示する
23~24行目、Long型は Format(dl, “yyyy/mm/dd”):2024/07/01
25~26行目、Double型は Format(dd, “yyyy/mm/dd hh:mm:ss”):2024/07/01 06:00:08

Date型以外の数値型でもシリアル値をFormat関数で変換して日付時刻を表示させることができます。

Long型データでは、シリアル値の小数以下の部分が四捨五入されてしまうため Date型に再変換すると1日繰り上がってしまうので要注意です!

Date など日付・時刻関数の使用例について

Date 関数のほか「日付・時刻」の関数について解説している過去記事があります。下記のリンクからジャンプしてご覧いただければ幸いです。

おわりに

Excel VBA Now 関数は、現在のシステムの「日付時刻」を取得します。

現在のシステムの「日付」だけを取得するには Date 関数 を使用します。

現在のシステムの「時刻」だけを取得するには Time 関数 を使用します。

いずれも、現在のシステムから取得するのが共通点です。

VBAでこれらの関数を使う場合、変数に代入して使用したり、他の関数の引数として使用します。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!