在excel 中有个工作表函数EOMONTH,可以返回指定日期的月所在最后一天的日期。
在vba中没有这样的函数,但是可以使用DateSerial函数变通的获取到任意月的最后一天的日期。
代码如下:
Sub QQ1722187970() Dim d1 As Date d1 = #12/25/2018# Dim d2 As Date d2 = VBA.DateSerial(Year(d1), Month(d1) + 1, 1) - 1 Debug.Print d2 End Sub
实现原理就是先获取下个月的第一天的日期,然后再减去1,返回上个月的最后一天的日期。
可以再加入跨年 if month=12 then year=year+1 month = 1 day=0