更新日:、 作成日:
VBA 日付を入力する
はじめに
Excel VBA マクロの日付 (Date) を入力や取得する方法を紹介します。
#月/日/年 時:分:秒# のようにして、日付を入力できます。
年/月/日 時:分:秒 形式の文字列を日付型 (Date) に代入して、日付に変換できます。
「Date 関数」、「Now 関数」、「Time 関数」から、今日の日付、日時、時刻を取得できます。
日付型について
日付型は日付と時刻の両方を扱えます。
型名 | データ型 | 値の例や範囲 |
Date | 日付型 | 西暦100年1月1日 ~ 西暦9999年12月31日 の日付と時刻 |
日付や時刻を入力する
#月/日/年 時:分:秒# のように入力します。# で囲むと日付になります。
Dim 日付 As Date
日付 = #3/30/2013# ' 月/日/年
Debug.Print(日付) ' 2013/03/30
Dim 時刻 As Date
時刻 = #1:02:03 AM# ' 時:分:秒
Debug.Print(時刻) ' 1:02:03
Dim 日付と時刻 As Date
日付と時刻 = #3/30/2013 1:02:03 AM# ' 月/日/年 時:分:秒
Debug.Print(日付と時刻) ' 2013/03/30 1:02:03
#24:00:00# のような、24 時間を超える時間は入力できません。下記の「数値から入力」から「TimeSerial 関数」を使用して入力できます。
年月日の順になっていないのでわかりづらいです。
文字列から入力
文字列で 年/月/日 時:分:秒 形式の値を日付型 (Date) に代入すると、自動で日付型に変換できます。
Dim 日付 As Date
日付 = "2013/3/30"
Debug.Print(日付) ' 2013/03/30
Dim 時刻 As Date
時刻 = "1:2:3"
Debug.Print(時刻) ' 1:02:03
Dim 日付と時刻 As Date
日付と時刻 = "2013/3/30 1:2:3"
Debug.Print(日付と時刻) ' 2013/03/30 1:02:03
「CDate 関数」を使用して、文字列を日付に変換できます。
Dim 日付 As Date
日付 = CDate("2013/3/30")
Debug.Print(日付) ' 2013/03/30
Dim 時刻 As Date
時刻 = CDate("1:2:3")
Debug.Print(時刻) ' 1:02:03
Dim 日付と時刻 As Date
日付と時刻 = CDate("2013/3/30 1:2:3")
Debug.Print(日付と時刻) ' 2013/03/30 1:02:03
数値から入力
「DateSerial 関数」を使用して、年月日から日付を入力できます。
Dim d As Date
d = DateSerial(2000, 12, 31)
Debug.Print(d) ' 2000/12/31
「TimeSerial 関数」を使用して、時分秒から時刻を入力できます。
Dim d As Date
d = TimeSerial(1, 2, 3)
Debug.Print(d) ' 1:02:03
d = TimeSerial(24, 2, 3)
Debug.Print(d) ' 1899/12/31 0:02:03
Dim d As Date
d = DateSerial(2000, 12, 31) + TimeSerial(1, 2, 3)
Debug.Print(d) ' 2000/12/31 1:02:03
スポンサーリンク
日付や時刻を取得する
「Year 関数、Month 関数、Day 関数」を使用して、年月日を取得できます。
「Hour 関数、Minute 関数、Second 関数」を使用して、時分秒を取得できます。
Dim d As Date
d = "2013/1/2 3:4:5"
Debug.Print(Year(d)) ' 2013
Debug.Print(Month(d)) ' 1
Debug.Print(Day(d)) ' 2
Debug.Print(Hour(d)) ' 3
Debug.Print(Minute(d)) ' 4
Debug.Print(Second(d)) ' 5
「Date 関数」、「Now 関数」、「Time 関数」を使用して、今日の日付、日時、時刻を取得できます。
Debug.Print(Date) ' 2013/01/15
Debug.Print(Now) ' 2013/01/15 9:23:45
Debug.Print(Time) ' 9:23:45
「DateValue 関数」、「TimeValue 関数」を使用して、日時から日付や時刻を取得できます。
Dim d As Date
d = "2013/1/2 3:4:5"
Debug.Print(DateValue(d)) ' 2013/01/02
Debug.Print(TimeValue(d)) ' 3:04:05
曜日
「Weekday 関数」、「WeekdayName 関数」を使用して、日付の曜日や曜日の名前を取得できます。
Dim d As Date
d = "2013/1/6"
Debug.Print(Weekday(d)) ' 1
Debug.Print(WeekdayName(Weekday(d))) ' 日曜日
d = "2013/1/12"
Debug.Print(Weekday(d)) ' 7
Debug.Print(WeekdayName(Weekday(d))) ' 土曜日
1 日や月末
Excel の「日付を自動で入力する」の方法で、1 日や月末など好きな日付を取得できます。
Dim 対象 As Date
対象 = "2013/1/15"
Dim d As Date
' 1 日
d = DateSerial(Year(対象), Month(対象), 1)
Debug.Print(d) ' 2013/01/01
' 月末
d = WorksheetFunction.EoMonth(対象, 0)
Debug.Print(d) ' 2013/01/31
日付の期間
「DateDiff 関数」を使用して、2 つの日付の期間を取得できます。
引数には (単位, 日時1, 日時2) を指定します。単位には次のものがあります。
- yyyy:年
- m:月
- d:日
- h:時
- n:分
- s:秒
- w:平日
- ww:週
- q:四半期
Dim i As Integer
i = DateDiff("yyyy", CDate("2013/1/1"), CDate("2014/12/31")) ' 年
Debug.Print(i) ' 1
i = DateDiff("d", CDate("2013/1/1"), CDate("2013/1/7")) ' 日
Debug.Print(i) ' 6
i = DateDiff("h", CDate("2013/1/1"), CDate("2013/1/1 1:00:00")) ' 時
Debug.Print(i) ' 1
スポンサーリンク