エクセルマニア

VBA 日付の操作

TOP > VBA・マクロ >  日付に関するVBA関数
このエントリーをはてなブックマークに追加

日付に関するVBA関数


システムの日付が返されます。

Range("A1").Value = Date

実行結果

A
12012/8/31
日付の表示形式はOSの設定によります。 「コントロールパネル」⇒「地域と言語」 から設定して下さい。

日付から「年」を返す。

Range("B1").Value = Year(Date)

実行結果

A
12017

日付から「月」を返す。

Range("B1").Value = Month(Date)

実行結果

A
18

指定した日付から「日」を返します。

Range("B1").Value = Day(Date)

実行結果

A
131

DateAdd関数は日時を加減算する関数です。

構文:DateAdd(interval, number, date)

interval
計算単位を指定。
number:加減算する正負の値を指定。
date:元となる日時を指定。

'今日から1年後の日時
Range("A1").Value = DateAdd("yyyy", 1, Now)
'明日の日時
Range("A2").Value = DateAdd("d", 1, Now)
'昨日の日時
Range("A3").Value = DateAdd("d", -1, Now)
'2012年2月1日から1ヶ月後の日時
Range("A4").Value = DateAdd("m", 1, "2011/10/1")
'2012年2月1日から20日後の日時
Range("A5").Value = DateAdd("d", 20, "2011/10/1")

実行結果

A
12013/3/9
22012/3/10
32012/3/8
42011/11/1
52011/10/21
2008/1/31の1ヵ月後は2009/2/29、2月の月末が返ります。

2つの指定した日付の時間間隔の値を返します。

構文:DateDiff(interval, date_from, date_to[, firstdayofweek[, firstweekofyear]])

interval計算単位を指定。
date_from:開始日を指定。
date_to:終了日を指定。
firstdayofweek:省略可能(規定値:vbSunday)。週の始まりの曜日を表す定数を指定。
firstweekofyear 省略可能(規定値:vbFirstJan1)。年度の第1週目を表す定数を指定。

Range("A1").Value = DateDiff("m", "2012/7/1", "2012/8/31")
Range("A2").Value = DateDiff("d", "2012/8/1", "2012/8/31")
Range("A3").Value = DateDiff("yyyy", "2010/8/31", "2012/8/31")

実行結果

A
11
230
32

曜日を数値で返します。

構文:Weekday(date, [firstdayofweek])

date:日付を表す数式または文字列式を指定。
firstdayofweek : 省略可能(規定値:vbSunday)。基準となる曜日を指定します。

Range("A1").Value = Weekday("2012/8/31")
Range("A2").Value = Weekday("2012/8/31", vbSunday)
Range("A3").Value = Weekday("2012/8/31", vbMonday)

実行結果

標準では日曜日が0になります。第二引数を vbMondayに指定すると月曜日が0になります。
A
16
26
35

指定された曜日を文字列で返します。

構文:WeekdayName(weekday, abbreviate, firstdayofweek)

weekday:曜日を示す数値を指定。
abbreviate:省略可能(規定値:False)。~"曜日"を省略して表示するかどうか?
firstdayofweek:省略可能(規定値:vbSunday)。曜日の最初の日を示す定数を指定。

Range("A1").Value = WeekdayName(Weekday("2012/8/31"))
Range("A2").Value = WeekdayName(Weekday("2012/8/31", vbSunday), False, vbSunday)
Range("A3").Value = WeekdayName(Weekday("2012/8/31", vbSunday), True, vbSunday)

実行結果

A
1金曜日
2金曜日
3

日付を返す関数。

構文:DateValue(date)


Range("A1").Value = DateValue("平成24年8月31日")
Range("A2").Value = DateValue("H24年8月31日")
Range("A3").Value = DateValue("Aug 31, 2012")

実行結果

A
12012/8/31
12012/8/31
12012/8/31

年、月、日を指定し、その日付を返す関数。

構文:DateSerial(year, month, day)

year:年を指定。
month:月を指定。
day:日を指定。

Range("C1").Value = DateSerial(2011, 12, 31)

実行結果

A
12011/12/31

日付の指定した部分の値を返す関数。

構文:DatePart(interval, date[,firstdayofweek[, firstweekofyear]])

interval計算単位を指定。
firstdayofweek:省略可能(規定値:vbSunday)。週の始まりの曜日を表す定数を指定。
firstweekofyear:省略可能(規定値:vbFirstJan1)。年度の第1週を表す定数を指定。

'今日は何月か?
Range("A1").Value = DatePart("m", Date)
'今日は何日か?
Range("A2").Value = DatePart("d", Date)
'今日は第何半期か?
Range("A3").Value = DatePart("q", Date)
'今日は年始からの何週目か?
Range("A4").Value = DatePart("ww", Date)

実行結果

A
13
29
31
410
注:実行したのはPCのカレンダーが2008年11月2日です。


このエントリーをはてなブックマークに追加