アプリ版:「スタンプのみでお礼する」機能のリリースについて

 プログラム初心者です。VBAなのですが、エクセルから取得してきたある月の日数分だけの日付をコンボボックスに追加したいのですが、どうしたらいいでしょうか?
 
 その月の末日をmatsuとしていろいろ考えてみましたが、どうもわかりませんでした。
matsu=Day(DateSerial(年,月,1)  ←年と月は可変です。
これを工夫してある月の末日を取得したと考えています。これを

For i = 1 To matsu
cmbNyu.AddItem (i & "日")
cmbTai.AddItem (i & "日")
Next i
でコンボボックスに追加・・・とうゆう予定なのですが・・・?この方法じゃなくてもいいので何か方法がありましたらどんなことでもいいのでお力をお貸しください。よろしくお願いします。 

A 回答 (3件)

その月の月末日を取得するのですよね。



エクセルから取得する月を基に

 DateAdd("d",-1,(DateAdd("m",+1,Format$(月,"mm"))))

月から取得する月数の翌月を求めDateAddとFormat$で翌月を求めれば日付は1が帰ってくるはずですからその日付から1日引いた日付がその月の月末日。

これではどうでしょうか。
    • good
    • 0
この回答へのお礼

 有難うございます。DateAdd関数とゆうものの使い方がわからないので、それを調べてからすこし考えてみたいと思います。回答をお待ちしている間、私なりに考えてみたのですが、
matsu = day(DateSerial(year(now),month(now)+1,0))
こんな感じで・・・(^_^;)

 社内システムの出勤管理システムを任されたものの、大学も文系のため全くプログラム初心者で今年の4月までプログラムのプも知らなかったもので・・・
 O_cyanさんの考えていただいたコードを使わしていただこうかと思います。
 また、何かありましたらよろしくお願いいたします。

お礼日時:2002/06/24 13:13

ある月の翌月の0日がある月の末日になります。


(DateSerialの月に13や日に0をセットできます。)

Sub matuCalc()
  Dim 年 As Integer
  Dim 月 As Integer
  Dim matsu As Integer

  年 = Year(Now())
  月 = Month(Now())

  matsu = Day(DateSerial(年, 月 + 1, 0))

  MsgBox matsu
End Sub
    • good
    • 0
この回答へのお礼

有難うございました。私もその方法を思いつき、試してみました。できそうだたので、これでいきたいと思います。またお世話になるかと思いますのでよろしくお願いします。

お礼日時:2002/06/24 21:36

>お礼のmatsu = day(DateSerial(year(now),month(now)+1,0))のところが正しいのかなと気になって、私もやって見ました。


下記がご参考になれば。
Sub test01()
' MsgBox Now()
' MsgBox Year(Now())
' m=Month(Now()) + 1
' MsgBox m
' MsgBox DateSerial(2002, 7, 1)
m = Month(Now())
' m = 12
If m = 12 Then
m = 1
y = Year(Now()) + 1
Else
m = Month(Now()) + 1
y = Year(Now())
End If
a = DateSerial(y, m, 1)
MsgBox a
MsgBox DateValue(a - 1) '月末日
MsgBox Day(DateValue(a - 1))
End Sub
注釈の’を適当に外して確認してください。
    • good
    • 0
この回答へのお礼

有難うございます。ですが、初心者のため注釈の'のどれを外せばいいのかわからなくてメッセージボックスが出てきませんでした。すいません・・・
matsu = day(DateSerial(year(now),month(now)+1,0))
でなんとかできているような感じでしたので、理解できたこれでいこうかなと思うのですが・・・間違ってますか?間違ってたらこのシステムを納めて間もなく社員からいろいろ言われるんでしょうね(^_^;)
バグ処理に追われそうです。有難うございました。

お礼日時:2002/06/24 21:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!