乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美-excel文本框

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美-excel文本框

作者:乔山办公网日期:

返回目录:excel表格制作

Excel VBA之函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

前景提要

昨天我们分享了时间/日期的函数,time和date,能够成功的帮助我们自动生成当前的时间和日期,在一些工作场景中,比方说后期数据整理,录入等方面都有不小的帮助,不过有一些朋友问我,他们很多时候并不能做到及时录入数据的,比方说很多店铺都是在下班或者是快要下班的时候,才会去整理数据的,而这个时候如果按照我们昨天的方式来录入的话,日期应该没问题,但是时间就可能有很大的问题了,登记表格的时候都是录入这个动作发生的时间,并非时间订单销售的时候,如果后期用这份数据来分析市场的话,可能会得出一个销售高峰在下班前半个钟这样的一个错误数据,那么这样的错误要如何避免呢?

最好的方法就是我们在录入数据的时候,手工录入销售的时间,不过手工录入的话,就牵扯到另外一个问题,日期可能会出现格式不同的情况,时间更加麻烦,每次都要输入一个“:”,这样的话就无法实现高效录入的效果了,怎么办呢?别怕,我们今天继续完善下我们的代码,通过时间/日期生成器函数来实现自动搭配手工的方式来完善录入操作。

函数说明

今天我们重点介绍下两个函数,一个是日期生成器函数,DateSerial,你按照年月日这个顺序提供三个数据,它自动可以生成一个日期,这个函数还有一个很厉害的地方,它还可以自动计算正确的日期,比方说你输入2019,5,36,5月怎么都不可能有36天,那么这样输入会不错嘛?不会的,他会自动帮你调整到2019/6/5这样的日期,所以你也可以用来做日期之间的计算的。另外一个是时间生成器函数,TimeSerial,效果和上面的DateSerial是差不多的,你按照时分秒提供三个数据,他能够自动生成一个时间。好了,有了方法,我们来继续完善下我们之前的代码

上代码

我们今天还是利用我们昨天的表格,表格方面不做任何的变动,这样大家就能够相互比较前后两种方法的差异。

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

其实按照我们日常工作中的场景,数据录入一般都是集中在当天完成的,唯一可能不太准确的就是具体的时间,可能向我们前面说的,是集中某个时间段录入的,也有可能过了半个钟或者有空了才会去统计数据,录入数据的,所以自动生成时间可能并不太符合某些场景,今天我们为了一起分享下日期生成器函数的使用,所以默认时间、日期都需要手工录入这样子,方面我们学习这两个函数,实际工作中,大家可以根据自己的使用场景来选择自动、手动搭配来使用。

Sub test()
Dim num&, ShopName$
line:
num = Application.InputBox("请输入商品的序号", "输入准确的序号", , , , , , 3)
If num <> 0 Then
ShopName = Choose(num, "苹果手机", "vivo", "华为", "OPPO X27", "摩托罗拉", "红米 小辣椒XR", "百度音响5-5")
LastCol = Cells(Rows.Count, 6).End(xlUp).Row
Cells(LastCol + 1, 6) = ShopName
'Cells(LastCol + 1, 9) = Date
NewDate = Application.InputBox("请输入实际销售日期,用点隔开", "日期的输入", , , , , , 3)
YEAR1 = Split(NewDate, ".")(0)
MONTH1 = Split(NewDate, ".")(1)
DAY1 = Split(NewDate, ".")(2)
Cells(LastCol + 1, 9) = DateSerial(YEAR1, MONTH1, DAY1)
NewDate = Application.InputBox("请输入实际销售时间,用点隔开", "日期的输入", , , , , , 3)
'Cells(LastCol + 1, 9).Offset(0, 1) = Time
hour1 = Split(NewDate, ".")(0)
min1 = Split(NewDate, ".")(1)
senc1 = Split(NewDate, ".")(2)
Cells(LastCol + 1, 9).Offset(0, 1) = TimeSerial(hour1, min1, senc1)
GoTo line
End If
End Sub

效果如图:

程序依然是需要我们输入产品的序号,这是我们之前学习的快速录入的方法,这里我们选择5,然后继续执行,摩托罗拉已经被录入产品那一列了,之后会有一个弹窗,提示我们输入三个数字,代表年月日,并且用点隔开

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

这里我们随便输入2020.10.5,这里我们依然利用split()函数来拆分,得到年月日,并通过DateSerial生成一个最终的日期,2020/10/5

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

然后程序继续执行,这里还有一个输入框,提示我们输入时分秒,依然使用点隔开,我们输入19.20.20这样的三个数据,这里也是成功的生成了一个准确的时间

Excel VBA函数篇-3.6自动录入时间不精确?搭配时间生成器更完美

完美的达到了我们的要求。

代码解析

本次的代码依然没有太多的难点,基本上还是利用之前我们学过的inputbox输入框+split()拆分函数来实现交互的,之后我们就通过TimeSerial和DateSerial这两个函数得到我们想要得到的日期了,日常工作中,大家可以结合上次分享的代码内容一起搭配使用,一般日期都是可以自动录入的,因为基本上都是当天录入数据的嘛,而时间可能会有差异,这个时候就可以让时间实现手工录入,一样可以节省我们不少的工作时间。

总结

=======================================================

每一个程序的小脚本都是在不断的调试和测试中完善的,任何人在写代码的时候都没有办法考虑所有的场景和问题,只能通过后期不断的完善,这也是大家以后写代码的一个思路和方向,一次就写出符合所有使用场景得代码是不可能得,都需要经过后期不断得调试和更改得,在后期使用中,如果还有其他问题,大家也可以反馈出来,我们继续完善,争取让更多人得工作更加轻松。

=======================================================

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

因为基本上都是自学的,很多代码和知识都是来源于网络的,如果在分享的过程中,正好拿了某位大神的代码,请告诉我,我将标注代码来源出处,也方便大家学习分享,谢谢!

如果你有什么想要分享的,或者有什么想要知道的,都可以留言等方式告诉我,大家一起努力进步。

好了,明晚19:00,准时再见。

=============================历史相关文章==============================Excel VBA之函数篇-3.5时间录入无烦恼,产品分析更精确Excel VBA之函数篇-3.4简易的数据快速录入,再也不用砸键盘了Excel VBA之函数篇-3.3轻松转换英文大小写,英文输入无烦恼

相关阅读

  • 随机出题,Excel也能行-excel操作练习题

  • 乔山办公网excel表格制作
  • excel操作练习题,对于低年级的小学生来说,培养他们的口算能力是很重要的。当然,枯燥的练习很难引起他们的学习兴趣,当然最终的学习效果也不会好了。此时,我们不妨给他们制作
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网