🔧
GetCurrentDateTime
ユーティリティ現在の日時を取得し、セクション/セルに書き込む
現在の日時をVBAで取得してセルに挿入するマクロです。Now関数で現在日時を取得し、Format関数で任意の書式(「yyyy/mm/dd hh:mm:ss」等)に整形して指定セルに記録します。作業ログの自動タイムスタンプ、データ更新時刻の記録、処理開始・終了時刻の計測など、日時情報を自動付与する様々な業務自動化シナリオで活用できます。内部ではNow関数の戻り値をFormat関数で任意の書式に整形しており、TimestampCellsがセル変更イベントに連動する自動記録であるのに対し、本マクロは任意のタイミングでボタン実行やコード内呼び出しによって日時を取得する汎用性の高い部品として、他の多くのマクロから内部的に呼び出される基礎的な処理です。単体でも部品としても使える設計のため、既存マクロへの組み込みが容易です。

📖 使い方
- VBAエディタを開く(Alt + F11)
- モジュールを挿入(挿入 > モジュール)
- 下記VBAコードをコピー&ペースト
- ブック上で実行(Alt + F8 でマクロ選択)
💡 実行例: 実行すると現在の日時をアクティブシートのセルに書き込む
🎯 活用シーン
- ✓データ更新マクロの実行ログに処理開始・終了時刻を自動記録
- ✓入力フォームのタイムスタンプ欄を現在日時で自動入力
- ✓処理時間の計測のためにNow()の差分を計算して表示
- ✓定例バッチマクロの実行時刻をログシートに記録し、想定時間内に処理が完了しているか監視したいとき
- ✓承認申請フォームに申請日時を自動記録し、対応の遅延がないかSLA管理に活用したいとき
💡 実装のヒント
- ▸Now() で現在の日付と時刻を取得できます
- ▸Format(Now(), "yyyy/mm/dd hh:mm:ss") で書式を指定できます
- ▸Date()で日付のみ、Time()で時刻のみを取得できます
- ▸処理時間を計測したい場合は、開始時と終了時の両方でNow()を取得し、DateDiff関数で差分を秒単位まで算出できます。
- ▸海外拠点とのやり取りでタイムゾーンが異なる場合は、記録時にどのタイムゾーン基準かを明記しておくと誤解を防げます。
💻 VBAコード
' GetCurrentDateTime
' -----------------
' Macro Name: GetCurrentDateTime
' Description: 現在の日時を取得し、セクション/セルに書き込む
' Parameters: なし
' Returns: なし
' Usage: 実行すると現在の日時をアクティブシートのセルに書き込む
' -----------------
Sub GetCurrentDateTime()
Dim ws As Worksheet
Dim cellAddr As String
Dim formatType As String
Dim currentDT As Date
On Error GoTo ErrorHandler
Set ws = ActiveSheet
cellAddr = InputBox("書き込み先のセルアドレスを入力:", "日時取得", "A1")
If cellAddr = "" Then
Exit Sub
End If
formatType = InputBox("表示形式を選択:" & vbCrLf & _
"1: yyyy/mm/dd hh:nn:ss" & vbCrLf & _
"2: yyyy/mm/dd" & vbCrLf & _
"3: hh:nn:ss" & vbCrLf & _
"4: gggee年mm月dd日", "形式選択", "1")
currentDT = Now
Select Case formatType
Case "1"
ws.Range(cellAddr).NumberFormat = "yyyy/mm/dd hh:nn:ss"
Case "2"
ws.Range(cellAddr).NumberFormat = "yyyy/mm/dd"
Case "3"
ws.Range(cellAddr).NumberFormat = "hh:nn:ss"
Case "4"
ws.Range(cellAddr).NumberFormat = "gggee年mm月dd日"
Case Else
MsgBox "無効な選択です。", vbExclamation
Exit Sub
End Select
ws.Range(cellAddr).Value = currentDT
MsgBox "現在日時を書き込みました: " & Format(currentDT, "yyyy/mm/dd hh:nn:ss"), vbInformation
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description, vbCritical
End Sub