每个月的月底

End of the month for every month

在 excel 的用户表单中,使用 vba,我需要找到 month.For 示例的结尾,我的开始日期是 01.01.2015,结束日期是自动 31.01.2015.I 尝试使用此代码:

Private Function dhLastDayInMonth(Optional dtmDate As Date = 0) As Date
    ' Return the last day in the specified month.

If dtmDate = 0 Then
        ' Did the caller pass in a date? If not, use
        ' the current date.
        dtmDate = Date
End If

dhLastDayInMonth = DateSerial(Year(dtmDate), _
     Month(dtmDate) + 1, 0)

End Function

但此代码仅限 returns 二月底。 例子: 开始 date:01.01.2015 我的代码 returns 28.02.2015 或开始日期:05.02.2015 我的代码 returns 28.02.2015

第二行代码是编辑文本框以插入结束日期

Private Sub txtEDate_Change()

If txtEDate.Text = "" Then
    MsgBox "You must enter a Date! "
    Exit Sub
End If

If txtEDate.TextLength = 2 Or txtEDate.TextLength = 5 Then
    txtEDate.Text = txtEDate.Text + "."
End If

If txtEDate.TextLength = 2 Or txtEDate.TextLength = 5 Then
txtEDate.Text = txtEDate.Text + "DD/MM/YYYY"
End If

txtEDate.Text = dhLastDayInMonth()

End Sub

您必须将年份和月份定义为 inputs 以获取月份中的最后一个日期:

Public Function LastDayInMonth(dIn As Date) As Date
    LastDayInMonth = DateSerial(Year(dIn), Month(dIn) + 1, 0)
End Function

将给出某个月的最后日期,但前提是 dIn 具有正确的值。

很明显你应该 MsgBox dtmDate 在你的 UDF 的顶部。