Woman typing on a laptop
VBA(Visual Basic for Applications)を使えば、ExcelやAccessといったMicrosoft製品上で簡単に現在の時刻を取得・操作できます。時刻を使ったログの記録や、処理の自動化、ファイル名への時刻の埋め込みなど、実務でも役立つ場面はたくさんあります。本記事では、VBAで現在時刻を取得する基本から、時刻を使った応用テクニックまでをわかりやすく解説します。初心者の方にも理解しやすいよう、実例コードも豊富に掲載していますので、ぜひ参考にしてください。
VBAで現在時刻を取得するには、Time
関数またはNow
関数を使用します。以下はそれぞれの基本的な使い方です。
Sub ShowTime()
MsgBox Time
End Sub
このコードを実行すると、現在の時刻(例:13:45:22)がメッセージボックスに表示されます。Time
関数は日付を含まず、時刻部分のみを返すのが特徴です。
Sub ShowNow()
MsgBox Now
End Sub
Now
関数は現在の「日付+時刻」を取得できます。ログを記録したいときや、処理が実行された正確なタイミングを知りたい場合に便利です。
現在時刻をExcelのセルに書き込むには、以下のように記述します。
Sub WriteTimeToCell()
Range("A1").Value = Time
End Sub
A1
セルに現在の時刻を記録できます。業務でのログ記録や打刻処理にも使えます。
また、日付と時刻の両方を記録したい場合は、次のようにします。
Sub WriteNowToCell()
Range("A2").Value = Now
End Sub
ファイル保存時に「何時に作成されたか」を記録しておくのは、業務効率やトラブル防止の面でも有効です。以下は現在時刻を含めたファイル名を作成するサンプルです。
Sub SaveFileWithTime()
Dim fileName As String
fileName = "レポート_" & Format(Now, "yyyymmdd_hhnnss") & ".xlsx"
ThisWorkbook.SaveAs "C:\Users\YourName\Documents\" & fileName
End Sub
このコードを実行すると、たとえば レポート_20250419_142530.xlsx
のようなファイルが作成されます。
時刻の見せ方はシチュエーションによって異なります。VBAでは Format
関数を使うことで、さまざまなフォーマットに対応できます。
Sub ShowHourMinute()
MsgBox Format(Time, "hh:mm")
End Sub
Sub ShowFullTime()
MsgBox Format(Time, "hh:mm:ss")
End Sub
Sub ShowAmPm()
MsgBox Format(Time, "hh:mm:ss AM/PM")
End Sub
業務では「今の時刻によって処理を分けたい」というケースも多くあります。以下は現在時刻が午前か午後かでメッセージを変える例です。
Sub GreetingByTime()
Dim currentTime As Date
currentTime = Time
If currentTime < TimeValue("12:00:00") Then
MsgBox "おはようございます"
Else
MsgBox "こんにちは"
End If
End Sub
このように、時刻を条件にして処理を分岐させることができます。
VBAでは、OnTime
メソッドを使って、特定の時刻にマクロを実行することも可能です。
Sub ScheduleTask()
Application.OnTime TimeValue("16:00:00"), "SayHello"
End Sub
Sub SayHello()
MsgBox "こんにちは!定刻になりました。"
End Sub
このようにすれば、定刻で通知を出したり処理を開始したりできます。業務での定時処理に応用可能です。
VBAで現在時刻を扱う方法は、業務を自動化・効率化するうえで非常に役立ちます。Time
やNow
関数での取得から、セルへの記録、ファイル名への利用、条件分岐、定時処理まで、さまざまな応用が可能です。
特に日付・時刻はトラブル対応や記録保持の観点からも非常に重要であり、スクリプトの一部に組み込んでおくだけで利便性が大きく向上します。
まずは本記事で紹介した基本的なサンプルを試しながら、自分の業務に合った使い方を見つけてみてください。今後、より高度なスケジュール管理や処理自動化にも対応できるようになるはずです。