Excel VBA質問箱 IV

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

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


8430 / 13644 ツリー ←次へ | 前へ→

【33323】一月前を表示 mickeypapa 06/1/9(月) 13:35 質問[未読]
【33324】Re:一月前を表示 inoue 06/1/9(月) 13:44 発言[未読]
【33325】Re:一月前を表示 inoue 06/1/9(月) 13:45 発言[未読]
【33327】Re:一月前を表示 mickeypapa 06/1/9(月) 13:50 お礼[未読]
【33326】Re:一月前を表示 [名前なし] 06/1/9(月) 13:47 回答[未読]
【33328】Re:一月前を表示 mickeypapa 06/1/9(月) 13:59 お礼[未読]
【33329】Re:一月前を表示 かみちゃん 06/1/9(月) 14:03 発言[未読]
【33330】Re:一月前を表示 [名前なし] 06/1/9(月) 14:19 発言[未読]
【33357】Re:一月前を表示 mickeypapa 06/1/9(月) 17:33 お礼[未読]

【33323】一月前を表示
質問  mickeypapa E-MAIL  - 06/1/9(月) 13:35 -

引用なし
パスワード
   ユーザーフォーム起動時に、現在月より一月前を表示させるのに
cboMonth.Text = Month(Date) - 1 & "月"
と書いていましたが、今月になって"0月"と表示され気付き
cboMonth.Text = Format(DateAdd("M", -1, DateValue(Year(Date) & "年" _
          & Month(Date) & "月" & Day(Date) & "日")), "M" & "月")
と書いて何とか表示されましたが、もう少し簡単に書けそうな感じがするですが
よろしくご教授下さい。

【33324】Re:一月前を表示
発言  inoue E-MAILWEB  - 06/1/9(月) 13:44 -

引用なし
パスワード
   cboMonth.Text = Format(DateAdd("M", -1, Date), "yyyy年m月")
これだけで良いのではないでしょうか。

【33325】Re:一月前を表示
発言  inoue E-MAILWEB  - 06/1/9(月) 13:45 -

引用なし
パスワード
   月だけで良いのでしょうか?それなら、
cboMonth.Text = Format(DateAdd("M", -1, Date), "m月")

【33326】Re:一月前を表示
回答  [名前なし]  - 06/1/9(月) 13:47 -

引用なし
パスワード
   ▼mickeypapa さん:
月だけでいいなら、
cboMonth.Text = Month(Date - Day(Date)) & "月"
でいいのでは?

【33327】Re:一月前を表示
お礼  mickeypapa E-MAIL  - 06/1/9(月) 13:50 -

引用なし
パスワード
   ▼inoue さん:
>月だけで良いのでしょうか?それなら、
>cboMonth.Text = Format(DateAdd("M", -1, Date), "m月")
ありがとう御座います。バッチリでした。

【33328】Re:一月前を表示
お礼  mickeypapa E-MAIL  - 06/1/9(月) 13:59 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼mickeypapa さん:
>月だけでいいなら、
>cboMonth.Text = Month(Date - Day(Date)) & "月"
>でいいのでは?
ありがとう御座います。こちらもバッチリでした。
Date - Day(Date)この部分がイマイチ理解できてません。
無い知恵をふりしぼってみます。

【33329】Re:一月前を表示
発言  かみちゃん  - 06/1/9(月) 14:03 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>Date - Day(Date)この部分がイマイチ理解できてません。

以下のようなサンプルコードを確認してみてください。
1月0日とすると・・・
Sub Test()
 MsgBox DateSerial(2006, 1, 1)
 MsgBox DateSerial(2006, 1, 0)
End Sub
この日付を0とすることを利用しているわけです。

【33330】Re:一月前を表示
発言  [名前なし]  - 06/1/9(月) 14:19 -

引用なし
パスワード
   ▼かみちゃん さん:
>1月0日とすると・・・
>Sub Test()
> MsgBox DateSerial(2006, 1, 1)
> MsgBox DateSerial(2006, 1, 0)
>End Sub
>この日付を0とすることを利用しているわけです。

かみちゃんさんの回答のとおりですが、さらに補足をしますと、
1を引くと、1日前になります。
なので、Day(Date)日分を引いてやればDay(Date)日前になるわけです。
1/9の9日前の日付は、12/31(前月最終日)ですよね。

Sub Macro1()
  MsgBox Date       '今日の日付
  MsgBox Date - 1     '1日前
  MsgBox Date - Day(Date) 'Day(Date)日前→前月最終日
End Sub

【33357】Re:一月前を表示
お礼  mickeypapa E-MAIL  - 06/1/9(月) 17:33 -

引用なし
パスワード
   ▼[名前なし] さん:
>▼かみちゃん さん:
>>1月0日とすると・・・
>>Sub Test()
>> MsgBox DateSerial(2006, 1, 1)
>> MsgBox DateSerial(2006, 1, 0)
>>End Sub
>>この日付を0とすることを利用しているわけです。
>
>かみちゃんさんの回答のとおりですが、さらに補足をしますと、
>1を引くと、1日前になります。
>なので、Day(Date)日分を引いてやればDay(Date)日前になるわけです。
>1/9の9日前の日付は、12/31(前月最終日)ですよね。
>
>Sub Macro1()
>  MsgBox Date       '今日の日付
>  MsgBox Date - 1     '1日前
>  MsgBox Date - Day(Date) 'Day(Date)日前→前月最終日
>End Sub
解説ありがとう御座います。私の頭でも理解できました。
相変わらずいろいろな手法があるなと、しきりに感心しています。

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