
taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
さて、プログラムを作成しているときに日付操作が必要になるときはよくありますよね(・・?
そんな時に現在の日付を取得するのはごく簡単ですよね?
ですがふと先月末/今月末/来月末を取得したい時があります。VBAの初心者や入門者の方では関数をそのまま使っても取得ができないので困ってしまう事があるのではないでしょうか?
そんなことにならないように今回はVBAで今月末・来月末を取得する方法をご紹介します。
今回使うDateserial関数についてはこちら【VBA 【Dateserial関数】】
VBAで先月末/今月末/来月末を取得する方法
では 先月末/今月末/来月末を取得するにはどうしたらいいのか?
月末を取得するにはDateSerial関数で紹介した来月初めを取得した方法の応用です。
実際にコードにしてみます。
Sub Sample() ’先月末 MsgBox DateSerial(Year(Date), Month(Date), 0) '今月末 MsgBox DateSerial(Year(Date), Month(Date) + 1, 0) '来月末 MsgBox DateSerial(Year(Date), Month(Date) + 2, 0) End Sub
実行結果ではそれぞれ先月末/今月末/来月末が取得できたのではないでしょうか?
下記にてコードの解説をしていきます!
サンプルコードの解説
まず上記のコードを見てVBAを始めたばかりの方は
DateSerial(Year(Date), Month(Date), 0)
これがなぜ先月末になるのか?と思ったのではないでしょうか?(‘ω’)
Dayの部分を0にしたのだから1日を返すんじゃないのか?と。
これはDateSerial関数の特性にあります。DateSerial関数のDayは1~31の数値を日付に変換します。ですが他の数値が使えない訳ではありません。
前回の記事で【Month(月)の部分で13を入力すると翌年の一月に変換されて返される】という事を紹介しました。それと同じことがDayでも行われます。
日付は【1日から】始まって28日や31日まででその月が終了します。
1日から始まるので【0と記入】した場合は【1日の前の日】にあたる前月末と判断されるという事になるのです。
なので今月末を取得するには【来月1日の一日前】というコードを記述する必要があるのです。
'今月末 ↓来月 ↓一日前 MsgBox DateSerial(Year(Date), Month(Date) + 1, 0)
来月末も同様です。
【再来月1日の一日前】というコードを書きます。
'来月末 MsgBox DateSerial(Year(Date), Month(Date) + 2, 0)
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す