| 機能内容 | 関数 | 使用例(簡易) | 結果 | 使用例説明(結果内容) |
|---|---|---|---|---|
| 現在のシステムの日付と時刻を返します。 | Now | Now() | 2020/5/11 14:47:56 | 現在の日付と時刻を表示します。 |
| 現在のシステムの日付を返します。 | Date | Date() | 2020/5/5 | 現在の日付を表示します。 |
| 現在のシステムの時刻を返します。 | Time | Time() | 12:23:45 | 現在の時間を表示します。 |
| 時刻から時を取り出します。 | Hour(時刻) | Hour(#3:45:56#) | 3 | 時間の(時)を表示します。 |
| 時刻から分を取り出します。 | Minute(時刻) | Minute(#3:45:56#) | 45 | 時間の(分)を表示します。 |
| 時刻から分を取り出します。 | Second(時刻) | Second(#3:45:56#) | 56 | 時間の(分)を表示します。 |
| 日付から年を取り出します。 | Year(日付) | Year(#7/11/2020#) | 2020 | 日付の年を表示します。 |
| 日付から月を取り出します。 | Month(日付) | Month(#7/11/2020#) | 7 | 日付の月を表示します。 |
| 日付から日を取り出します。 | Day(日付) | Month(#7/11/2020#) | 11 | 日付の日を表示します。 |
| 年・月・日の数値から日付を作成する | DateSerial(年,月,日) | DateSerial(2020,5,11) | 2020/5/11 | 2020、5、11から日付を作成します。 |
| 時・分・秒の数値から時刻を作成します。 | TimeSerial(時,分,秒) | TimeSerial(11,23,45)) | 11:23:45 | 11,23,45から時刻を作成します。 |
| 日付を表す文字列から日付を作成する。 | DateValue(日付) | DateValue("R2/11/11") | 2020/11/11 | R2/11/11から日付を作成します。 |
| 時刻を表す文字列から時刻を作成します。 | TimeValue(時刻) | TimeValue("12:24:56") | 12:24:56 | 12:24:56から時刻を作成 |
| 日付に対する曜日のコードを返します。 | Weekday(日付) | Weekday("2020/11/3") | 3 | 2020年11月3日に対応する曜日コードを表示します。 |
| 曜日コードから曜日を返します。 | WeekdayName(曜日コード,形式) | WeekdayName(1,false) | 日曜日 | 曜日コード:1を選択しましたので、月曜日が表示されました。 |
| 午前0時からの経過秒数を返します。 | Timer | Timer | 8504.468751 | 11時37分21秒は、8504.468751です。 |
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Now01() '計算時間を測定するサンプルプログラムです。
Dim I, L As Long
Range("B2") = Now '開始時刻をセルB2へ
'--------------------
For I = 1 To 100
For L = 1 To 1000
Range("B6") = I * L '計算を行います
Next L
Next I
'--------------------
Range("B4") = Now '終了時刻をセルB4へ
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Date01() '本日から6日後の日付を表示します。
Dim I As Date
Dim L As Integer
L = 2 '2行目から
For I = 0 To 6 '当日から6日後まで繰り返す。
Range("B" & L) = Date + I 'B列に本日から6日後の日付を表示します。
L = L + 1 '行を+1する。
Next I
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Time01() '現在の時刻から6時間後の時刻を表示します。
Dim L As Integer
Dim I, M As Date
L = 2 '2行目から
For L = 2 To 8 '2行目から8行目まで繰り返す。
I = Time + M '現在の時刻から加算する。
Range("B" & L) = I 'B列に本日から6日後の日付を表示します。
M = M + #1:00:00 AM# '1時間ずづ加算する。
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Hour01() '現在の時刻から6時間前までの時刻(時)を表示します。
Dim L, I As Integer
Dim M As Date
L = 2 '2行目から
M = Time '現在の時刻を取得
For L = 2 To 8 '2行目から8行目まで繰り返す。
I = Hour(M) '時刻から時間のみ取得します。
Range("B" & L) = I '取得された時間をB列に表示します。
M = M - #1:00:00 AM# '1時間ずづ減算する。
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Minute01() '現在の時刻から10単位で50分後までの時刻(分)を表示します。
Dim L, I As Integer
Dim M As Date
L = 2 '2行目から
M = Time '現在の時刻を取得
Range("B1") = M '現在の時刻
For L = 2 To 7 '2行目から7行目まで繰り返す。
I = Minute(M) '時刻から分のみ取得します。
Range("B" & L) = I '取得された時間をB列に表示します。
M = M + #12:10:00 AM# '10分ずづ加算する。
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Second01() '現在の時刻から5秒単位で25秒後までの時刻(秒)を表示します。
Dim L, I As Integer
Dim M As Date
L = 2 '2行目から
M = Time '現在の時刻を取得
Range("B1") = M '現在の時刻
For L = 2 To 7 '2行目から7行目まで繰り返す。
I = Second(M) '時刻から秒のみ取得します。
Range("B" & L) = I '取得された時間をB列に表示します。
M = M + #12:00:05 AM# '5秒ずづ加算する。
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Year01() '現在の日付から1年単位で5年後までの年を表示します。
Dim L, I As Integer
Dim YMD As Date
L = 2 '2行目から
YMD = Date '現在の日付を取得
Range("B1") = YMD '現在の日付
For L = 2 To 7 '2行目から7行目まで繰り返す。
I = Year(YMD) '現在の日付から年のみ取得します。
Range("B" & L) = I '取得された年をB列に表示します。
YMD = YMD + #1/1/1901# '1年ずづ加算する。
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Month01() '現在の日付から1ヶ月単位で5ヶ月後までの月を表示します。
Dim L, I As Integer
Dim YMD As Date
L = 2 '2行目から
YMD = Date '現在の日付を取得
Range("B1") = YMD '現在の日付
I = Month(YMD) '現在の日付から月のみ取得します。
For L = 2 To 7 '2行目から7行目まで繰り返す。
Range("B" & L) = I '取得された月をB列に表示します。
I = I Mod 12
I = I + 1
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Day01() '現在の日付から1日単位で5日後までの日を表示します。
Dim L, I, M As Integer
Dim YMD As Date
L = 2 '2行目から
YMD = Date '現在の日付を取得
Range("B1") = YMD '現在の日付
I = Day(YMD) '現在の日付から日のみ取得します。
M = Month(YMD) ''現在の日付から月のみ取得します。
For L = 2 To 7 '2行目から7行目まで繰り返す。
Range("B" & L) = I '取得された月をB列に表示します。
Select Case M '月によって末日を設定
Case 1, 3, 5, 7, 8, 10, 12
I = I Mod 31
Case 4, 6, 9, 11
I = I Mod 30
Case Else
I = I Mod 28
End Select
I = I + 1
Next L
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub DateSerial01() 'セルに入力されている数値から日付を作成する
Dim YY, MM, DD, I As Integer
For I = 2 To 7 '2行目~7行目まで繰り返す。
YY = Range("A" & I) 'A列から年を取得
MM = Range("B" & I) 'B列から月を取得
DD = Range("C" & I) 'C列から日を取得
Range("D" & I) = DateSerial(YY, MM, DD) '数値から作成された日付をD列に登録
Next I
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub TimeSerial01() 'セルに入力されている数値から時刻を作成する
Dim HH, MM, SS, I As Integer
For I = 2 To 7 '2行目~7行目まで繰り返す。
HH = Range("A" & I) 'A列から年を取得
MM = Range("B" & I) 'B列から月を取得
SS = Range("C" & I) 'C列から日を取得
Range("D" & I) = TimeSerial(HH, MM, SS) '数値から作成された時刻をD列に登録
Next I
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub DateValue01() '日付を表す文字列から日付(シリアル値)を作成する。
Dim I As Integer
Dim YMD As String
For I = 2 To 7 '2行目~7行目まで繰り返す。
YMD = Range("A" & I) 'A列から文字列の日付を取得
Range("B" & I) = DateValue(YMD) '文字列から作成された日付(シリアル値)をB列に登録
Next I
End Sub
'
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub TimeValue01() '時刻を表す文字列から時刻(シリアル値)を作成する。
Dim I As Integer
Dim Times As String
For I = 2 To 7 '2行目~7行目まで繰り返す。
Times = Range("A" & I) 'A列から文字列の時刻を取得
Range("B" & I) = TimeValue(Times) '文字列から作成された時刻(シリアル値)をB列に登録
Next I
End Sub
'
下記のサンプルプログラムは、Weekday関数を使ったサンプルプログラムです。日付に対して、該当す曜日コードを返します。
| 曜日(Weekday) | 曜日番号 |
|---|---|
| 日曜日 | 1 |
| 月曜日 | 2 |
| 火曜日 | 3 |
| 水曜日 | 4 |
| 木曜日 | 5 |
| 金曜日 | 6 |
| 土曜日 | 7 |
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Weekday01() '時刻を表す文字列から時刻(シリアル値)を作成する。
Dim I, Wday As Integer
Dim Tday As Date
For I = 2 To 7 '2行目~7行目まで繰り返す。
Tday = Range("A" & I) 'A列の日付からTdayに代入します。
Wday = Weekday(Tday) 'Tdayに代入した日付から曜日番号を抽出します。
Select Case Wday '曜日番号から文字列の曜日を選択します。
Case 1
Range("B" & I) = "日曜日"
Case 2
Range("B" & I) = "月曜日"
Case 3
Range("B" & I) = "火曜日"
Case 4
Range("B" & I) = "水曜日"
Case 5
Range("B" & I) = "木曜日"
Case 6
Range("B" & I) = "金曜日"
Case 7
Range("B" & I) = "土曜日"
End Select
Next I
End Sub
'
下記のサンプルプログラムは、曜日コードから曜日名を表示するサンプルプログラムですWeekday関数から取得した曜日コードからWeekdayName関数で曜日名を返します。WeekdayName関数を利用する事で、上記プログラムの様に、Select case文などを使わなくでも曜日(文字列)が取得できます。
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub WeekdayName01() '曜日番号に対して曜日(文字列)を返します。
Dim I, Wday As Integer
For I = 2 To 7
Wday = Weekday(Range("A" & I)) 'Weekday関数を使いA列の日付から曜日番号を取得
Range("B" & I) = WeekdayName(Wday, False) 'A列で曜日番号を取得した番号をWeekdayName関数で曜日に変換
Next I
End Sub
'
下記のサンプルプログラムは、Timer関数を利用したプログラム内のダミー処理の処理時間を計測するサンプルプログラムです。ダミー処理のスタートとストップにTimer関数による経過時間を計測して、その差額で経過時間を計測します。
'
'******** AKIRA55.COM ******* https://akira55.com/vba_function_datetime/
'
Sub Timer01() '午前0時からの経過秒数を返します。
Dim I, L As Long
Dim ST, EN As Double
ST = Timer
Range("A2") = ST 'スタートタイマー
'------------この処理の経過時間を計測します----※ダミー処理※
For I = 1 To 100
For L = 1 To 1000
Range("D2") = I * L '計算を行います
Next L
Next I
'---------------------------------------------※ダミー処理※
EN = Timer
Range("B2") = EN 'ストップタイマー
Range("C2") = EN - ST ' 経過時間を計算します。
End Sub
'