こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

Public Const 今年度 = "2008"
Public 月 As Long

Sub test()
月 = 3
MsgBox CDate(今年度 & "/" & 月 & "/31 ")
End Sub

なら3月の最終日を無理やり表示させられますが
4月なら30日、5月なら31日と変数を代入した場合もその月の最終日を表示させるにはどうすればいいのでしょうか?


・月は他のプロシージャーで代入しています。(今月と言う意味ではないです。)
・月はLong型よりdate型のほうがいいのでしょうか?
・たくさんのプロシージャーに今年度 を代入している為Public Constで宣言しています。ただこれのデータ型はどうなのでしょうか?
・エクセル2003です。

よろしくお願い致します。

投稿日時 - 2009-03-04 22:20:09

QNo.4768843

暇なときに回答ください

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

>月は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
'-------------------------------------------
 
 

投稿日時 - 2009-03-04 23:05:48

お礼

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

投稿日時 - 2009-03-06 20:13:27

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.5

もうすでに回答は出ているけど誰も説明していないのでw

もうお分かりかと思いますが、月の最終日を求めるにはその翌日の1日から1引いて求めるってことですよね。

投稿日時 - 2009-03-05 08:52:23

お礼

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

投稿日時 - 2009-03-06 20:14:45

ANo.4

色々考えられますが、元のコードを生かして

Public Const 今年度 As Integer = 2008
Public 月 As Integer

Sub test()
月 = 3
月 = 月 + 1 Mod 12
MsgBox CDate(今年度 & "/" & 月 & "/1") - 1
End Sub

>ただこれのデータ型はどうなのでしょうか?
一旦文字列の連結によって文字型にしますから、型はあまり気にする必要はないように思います。整数型でよいでしょう

投稿日時 - 2009-03-04 23:16:53

お礼

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

投稿日時 - 2009-03-06 20:14:12

ANo.3

Public Const 今年度 = "2008"
Public 月 As Integer

Sub test()
月 = 3
MsgBox DateSerial(今年度, 月 + 1, 0)
End Sub

ではいかがでしょう?

投稿日時 - 2009-03-04 23:12:24

お礼

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

投稿日時 - 2009-03-06 20:13:46

ANo.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
参考まで

投稿日時 - 2009-03-04 22:43:00

お礼

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

投稿日時 - 2009-03-06 20:13:02

あなたにオススメの質問