VBAで月末の日付を数値として取得する
2020/11/29 更新
ファイル名が日付になっている場合にVBAで一括処理させたくなった場合、月末の日付ぐらいは自動で対処してほしいので、VBAで月末日を扱いやすいように数値として取得する方法をメモしておく。
数値として月末日を取得する方法
VBAでの月末日の扱いについて
VBAで月末日を取得する場合、DateSerial関数を利用します。
Sub Macro1()
DateSerial(year, month, day)
' year: 年を表す 100 ~ 9999 の範囲の数値または任意の数式を指定します。
' month: 任意の数式を指定します。
' day: 任意の数式を指定します。
End Sub
DateSerial関数はある日付に対して相対的な値を指定できるため、このときdayに“0”を代入することでその月の前日の日付がわかります。
Sub Macro2()
date = DateSerial(year, month + 1, 0)
End Sub
型変換して数値として取得する
このままでは月末日だけを数値として取得できないため、変数から文字列を抜き出した後型変換してint型とします。
Sub Macro3()
dEnd = DateSerial(year, month + 1, 0)
dEnd = CStr(dEnd)
dEnd = Right(dEnd, 2)
dEnd = CInt(dEnd)
End Sub
DateSerial関数で翌月の前日(=当該月の最終日)の日付を取得後、Right関数で右から2文字(=日の部分)を取得、CIntでInt型に型変換します。