VBA100本ノック 7本目:日付データの扱い
こちらで公開されている、100本ノックに挑戦。
www.excel-ubara.com
素晴らしい教材を公開いただき、ありがとうございます。
上記リンク先から、問題文を転載。
「何をもって日付とみなすか」が、人によって解釈が変わりそう。
今回は、IsDate関数で日付とみなされるかどうかで判別するとしよう。
当月末の求め方は、色々と方法がありそう。そこで、下記の作戦で求める
ことにした。
- IsDate関数で判別。
- 日付とみなされたものの、翌月1日を求める(EDate関数など)
- 翌月1日から一日前(つまり当月最終日)を求める。
作成したものがこちら。
Sub VBA_100Knock_007() ' 日付の範囲。 Dim DateRange As Range Set DateRange = Range("A2:A10") Dim r As Range For Each r In DateRange If IsDate(r.Value) Then With r.Offset(, 1) ' まず、当月1日にする。 .Value = Format(r, "yyyy/mm/1") ' 次いで、翌月1日から1日引いて、当月末にする。 .Value = Format(WorksheetFunction.EDate(.Value, 1) - 1, "mmdd") .NumberFormatLocal = "0000" End With End If Next End Sub
解答を実行した結果がこちら。
思った以上に、多くの書き方を日付と認識してくれることを知って、
改めて勉強になった。
※冒頭リンク先の解答例および解説も、ぜひご一読ください。
参考まで。