指定した年月の末日を求める
                                                         玄関へお回り下さい。
指定した年月の末日を求める           (055)
     テキストボックスに年月(”2002/2”) を入力するとその月の末日がラベルに表示される(オーソドックスなやり方)

使用例

Option Explicit   'SampleNo=055 WindowsXP VB6.0(SP5) 2002.05.13
Private Sub Command1_Click()
  Dim yy   As Integer
  Dim MM   As Integer
  Dim matubi As Integer
  '年を取り出している
  yy = Year(DateValue(Text1.Text))
  '月を取り出している
  MM = Month(DateValue(Text1.Text))
  If MM <> 2 Then '2月でない場合の処理
   Select Case MM
    Case 1, 3, 5, 7, 8, 10, 12
      matubi = 31
    Case 4, 6, 9, 11
      matubi = 30
    End Select
  Else
    If yy Mod 4 Then
    '4で割り切れなければうるう年でない
      matubi = 28
    ElseIf yy Mod 100 Then
    '4で割り切れ100で割り切れないとうるう年
      matubi = 29
    ElseIf yy Mod 400 Then
    '4で割り切れ400で割り切れないとうるう年でない
      matubi = 28
    Else
      matubi = 29
    End If
  End If
  Label2.Caption = "末日は " & matubi & " 日です"
End Sub

ゆう(U)さん投稿による簡単な方法
   Private Sub Command2_Click()
'指定月の翌月の1日の日付から1日を引くと指定月の末日となる
  Dim matubi As Integer
  matubi = Day(DateAdd("d", -1, DateAdd("m", 1, DateValue(Text1.Text))))
  Label2.Caption = "末日は " & matubi & " 日です"
End Sub
   うるう年を求める方法として IsDate 関数を使う方法もあるもともと IsDate関数は式が日付データかどうか判断する関数で日付データならTrueを返し日付データでなければFalseを返す。
それを利用して**年2月29日があれば日付データなければ日付データでない、すなわちうるう年でないと判断する。

使用例
Private Sub Command3_Click()
'指定年の2月29日があればうるう年
  If IsDate(Year(DateValue(Text1.Text)) & "/2/29") Then
    '日付型データと判断される(2月29日がある)
    Label2.Caption = "うるう年です"
  Else
    '日付型データで無いと判断される(2月29日は無い)
    Label2.Caption = "うるう年ではありません"
  End If
End Sub




2002/05/13