Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


18537 / 76737 ←次へ | 前へ→

【63641】Re:1日からの日付を表示したい
発言  ichinose  - 09/11/24(火) 6:56 -

引用なし
パスワード
   おはようございます。
その月の末日を求めたいなら、よろずやさんの方法で解決されるはずですが・・・。

かつこさんが投稿された下記のコードだって、正常に作動はします。

>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

繰り返しますが、末日を求めるならよろずやさんの方法が簡単だと思いますが、
今回は、それ以前に問題があるような気がしたので・・・。

0 hits

【63639】1日からの日付を表示したい かつこ 09/11/23(月) 21:19 質問
【63640】Re:1日からの日付を表示したい よろずや 09/11/23(月) 21:43 回答
【63641】Re:1日からの日付を表示したい ichinose 09/11/24(火) 6:56 発言

18537 / 76737 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free