Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13641 / 13646 ツリー ←次へ | 前へ→

【4478】一ヶ月 yoppy 03/3/22(土) 10:42 質問
【4479】Re:一ヶ月後の日付 かみちゃん 03/3/22(土) 12:34 回答
【4480】Re:一ヶ月後の日付 yoppy 03/3/22(土) 12:54 お礼

【4478】一ヶ月
質問  yoppy  - 03/3/22(土) 10:42 -

引用なし
パスワード
   本日の日付と一ヵ月後の日付をそれぞれのTextboxに返したいと思い

Dim myyear As Integer
Dim mymonth As Integer
Dim myday As Integer

 myyear = Year(Date)
 mymonth = Month(Date)
 myday = Day(Date)
  With UserForm1
   .TextBox1.Value = myyear - 1988
   .TextBox2.Value = mymonth + 1
   .TextBox3.Value = myday - 1
   .TextBox4.Value = myyear - 1988
   .TextBox5.Value = mymonth
   .TextBox6.Value = myday
  End With

としたところ、毎月1日には当然正しく表示されなく、12月には年を越してくれません。
どのように処理したらよいでしょうか?
また、うるう年の2月にはどうしたらよいのでしょうか?
どなたか教えてください。

【4479】Re:一ヶ月後の日付
回答  かみちゃん  - 03/3/22(土) 12:34 -

引用なし
パスワード
   ▼yoppy さん:
>本日の日付と一ヵ月後の日付をそれぞれのTextboxに返したいと思い

たとえば、今日(3月22日)下記のコードを実行すると、2003/3/22と
2003/4/21が返されますが、一ヶ月後の日付4/22ではなくていいので
しょうか?

とりあえず、下記のコードとおり「一ヶ月後の前日」を返すには、
次のようにします。
ポイントは、DateAdd関数を使用します。

>   .TextBox1.Value = myyear - 1988
>   .TextBox2.Value = mymonth + 1
>   .TextBox3.Value = myday - 1

   .TextBox1.Value = Year(DateAdd("d", -1, DateAdd("m", 1, Date))) - 1988
   .TextBox2.Value = Month(Year(DateAdd("d", -1, DateAdd("m", 1, Date))))
   .TextBox3.Value = Day(Year(DateAdd("d", -1, DateAdd("m", 1, Date))))

>また、うるう年の2月にはどうしたらよいのでしょうか?

DateAdd関数を使えば何も心配することはありません。

ただ私は、次のようにしたほうがいいと思いますので、ご参考までに・・・

 Dim mydate As Date
 Dim mydate2 As Date
 mydate = Date ' ← この時点のシステム日付を1度のみ取得します。
 mydate2 = DateAdd("d", -1, DateAdd("m", 1, mydate))

 With UserForm1
  .TextBox1.Value = Year(mydate2) - 1988
  .TextBox2.Value = Month(mydate2)
  .TextBox3.Value = Day(mydate2)
  .TextBox4.Value = Year(mydate) - 1988
  .TextBox5.Value = Month(mydate)
  .TextBox6.Value = Day(mydate)
 End With

【4480】Re:一ヶ月後の日付
お礼  yoppy  - 03/3/22(土) 12:54 -

引用なし
パスワード
   ▼かみちゃん さん:
ありがとうございます。
参考までにのほうを利用させていただきます。
大変助かりました!

13641 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free