【VBA】Now関数の使い方
VBAを使用すると、日付と時間を効果的に操作できます。その中でも「Now()」関数は、現在の日付と時間を取得することができる便利な関数です。
この記事では、「Now()」関数の基本的な使い方と具体的な例を紹介します。
Now関数の基本構文
1Now()
この関数は、現在の日付と時刻を含む値を返します。
それでは、具体的な使い方を見ていきましょう。
Now()の使い方
日付と時間の表示
「Now()」関数を使用して、現在の日付と時間を表示できます。
1Sub ShowCurrentDateTime()
2 MsgBox Now()
3End Sub
このコードを実行すると、ポップアップウィンドウに現在の日付と時間が表示されます。
日付と時間の切り出し
「Now()」から特定の要素を抽出することもできます。
例えば、現在の年、月、日、時、分、秒を取得したい場合、以下のようにコードを書きます。
1Sub ExtractDateTimeComponents()
2 Dim CurrentDateTime As Date
3 CurrentDateTime = Now()
4
5 MsgBox "Year: " & Year(CurrentDateTime) & vbCrLf & _
6 "Month: " & Month(CurrentDateTime) & vbCrLf & _
7 "Day: " & Day(CurrentDateTime) & vbCrLf & _
8 "Hour: " & Hour(CurrentDateTime) & vbCrLf & _
9 "Minute: " & Minute(CurrentDateTime) & vbCrLf & _
10 "Second: " & Second(CurrentDateTime)
11End Sub
Year()関数やMonth()関数で、日付(CurrentDateTime)の年や月だけを出力しているよ。
日付と時間の計算
「Now()」を使って日付と時間の計算も行えます。例えば、特定の日数を加算したり、時間を比較したりすることができます。
1Sub DateAndTimeCalculations()
2 Dim CurrentDateTime As Date
3 CurrentDateTime = Now()
4
5 ' 7日後の日付を計算
6 Dim NewDate As Date
7 NewDate = CurrentDateTime + 7
8
9 ' 現在の日時とNewDateを比較
10 If NewDate > CurrentDateTime Then
11 MsgBox "NewDateは現在の日付よりも未来です。"
12 End If
13End Sub
Now関数の使い方(応用例)
よく用いられる使い方として、ファイル名やフォルダ名に現在の日付や時間を含めて保存するやり方があります。例えば、2023年8月1日9時7分52秒にマクロを起動したときに、「出力Excel_20230801090752.xlsx」というファイル名で保存します。
Excelに名前を付けて保存するマクロを作成するときに、ファイル名を固定にしてしまうと、2回目に起動したときにエラーが発生(同じ名前のファイルが存在するため)する可能性があります。ファイルの存在確認(同名のファイルが存在しないか)をしてから保存することも多いのですが、起動のたびに現在時刻のフォルダを生成し、その中にフォルダを保存すれば同名ファイルが存在することによるエラーを回避できます。
コードの例
以下に、マクロExcelと同じディレクトリ(フォルダ)に現在時間のフォルダを生成し、その中にファイルを生成するコードの例を示します。
1Sub makedir()
2 Dim FilePath As String
3 FilePath = ThisWorkbook.Path & "\" & Format(Now(), "yyyymmddhhmmss")
4 MkDir FilePath
5 ThisWorkbook.SaveAs Filename:=FilePath & "\test.xlsm"
6End Sub
Now関数を使ってファイルやフォルダを作成するときは、必ずFormat()関数等を一緒に使ってね。
いかがだったでしょうか。この記事では、Now関数の使い方について紹介しました。VBAを使って日付と時間を操作する際には、「Now()」関数は非常に便利なツールです。あなたのプロジェクトやタスクに合わせて、これを活用してみてください。
それでは、バイよ。