请问各位高手怎么定义这样一个函数~?

解决方案 »

  1.   

    从你要判断的日期中取出年份和月份
    再用这两个数字组成一个新的日期
    年 & 月 + 1 & "1日"
    再用这个新的日期 - 1
    从结果中取出日期,就是这个月的最后一天dim dtRQ as date
    dim dtRQ2 as date
    dtRQ = "要进行判断的日期"
    dtRQ2 = year(dtRQ) & "-" & month(dtRQ) +1 & "-01)
    msgbox "这个月的最后一天是:" & day(dtRQ2 -1 )
      

  2.   

    Private Sub Command1_Click()
        t = CheckDay(Int(Val(year.Text)), Int(Val(month.Text)))
        MsgBox t
    End Sub
    Private Function CheckDay(ByVal iYear As Integer, ByVal iDay As Integer)
        Select Case iDay
            Case 1, 3, 5, 7, 8, 10, 12
                CheckDay = 31
                Exit Function
            Case 4, 6, 9, 11
                CheckDay = 30
            Case 2
                If ((iYear Mod 4 = 0) And ((iYear Mod 100 <> 0) Or (iYear Mod 400 = 0))) Then
                    CheckDay = 28
                Else
                    CheckDay = 29
                End If
                Exit Function
            End Select
                
    End Function
      

  3.   

    Public Function DDR(MyDate as Date) As Date
     '转换成每月的最后一天
      DDR = DateSerial(Format(MyDate,"YYYY"), Format(MyDate,"MM") + 1, 1 - 1)   End Function
      

  4.   

    Private Sub Form_Load()
        Dim d1 As Date
        d1 = Format("1998-10-01")
        Debug.Print DatePart("D", DateAdd("D", -1, d1))
    End Sub
      

  5.   

    Option ExplicitPrivate Sub Command1_Click()
        MsgBox IsMonth(Text1.Text)
    End SubPrivate Function IsMonth(ByVal InDate As Date) As Integer
        Select Case Month(InDate)
            Case 1, 3, 5, 7, 8, 10, 12: IsMonth = 31
            Case 4, 6, 9, 11: IsMonth = 30
            Case 2: If Year(InDate) Mod 4 = 0 Then IsMonth = 29 Else IsMonth = 28
        End Select
        
    End FunctionPrivate Sub Form_Load()
        Text1.Text = Date
    End Sub
      

  6.   

    还有一种办法,总公就31,30,28三种情况,先从31开始用IsDate函数判断,自己看着办吧
      

  7.   

    xayzmb(行者) 的思路不错,但代码里对12月的判断有误,需要加个判断条件dim dtRQ as date
    dim dtRQ2 as date
    dtRQ = xxx '要进行判断的日期
    if month(dtRQ) = 12 then
       dtRQ2 = cdate(year(dtRQ) + 1 & "-01-01)")
    else
       dtRQ2 = cdate(year(dtRQ) & "-" & month(dtRQ) +1 & "-01")
    end if
    msgbox "这个月的最后一天是:" & day(dtRQ2 -1 )