Categories: VBA基礎

EXCEL VBA 日付・時刻・曜日を利用するVBA関数一覧(関数説明)

 

 

EXCEL VBA 日付・時刻・曜日を利用するVBA関数一覧(関数説明)

 

 

●はじめに
EXCEL VBAで特に日付・時刻・曜日を利用する関数の一覧を作成しました。一覧には関数名・使用例を実行した結果も記載しておりますので、EXCEL VBAプログラムで日付・時刻・曜日などを操作する時に参照して下さい。

 

 

●書式の説明   (文字列を操作する関数一覧)
機能内容関数使用例(簡易)結果使用例説明(結果内容)
現在のシステムの日付と時刻を返します。NowNow()2020/5/11 14:47:56現在の日付と時刻を表示します。
現在のシステムの日付を返します。DateDate()2020/5/5現在の日付を表示します。
現在のシステムの時刻を返します。TimeTime()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/112020、5、11から日付を作成します。
時・分・秒の数値から時刻を作成します。TimeSerial(時,分,秒)TimeSerial(11,23,45))11:23:4511,23,45から時刻を作成します。
日付を表す文字列から日付を作成する。DateValue(日付)DateValue("R2/11/11")2020/11/11R2/11/11から日付を作成します。
時刻を表す文字列から時刻を作成します。TimeValue(時刻)TimeValue("12:24:56")12:24:5612:24:56から時刻を作成
日付に対する曜日のコードを返します。Weekday(日付)Weekday("2020/11/3")32020年11月3日に対応する曜日コードを表示します。
曜日コードから曜日を返します。WeekdayName(曜日コード,形式)WeekdayName(1,false)日曜日曜日コード:1を選択しましたので、月曜日が表示されました。
午前0時からの経過秒数を返します。TimerTimer8504.46875111時37分21秒は、8504.468751です。

 

 

 

 

EXCEL VBA Now関数のサンプル  (現在の日付・時刻)

 

●プログラム説明 (Now関数)
下記のサンプルプログラムは、Now関数を使ったサンプルプログラムです。プログラム中に計算部分がありますので、その計算の開始(日時・時刻)と終了(日時・時刻)を表示するサンプルプログラムです。(計算時間を測定するサンプルプログラムです。)

 

'
'******** 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 
'

 

●実行前~実行後 ※プログラムの実行後、セル(B2)にプログラム開始時刻(日付・時刻)が表示されて、セル(B4)にプログラム終了時刻(日付・時刻)が表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Date関数のサンプル  (現在の日付)

 

●プログラム説明 (Date関数)
下記のサンプルプログラムは、B列に本日から6日後の日付を順番に表示します。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、B列にDate関数で取得した今日の日付から+1ずつ加算して、表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Time関数のサンプル  (現在の時刻)

 

●プログラム説明 (Time関数)
下記のサンプルプログラムは、現在の時刻から6時間後の時刻を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、B列に現在の時刻から6時間後の時刻を順番に表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Hour関数のサンプル  (時刻)

 

●プログラム説明 (Hour関数)
下記のサンプルプログラムは、現在の時刻から6時間前までの時刻(時)を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、B列に現在の時刻から6時間前までの時刻(時)のみを表示しました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA Minute関数のサンプル  (時刻)

 

●プログラム説明 (Minute関数)
下記のサンプルプログラムは、現在の時刻から10分単位で50分後までの時刻(分)を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、現在の時刻から10単位で50分後までの時刻(分)をB列に表示します。
(画面クリックして拡大)

 

 

EXCEL VBA Second関数のサンプル  (時刻)

 

●プログラム説明 (Second関数)
下記のサンプルプログラムは、現在の時刻から10分単位で50分後までの時刻(分)を表示するサンプルプログラムです。

 

'
'******** 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
'

 

 

●実行前~実行後 ※プログラム実行後、現在の時刻から5秒単位で25秒後までの時刻(秒)をB列に表示します。
(画面クリックして拡大)

 

 

 

