vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)

各位办公朋粉丝友们,大家好,首先问下第一个问题:你们曾经在为Excel里批量添加顺序日期烦恼过吗?大家肯定会说,这还不容易,不就是用自动填充功能飞快地就可以实现,诚然,这种方法不错。接着,我要问第二个问题:能否用这种自动填充功能实现非周末时间(工作日)甚至是只填充一周中固定的几天的这种批量添加呢?可以想象,这种自动填充功能机会是无法实现的,如果我们再要求具备友好交互的起止日期界定之下的话,这种所谓的自动填充完全是无法实现的。

其实,这种问题,我早期帮过一个实验室的一个同事弄过,他当时提出要求批量将日期添加进一个Excel工作表的某列,但是不要周末日期。当时,我帮这位同事做到了,也算是懒人高效办公吧!

前两天,一个粉丝朋友私信我说能否快速在Excel中生成指定时间段非周末的详细日期,而且每个详细日期格式要是“xxxx年x月x日 星期x”的形式?这个问题和我那位同事曾经的问题如出一辙,只不过该粉丝的条件是“指定的时间段非周末”。鉴于这个问题估计对于我们的办公朋友具有一定的共性,我准备出这一期头条作品好好跟大家分享下实现的过程。

在这里,我首先得声明,实现过程全部是通过我们office高级办公的强大VBA后台技术的支撑,这也少不了后台的编程代码。大家不要紧张,我的代码后几乎都附有可读性极强的注释,相信大家都能看懂,同时也能清晰地显示程序流程框架。

我们为了填充非周末日期,我们必须得事前了解星期一~星期日在一个星期中的唯一的标识ID序号情况。

一、一周中的星期几序号情况

事实上,我们每一个日期都会自动定位到一个星期的星期几,这个我们可以用函数轻易地知晓。但是,要说星期一~星期日在一周的序号的话,很多人都会不自觉地说是“星期一~星期日在一周”的序号对应分别是“1~7”,真的是这样吗?非也,正确是“星期日、星期一~星期五、星期六”在一周的对应序号才是“1~7”,这一点我们也可以从我后面的代码中运用的函数看到这些结果。

二、简单的前端界面设计

为了交互的友好性,我们增设了一个表单按钮控件用于调出日期时间段参数输入对话框,便于友好交互操作。界面如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(1)

图1 非周末日期批量填充简单的前端界面

三、程序运行效果测试

(一)点击前端按钮<自动填充非周末日期>,弹出输入起始日期参数对话框。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(2)

图2 弹出的起始日期参数输入对话框

(二)如果直接点击对话框的<x>或<取消>按钮,都将弹出取消操作的提示。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(3)

图3 取消输入起始日期的参数操作提示

(三)如果输入错误的日期格式内容,也警告提示起始日期参数输入的内容非法。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(4)

图4 输入错误日期格式或内容的提示

(四)当输入正确的起始日期参数后,点击<确定>按钮后,将继续弹出输入结束日期的输入对话框。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(5)

图5 起始日期输入后弹出输入结束日期对话框

(五)同样,如果点击结束日期参数输入对话框的<x>或<取消>按钮,则同样弹出取消输入结束日期参数的操作提示。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(6)

图6 取消输入结束日期的参数操作提示

(六)如果输入错误的结束日期格式内容,也警告提示结束日期参数输入的内容非法。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(7)

图7 输入错误的结束日期格式或内容的提示

(七)当输入正确的结束日期参数后,点击<确定>按钮后,将继续弹出添加日期的在工作表中起始行输入对话框。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(8)

图8 结束日期输入后弹出工作表中添加日期起始行输入对话框

(八)日期在工作表中载入的起始行输入对话框中点击了<x>或<取消>按钮,则同样弹出取消输入日期载入的起始行参数的操作提示。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(9)

图9 取消输入载入日期的起始行参数操作提示

(九)如果输入错误的载入日期起始行数值的格式内容,也警告提示日期起始行参数输入的内容非法。如下图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(10)

图10 输入错误的载入日期起始行数值参数格式或内容的提示

(十)当输入正确的载入日期起始行数值参数后,点击<确定>按钮后,将立即看到指定时间段的详细日期在规定的起始行批量载入的情况。如下系列图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(11)

图11完美呈现指定时间段详细日期的批量添加一部分

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(12)

图12完美呈现指定时间段详细日期的批量添加二部份

以上是后台的VBA程序的运行测试体验结果,现在我们正式来分享支撑这些完美运行效果的后台技术代码,纯干货的无私分享哦,请大家耐心往下看。

四、非周末日期批量添加的VBA后台代码

代码我们以截图的形式截图给各位。如下系列截图所示

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(13)

图13 后台代码截图1图13 后台代码截图1

vba快速填充时间按钮(用VBA后台自动填充非周末带星期的日期效果真棒)(14)

图14 后台代码截图2

好了,我们的分享就到这里。这里的要点一是搞清楚一周的星期几具体的唯一标识 ID序号情况;要点二是利用VBA的Inputbox输入对话框输入值判定一些非法、例外情况;要点三是利用日期差函数求得时间段有多少天,再用循环结构每次的下一个日期都等于最起始的日期 循环变量-循环的起始值;要点四是根据当前日期求得的星期定位出的星期ID序号确定要填充哪些日期才是非周末的。这四个要点从上面的代码中可以完美诠释到,望各位粉丝朋友掌握!

最后,还是那句老话,非常感谢各位粉丝朋友的长期关注(头条号:跟我学Office高级办公)、推广和对作品的点评!疫情快过去了,2021年的春天来了,天气回暖了了,大家还是要多多注意身体健康预防感冒哦,与此同时,也请多多关注我的Office高级办公有实用意义的后续原创作品哦!谢谢!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页