|
おはようございます。
その月の末日を求めたいなら、よろずやさんの方法で解決されるはずですが・・・。
かつこさんが投稿された下記のコードだって、正常に作動はします。
>Public Function MonthLastDay(yy As Integer, mm As Integer) As Integer
> Dim i As Integer
> Dim tdate As Date
>
> tdate = Format(yy & "/" & mm & "/1", "yyyy/mm/dd")
> i = 28
> Do
> i = i + 1
> Loop Until Day(tdate + i - 1) = 1
> MonthLastDay = i - 1
>End Function
Sub test()
Dim mm As Integer
Dim yy As Integer
For yy = 8 To 9
For mm = 1 To 12
Debug.Print yy & "年" & mm & "月の末尾は、" & MonthLastDay(yy, mm) & " 日です"
Next
Next
End Sub
上記のtestを実行すると、イミディエイトウインドーに正常な結果が表示されます。
(VBEにて、Ctrl+Gキーで、イミディエイトウインドーが表示されます)
問題は、
>開始セル位置(B2)、年月(2009.12)が入力してあります。
ここですか?
このセルB2に入力されている内容から、年と月を取り出すことができない
ということでしょうか?
Sub test1()
Dim dd As Variant
dd = Split(Range("b2").Text, ".")
MsgBox MonthLastDay(Mid(dd(0), 2, 2), dd(1))
End Sub
'====================================================================
Public Function MonthLastDay(ByVal yy As Integer, ByVal mm As Integer) As Integer
'上記のパラメータを ByVal (値渡し)にしました
> Dim i As Integer
> Dim tdate As Date
>
> tdate = Format(yy & "/" & mm & "/1", "yyyy/mm/dd")
> i = 28
> Do
> i = i + 1
> Loop Until Day(tdate + i - 1) = 1
> MonthLastDay = i - 1
>End Function
繰り返しますが、末日を求めるならよろずやさんの方法が簡単だと思いますが、
今回は、それ以前に問題があるような気がしたので・・・。
|
|