仕事で未だに使うことのあるを改めて体系的に学びたく
を読んでいく。
目次
4. 「文字列」と「日付」と「時間」の扱い方
4.2 日付や時間の扱い方
前節で言及したように、日付シリアルを扱うには#(シャープ)で挟む。の日付シリアル値は、
を
として以降、1日が経過するごとに
を加算する。このように日付データは、内部でシリアル値という仕組みで管理されている。
4.2.1 日付に変換する関数
文字列や年月日等を表す文字列や数値をシリアル値に変換できる関数が用意されている。
関数 |
説明 |
---|---|
日付形式の文字列を日付シリアル値に変換する | |
時刻形式の文字列を日付シリアル値に変換する | |
引数に渡した「年」「月」「日」のシリアル値に変換する | |
引数に渡した「時」「分」「秒」のシリアル値に変換する |
' DateValue(日付形式の文字列) DateValue("2018年5月1日") ' TimeValue(時刻形式の文字列) TimeValue("12時30分") ' DateSerial(年,月,日) DateSerial(2018,10,5) ' TimeSerial(時,分,秒) TimeSerial(14,25,30)
4.2.2 日付の繰り越し
関数および
関数において、各引数は自動的に繰り越しを行なう。
DateSerial(2018, 12 + 5, 1) ' 結果は「2019/05/01」の日付を表すシリアル値
4.2.3 日付の特定要素を取り出す関数
シリアル値から「年」「月」「日」の部分を取り出す関数も用意されている。
関数 |
説明 |
---|---|
「年」を取り出す | |
「月」を取り出す | |
「日」を取り出す | |
「時」を取り出す | |
「分」を取り出す | |
「秒」を取り出す |
Year(#2018/05/10#) ' 2018を返す Year("2018/05/10") '文字列でも正しく2018を返す
4.2.4 曜日を取り出す関数
関数で曜日の情報を取り出す。日曜が
で以降、
を月曜日、火曜日…とし、
が土曜日に相当する*1。また曜日の文字列が欲しければ
関数を用いる。
' WeekdayName(曜日を表す数値[,曜日を省略するか][,最初の曜日]) WeekdayName(5) '木曜日
4.2.5 日付を使った計算を行う計算
関数および
関数を用いると、日付を用いた計算をできる。
関数 |
説明 |
---|---|
特定の日付から、指定日時経過後の日付を返す | |
2つの日付の差分を返す |
' DateAdd(要素の指定,加算値, 基準シリアル値) DateAdd("d", 15, #2018/01/01#) ' 2018/1/1から15日後 ' DateDiff(要素の指定,日付1,日付2) DateDiff("d",#2018/01/01#,#2018/03/01#) '「59」日
関数で第1引数に用いる要素
文字列 |
対象 |
---|---|
年 | |
月 | |
日 | |
時 | |
分 | |
秒 |
4.2.5 月末日を求める計算
月末日を得るには、次月の1日から1日前に戻るのが定番である。
Dim tmpDate As Date ' 基準日の設定 tmpDate = #12/10/2018# ' 当月の月末日 Debug.Print "当月末:", DateSeria(Year(tmpDate), _ Month(tmpDate) + 1,1) -1 ' 2か月後の月末日 Debug.Print "2か月後:", DateSeria(Year(tmpDate), _ Month(tmpDate) + 3,1) -1
4.2.6 マクロ実行時の日付や時間
マクロ実行時の時間や日付を求めるには以下の関数を用いる。
関数 |
説明 |
---|---|
現在の日時を取得する | |
現在の日付を取得する | |
現在の時刻を取得する |
*1:第2引数に月曜日を表す数値を与えることもできる。