- ベストアンサー
月の最終日を取得する(月は変数が入る)
Public Const 今年度 = "2008" Public 月 As Long Sub test() 月 = 3 MsgBox CDate(今年度 & "/" & 月 & "/31 ") End Sub なら3月の最終日を無理やり表示させられますが 4月なら30日、5月なら31日と変数を代入した場合もその月の最終日を表示させるにはどうすればいいのでしょうか? ・月は他のプロシージャーで代入しています。(今月と言う意味ではないです。) ・月はLong型よりdate型のほうがいいのでしょうか? ・たくさんのプロシージャーに今年度 を代入している為Public Constで宣言しています。ただこれのデータ型はどうなのでしょうか? ・エクセル2003です。 よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>月は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 '-------------------------------------------
その他の回答 (4)
- web2525
- ベストアンサー率42% (1219/2850)
もうすでに回答は出ているけど誰も説明していないのでw もうお分かりかと思いますが、月の最終日を求めるにはその翌日の1日から1引いて求めるってことですよね。
お礼
質問する前にもっと頭をやわらかくして考えるべきでしたね! ご回答ありがとうございます。
- zap35
- ベストアンサー率44% (1383/3079)
色々考えられますが、元のコードを生かして Public Const 今年度 As Integer = 2008 Public 月 As Integer Sub test() 月 = 3 月 = 月 + 1 Mod 12 MsgBox CDate(今年度 & "/" & 月 & "/1") - 1 End Sub >ただこれのデータ型はどうなのでしょうか? 一旦文字列の連結によって文字型にしますから、型はあまり気にする必要はないように思います。整数型でよいでしょう
お礼
いろいろなやり方があることに感心します! ご回答ありがとうございます。
- merlionXX
- ベストアンサー率48% (1930/4007)
Public Const 今年度 = "2008" Public 月 As Integer Sub test() 月 = 3 MsgBox DateSerial(今年度, 月 + 1, 0) End Sub ではいかがでしょう?
お礼
できました! ご回答ありがとうございます。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
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 参考まで
お礼
ご回答ありがとうございます。
お礼
Integer型にしてみました。ご回答ありがとうございます。