• ベストアンサー

月の最終日を取得する(月は変数が入る)

Public Const 今年度 = "2008" Public 月 As Long Sub test() 月 = 3 MsgBox CDate(今年度 & "/" & 月 & "/31 ") End Sub なら3月の最終日を無理やり表示させられますが 4月なら30日、5月なら31日と変数を代入した場合もその月の最終日を表示させるにはどうすればいいのでしょうか? ・月は他のプロシージャーで代入しています。(今月と言う意味ではないです。) ・月はLong型よりdate型のほうがいいのでしょうか? ・たくさんのプロシージャーに今年度 を代入している為Public Constで宣言しています。ただこれのデータ型はどうなのでしょうか? ・エクセル2003です。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

>月はLong型よりdate型のほうがいいのでしょうか? >Public Constで宣言しています。ただこれのデータ型は? 両方とも、Integerです。 年月日に変換した結果は、Date型になります。 サンプルをアップ。 '----------------------------------------- Public Const 今年度 As Integer = 2008 Public 月 As Integer '------------------------------------------ Sub Test()  Dim myDate As Date  月 = 2  myDate = DateSerial(今年度, 月 + 1, 0)  MsgBox myDate End Sub '-------------------------------------------    

noname#150498
質問者

お礼

Integer型にしてみました。ご回答ありがとうございます。

その他の回答 (4)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.5

もうすでに回答は出ているけど誰も説明していないのでw もうお分かりかと思いますが、月の最終日を求めるにはその翌日の1日から1引いて求めるってことですよね。

noname#150498
質問者

お礼

質問する前にもっと頭をやわらかくして考えるべきでしたね! ご回答ありがとうございます。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

色々考えられますが、元のコードを生かして Public Const 今年度 As Integer = 2008 Public 月 As Integer Sub test() 月 = 3 月 = 月 + 1 Mod 12 MsgBox CDate(今年度 & "/" & 月 & "/1") - 1 End Sub >ただこれのデータ型はどうなのでしょうか? 一旦文字列の連結によって文字型にしますから、型はあまり気にする必要はないように思います。整数型でよいでしょう

noname#150498
質問者

お礼

いろいろなやり方があることに感心します! ご回答ありがとうございます。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

Public Const 今年度 = "2008" Public 月 As Integer Sub test() 月 = 3 MsgBox DateSerial(今年度, 月 + 1, 0) End Sub ではいかがでしょう?

noname#150498
質問者

お礼

できました! ご回答ありがとうございます。

回答No.1

VBAは苦手なので、次の回答があるまでのつなぎですm(_ _)m Public Const 今年度 = "2008" Public 月 As Byte Sub test() Dim a 月 = 1 a = Cells(1, 1).Value Cells(1, 1).Formula = "=DATE(" & 今年度 & "," & 月 + 1 & ",0)" MsgBox Cells(1, 1).Value Cells(1, 1).Value = a End Sub 参考まで

noname#150498
質問者

お礼

ご回答ありがとうございます。