コレクションページ

エクセルマクロで「年月日時分」文字列取得

エクセルで保存時間や変更時間等、現在時間の時間の文字列を使用したい場合があります。
ココではエクセルマクロで現在の「年月日時分」の文字列を取得する方法を記載します。
やり方は色々とあるので他でも調べていただき、自分に合ったやり方をしてください。
こちらのページも参考になれば幸いです。

●「年月日時分」の文字列を作成する関数

以下は汎用性を持たせた「年月日時分」の文字列を作成する関数例です。
関数を呼ぶと、戻り値で「年月日時分」の文字列を返します。
(例)
'****************************
'年月日時分文字作成
'****************************
Function 年月日時分作成()
 Dim MN_NAME, DY_NAME, H_NAME, M_NAME As String

 MN_NAME = Month(Now)
 DY_NAME = Day(Now)
 H_NAME = Hour(Now)
 M_NAME = Minute(Now)
 If (MN_NAME <= 9) Then
  MN_NAME = "0" & MN_NAME
 End If
 If (DY_NAME <= 9) Then
  DY_NAME = "0" & DY_NAME
 End If
 If (H_NAME <= 9) Then
  H_NAME = "0" & H_NAME
 End If
 If (M_NAME <= 9) Then
  M_NAME = "0" & M_NAME
 End If
 年月日時分作成 = Year(Now) & MN_NAME & DY_NAME & H_NAME & M_NAME
End Function

(解説)
・Function 年月日時分作成()
関数の名前です。Function ***()で***が関数名になります。
Functionは戻り値があることを示します。
・Dim MN_NAME, DY_NAME, H_NAME, M_NAME As String
月、日、時、分のデータを納める箱を用意(定義)します。
MN_NAME:月のデータ
DY_NAME:日のデータ
H_NAME:時のデータ
M_NAME:分のデータ
・MN_NAME = Month(Now)
MN_NAMEに月のデータをセットします。
・DY_NAME = Day(Now)
DY_NAMEに日のデータをセットします。
・H_NAME = Hour(Now)
H_NAMEに時のデータをセットします。
・M_NAME = Minute(Now)
M_NAMEに分のデータをセットします。
・If (**_NAME <= 9) Then
各**_NAMEで9以下にチェックをします。9以下の場合"0"の文字を追加します(例:01)。
・End If
各判定処理(各**_NAMEの9以下判定)を終了します。
・年月日時分作成 = Year(Now) & MN_NAME & DY_NAME & H_NAME & M_NAME
年月日時分のデーターを、この関数を呼び出した関数へ戻り値で返します。
・End Function
処理を終了します。

※気のせいだと良いのですが、例えば時間で12時59分59秒~13時00分00秒の間で時間を読み込むと、タイミングによっては12時00分と読み込む時があると思います。
日付でも同じことが言えると思いますので、何かしらのチェックを入れておくと無難でしょう。
例えば日時を2度読みして先に読んだ日時と後で読み込んだ日時の比較をして、同じか未来の日時を採用しましょう。