大家好,我们今日继续讲解VBA代码解决方案的第52讲内容,这讲的内容是利用VBA代码,如何获得当月的最后一天日期.在实际工作中经常需要根据给定的日期计算其所属月份的最后一天,此时怎么计算呢?
我们首先要讲解一下VBA中涉及到日期的知识点:
一:Year、Month和Day函数:这三个函数分别返回代表指定日期的年、月、日的整数,语法如下:Year(Date) Month(Date) Day(Date)
其中参数Date可以是任何能够表示日期的Variant、数值表达式、字符串表达式或它们的组合。
二:DateSerial函数:此函数返回包含指定的年、月、日的Variant (Date),语法如下:
DateSerial(year, month, day)
其中参数year、 month、day分别表示指定的年、月、日。
为了指定某个日期, DateSerial 函数中的每个参数的取值范围应该是可接受的,即日的取值范围应在1-31之间,而月的取值范围应在1-12之间。但是,当一个数值表达式表示某日之前或其后的年、月、日数时,也可以为每个使用这个数值表达式的参数指定相对日期。
本节要讲解的就是利用DateSerial函数求具体某具体月的最后一天的方法,其实,对于DateSerial函数而言,当任何一个参数的取值超出可接受的范围时,它会自动地在可接受的时间单位进行调整,本例中将day参数设置为0,这时被解释成month参数指定月的前一天,即表达式Month(Date) + 1指定的下一个月的前一天,也就是本月的最后一天。
思路有了,下面看我们的代码所示。
Sub MySerial()
Dim MyDateStr As Byte
MyDateStr = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
MsgBox "本月的最后一天是" & Month(Date) & "月" & MyDateStr & "号"
End Sub
代码解析:
上述的MySerial过程配合使用了4个VBA内置函数Year、Month、Day和DateSerial完成计算并使用消息框显示当月最后一天的日期。
a) 上面的Date为当前的具体日期。
b) Month(Date) + 1 表示当前月的下个月。
c) MyDateStr = Day(DateSerial(Year(Date), Month(Date) + 1, 0)) 表示当前月的下个月的前一天。
代码实测,首先看代码窗口:
看运行后返回的值:
为了看到Date值我们可以做如下截图的操作:当光标点到Date上是就会出现下面的提示:
今日内容回向:
1 利用VBA代码获得当前月的最后一天,思路是如何建立的?
2 如何获取某个变量的即时值?
欢迎大家到我的自媒体平台沟通交流:个人微信号“NZ9668”、头条号“VBA专家”、百家号“VBA与GO语言”、微信公众号“NZ_9668”、社群“VBA学习交流群”。
这一系列文章是根据我多年的工作经验编写的,也是一直在利用的工具,非常方便好用。现在分享出来,希望能对同样在职场打拼的朋友有些许的帮助,使你的工作更加高效、流畅。朋友们有问题请随时提出来,我们一起探讨学习。对数据分析有需要的公司、组织或个人可以直接联系我,及时为你提供专业的定制技术支持。
工作不是一切。工作是每个人安身立命、成长发展的基础。但你要知道工作是永远也做不完的,时间会抹去很多问题。多关注自己、家人和朋友,这些才是我们生活中更为重要的东西。