- ファイル名に今日の日付の情報を入れたい
- 先月分のデータを集計するために、先月が何月かの情報が必要
など、VBAを書いているとちょくちょく日付の情報を取得する必要が出てくる時があります。
そこで今回は
- 今日の日付の取得の仕方
- 日付から年月日を取得する方法
- 月と日の桁数を2桁に統一する方法
の3つについて解説していきます。
今日の日付の取得の仕方
今日の日付(正確に言うとパソコンに設定されている日付)を取得するにはDateを使用します。
例えば、セルA1に今日の日付を表示したい場合は
Sub Sample1()
Range("A1") = Date
End Sub
と書くと
今日の日付が表示できます。
ただDateと書くだけなので簡単ですね^^
日付から年月日を取得する方法
Dateだけだと年月日すべてが表示されますので、ここから年・月・日それぞれの情報を取得していきましょう。
やり方はYear・Month・Dayを付けるだけです。
1行目に年・月・日それぞれを表示するコードがこちら。
Sub Sample2()
Range("A1") = Year(Date)
Range("B1") = Month(Date)
Range("C1") = Day(Date)
End Sub
実行結果はこうなります。
月と日の桁数を2桁に統一する方法
最後に、桁数を2桁に統一する方法もご紹介します。
文章で見ると「なんのこと?」って感じですが^^;
例えばファイル名に実行時の年月日を入れたい場合、ファイル名は「20230125_実行ファイル」みたいな感じにする方多いのではないでしょうか?
「2023125_実行ファイル」ではなく、
「20230125_実行ファイル」です。
なぜ1月を1ではなく01にするかというと、桁数を2桁に統一しないと、ファイル名順で並べたときに順番がおかしくなるからですね。
というわけで、月や日が1桁だった場合は2桁に変換したいということが往々にしてあります。
やり方は簡単で、「10より少なかったら頭に0を足す」だけです。
実際のコードがこちらになります。
Sub Sample3()
'宣言はStringで。Longなど、数字を扱うものにすると頭に"0"が付けられません
Dim TodayDay As String
Dim TodayMonth As String
Dim TodayYear As String
'年月日をそれぞれ取得
TodayYear = Year(Date)
TodayMonth = Month(Date)
TodayDay = Day(Date)
'1桁だったら2桁に変更
If TodayMonth < 10 Then
TodayMonth = "0" & TodayMonth
End If
If TodayDay < 10 Then
TodayDay = "0" & TodayDay
End If
'A1セルに 実行日 + "_実行ファイル" と表示
Range("A1") = TodayYear & TodayMonth & TodayDay & "_実行ファイル"
End Sub
実行結果はこうなります。
コードは「10より少なかったら頭に0を足す」だけなのでそれほど難しくは無いのですが、宣言のところでLongなど数字を扱うものではなく、Stringにしているところがミソです。
Longにすると、頭に0を付けても勝手に消されます。数字が”01″になるのはおかしい、と判断されるからですね。
まとめ
今回は今日の日付の取得について解説しました。
おまけでご紹介した2桁する方法は個人的にはよく使うので、参考になれば嬉しいです。
お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡ください。
お問い合わせフォーム
VBAの作成であれば3万円ほどから、自分で使うVBAの書き方で詰まっている方のお手伝いであれば5,000円ほどから承ります。
コメント