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型:シリアル値の整数部分(日付)だけ格納されます。
解説(使用例)
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時に実行したイミディエイト画像 です。
13時に実行したイミディエイト画像がこちらです。Long型データでは、小数以下が四捨五入されてしまうため Date型に再変換すると1日繰り上がってしまうことが確認できます。これは要注意です!
▼戻り値を格納する変数を宣言
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関数で変換して日付時刻を表示させることができます。
Date など日付・時刻関数の使用例について
Date 関数のほか「日付・時刻」の関数について解説している過去記事があります。下記のリンクからジャンプしてご覧いただければ幸いです。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
Excel VBA Now 関数は、現在のシステムの「日付時刻」を取得します。
現在のシステムの「日付」だけを取得するには Date 関数 を使用します。
現在のシステムの「時刻」だけを取得するには Time 関数 を使用します。
いずれも、現在のシステムから取得するのが共通点です。
VBAでこれらの関数を使う場合、変数に代入して使用したり、他の関数の引数として使用します。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;