EXCEL VBA Year関数のサンプル  (日付)

 

●プログラム説明 (Year関数)
下記のサンプルプログラムは、現在の日付から1年単位で5年後までの年を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、現在の日付から1年単位で5年後までの日付(年)をB列に表示します。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA Month関数のサンプル  (日付)

 

●プログラム説明 (Month関数)
下記のサンプルプログラムは、現在の日付から1ヵ月単位で5ヶ月後までの月を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、現在の日付から1ヵ月単位で5ヶ月後までの日付(月)をB列に表示します。
(画面クリックして拡大)

 

 

EXCEL VBA Day関数のサンプル  (日付)

 

●プログラム説明 (Day関数)
下記のサンプルプログラムは、現在の日付から1日単位で5日後までの日を表示するサンプルプログラムです。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、現在の日付から1日単位で5日後までの日付(日)をB列に表示します。
(画面クリックして拡大)

 

EXCEL VBA DateSerial関数のサンプル  (数値から日付を作成)

 

●プログラム説明 (DateSerial関数)
下記のサンプルプログラムは、数値から日付を作成するサンプルプログラムです。A列に年、B列に月、C列に日が登録されています。これをD列に日付を作成して表示させます。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、A列(年)・B列(月)・C列(日)のセル数値データを元に、D列に日付を表示しました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA TimeSerial関数のサンプル  (数値から時刻を作成)

 

 

●プログラム説明 (TimeSerial関数)
下記のサンプルプログラムは、数値から時刻を作成するサンプルプログラムです。A列に時、B列に分、C列に秒が登録されています。これをD列に時刻を作成して表示させます。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラム実行後、A列(時)・B列(分)・C列(秒)のセル数値データを元に、D列に時刻を表示しました。
(画面クリックして拡大)

 

 

EXCEL VBA DateValue関数のサンプル  (日付の文字列からシリアル値の日付を作成)

 

 

●プログラム説明 (DateValue関数)
下記のサンプルプログラムは、DateValue関数を使ったサンプルプログラムです。文字列で作成した日付からシリアル値の日付(EXCELで認識)に変換します。

 

'
'******** 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
'

 

●実行前~実行後 ※プログラムの実行後、A列に登録されている文字列の日付をB列にシリアル値として変換された日付が表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA TimeValue(関数のサンプル  (文字列の時刻からシリアル値の時刻を作成)

 

●プログラム説明  (TimeValue(関数)
下記のサンプルプログラムは、TimeValue(関数)を使ったサンプルプログラムです。文字列で作成した時刻をシリアル値の時刻(EXCELで認識)に変換します。

 

'
'******** 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
'

 

●実行前~実行後 プログラムの実行後、A列に登録されている文字列の時刻をB列にシリアル値として変換された時刻が表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Weekday(関数のサンプル  (日付対する曜日のコードを返します)

 

●プログラム説明(Weekday(日付))

下記のサンプルプログラムは、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
'

 

●実行前~実行後 ※プログラム実行後、A列の日付を元に、そのA列の日付の曜日をB列に表示されました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA WeekdayName関数のサンプル  (曜日コードから曜日「文字列」を返します

 

 

●プログラム説明 (WeekdayName(曜日コード,曜日名の表示,「最初の曜日」)

下記のサンプルプログラムは、曜日コードから曜日名を表示するサンプルプログラムです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
'

 

●実行前~実行後 ※プログラム実行後、A列の日付からWeekDay関数で曜日番号を取得して、B列にWeekdayName関数を使って曜日を表示されました。
(画面クリックして拡大)

 

 

EXCEL VBA Timer関数のサンプル  (午前0時からの経過秒数を返します)

 

●プログラム説明 (Timer)

下記のサンプルプログラムは、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
'

 

●実行前~実行後 ※プログラム実行後、ダミー処理の開始時間と終了時間を計測して、経過時間を計算する事が出来ました。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA